本文整理汇总了PHP中kFile::fullMkdir方法的典型用法代码示例。如果您正苦于以下问题:PHP kFile::fullMkdir方法的具体用法?PHP kFile::fullMkdir怎么用?PHP kFile::fullMkdir使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kFile
的用法示例。
在下文中一共展示了kFile::fullMkdir方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: uploadFileByToken
public static function uploadFileByToken($file_data, $token, $filename, $extra_id = null, $create_thumb = false)
{
KalturaLog::log("Trace while uploading1 [{$filename}] [{$token}] [{$extra_id}] " . print_r($file_data, true));
$origFilename = @$file_data['name'];
if (!$origFilename) {
KalturaLog::log("Error while uploading, file does not have a name. [{$filename}] [{$token}] [{$extra_id}] " . print_r($file_data, true) . "\nerror: [" . @$file_data["error"] . "]");
return;
}
$parts = pathinfo($origFilename);
$extension = @strtolower($parts['extension']);
/*
$filename = $token .'_'. $filename;
// add the file extension after the "." character
$fullPath = myContentStorage::getFSUploadsPath().$filename . ( $extra_id ? "_" . $extra_id : "" ) .".".$extension;
*/
list($fullPath, $fullUrl) = self::getUploadPathAndUrl($token, $filename, $extra_id, $extension);
KalturaLog::log("Trace while uploading2 [{$filename}] [{$token}] [{$extra_id}] " . print_r($file_data, true) . "\n->[{$fullPath}]");
// start tracking what will hopefully become an entry
$te = new TrackEntry();
$te->setTrackEventTypeId(TrackEntry::TRACK_ENTRY_EVENT_TYPE_UPLOADED_FILE);
$te->setParam1Str($token);
$te->setParam2Str($filename);
$te->setParam3Str($fullPath);
$te->setDescription(__METHOD__ . ":" . __LINE__);
TrackEntry::addTrackEntry($te);
myContentStorage::fullMkdir($fullPath);
if (!move_uploaded_file($file_data['tmp_name'], $fullPath)) {
KalturaLog::log("Error while uploading [{$token}] [{$filename}] [{$extra_id}] [{$create_thumb}] " . print_r($file_data, true) . "\n->[{$fullPath}]");
$err = array("token" => $token, "filename" => $filename, "origFilename" => $origFilename, "error" => @$file_data["error"]);
KalturaLog::log("Error while uploading [{$token}] [{$filename}] [{$extra_id}] [{$create_thumb}] " . print_r($file_data, true) . "\n->[{$fullPath}]" . "\n" . print_r($err, true));
return $err;
}
chmod($fullPath, 0777);
$upload_server_header = isset($_SERVER["HTTP_X_KALTURA_SERVER"]) ? $_SERVER["HTTP_X_KALTURA_SERVER"] : null;
$thumb_created = false;
// if the file originated from a kaltura upload server we dont need a thumbnail (kuploader)
if ($create_thumb && !$upload_server_header) {
$thumbFullPath = self::getThumbnailPath($fullPath, ".jpg");
kFile::fullMkdir($thumbFullPath);
KalturaLog::log("Thumbnail full path [{$thumbFullPath}]");
if (myContentStorage::fileExtAccepted($extension)) {
KalturaLog::log("Generating image thumbnail");
myFileConverter::createImageThumbnail($fullPath, $thumbFullPath, "image2");
$thumb_url = self::getThumbnailPath($fullUrl, ".jpg");
$thumb_created = file_exists($thumbFullPath);
} elseif (myContentStorage::fileExtNeedConversion($extension)) {
KalturaLog::log("Generating media thumbnail");
myFileConverter::captureFrame($fullPath, $thumbFullPath, 1, "image2", -1, -1, 3);
if (!file_exists($thumbFullPath)) {
myFileConverter::captureFrame($fullPath, $thumbFullPath, 1, "image2", -1, -1, 0);
}
}
}
if (!$thumb_created) {
KalturaLog::log("Thumbnail not generated");
// in this case no thumbnail was created - don't extract false data
$thumb_url = "";
}
return array("token" => $token, "filename" => $filename, "origFilename" => $origFilename, "thumb_url" => $thumb_url, "thumb_created" => $thumb_created);
}
示例2: myFileIndicator
public function myFileIndicator($file_name)
{
if (!self::$s_indicator_path) {
self::$s_indicator_path = myContentStorage::getFSContentRootPath() . "/indicators/";
kFile::fullMkdir(self::$s_indicator_path . "dummy.txt");
}
$this->file_name = $file_name;
$this->pattern = "/" . $this->file_name . '\\..*/';
}
示例3: convert
public function convert(kConversionCommand $conv_cmd, kConversionResult $conv_result, $start_params_index = 0, $end_params_index = -1)
{
if (!file_exists($conv_cmd->source_file)) {
TRACE("File [{$conv_cmd->source_file} does not exist");
return array(false, 0);
}
// make sure all the output directories exist - if not create
kFile::fullMkdir($conv_cmd->target_file);
kFile::fullMkdir($conv_cmd->log_file);
self::fixConvParams($conv_cmd);
$conv_params_list = $conv_cmd->conversion_params_list;
if ($end_params_index == -1) {
$end_params_index = count($conv_params_list);
}
$start_i = max($start_params_index, 0);
$end_i = min($end_params_index, count($conv_params_list));
for ($i = $start_i; $i < $end_i; ++$i) {
$conv_res_info = new kConvResInfo();
$conv_res_info->engine = $this->getName();
$conv_res_info->index = $i;
$conv_params = @$conv_cmd->conversion_params_list[$i];
if ($conv_params) {
$conv_res_info->conv_params_name = $conv_params->name;
}
$log_file = $conv_cmd->getLogFileWithSuffix($i);
$conv_res_info->target = $conv_cmd->getTargetFileWithSuffix($i);
list($execution_command_str, $conversion_str) = $this->getExecutionCommandAndConversionString($conv_cmd, $i);
$conv_res_info->conv_str = $conversion_str;
// assume there always will be this index
self::logMediaInfo($conv_cmd->source_file);
self::addToLogFile($log_file, $execution_command_str);
self::addToLogFile($log_file, $conversion_str);
$return_value = "";
$conv_result->appendResult($this->getName() . ": " . $execution_command_str);
TRACE($execution_command_str);
$start = microtime(true);
exec($execution_command_str, $output, $return_value);
$end = microtime(true);
TRACE($this->getName() . ": [{$return_value}]");
// $return_value == 0 is success. if not - return the index of the failed conversion
$conv_result->appendResult($this->getName() . ": [{$return_value}]");
$conv_res_info->duration = $end - $start;
$conv_res_info->res = $return_value;
$conv_result->appendResInfo($conv_res_info);
if ($return_value != 0) {
return array(false, $i);
}
self::logMediaInfo($conv_cmd->getTargetFileWithSuffix($i));
}
return array(true, -1);
// indicate all was converted properly
}
示例4: executeImpl
/**
* Executes index action
*/
protected function executeImpl(kshow $kshow)
{
$this->xml_content = "";
$kshow_id = $this->kshow_id;
if ($kshow_id == NULL || $kshow_id == 0) {
return sfView::SUCCESS;
}
$metadata_creator = new myKshowMetadataCreator();
$this->show_metadata = $metadata_creator->createMetadata($kshow_id);
// $kshow = kshowPeer:retrieveByPK( $kshow_id );
$entry = entryPeer::retrieveByPK($kshow->getShowEntryId());
// TODO - this should never happen
if ($entry == NULL) {
// there is no show entry for this show !
$entry = $kshow->createEntry(entry::ENTRY_MEDIA_TYPE_SHOW, $kshow->getProducerId());
}
$content_path = myContentStorage::getFSContentRootPath();
$file_path = $content_path . $entry->getDataPath();
// check to see if the content of the file changed
$current_metadata = kFile::getFileContent($file_path);
$comp_result = strcmp($this->show_metadata, $current_metadata);
if ($comp_result != 0) {
$ext = pathinfo($file_path, PATHINFO_EXTENSION);
if ($ext != "xml") {
// this is for the first time - override the template path by setting the data to NULL
$entry->setData(NULL);
$file_path = pathinfo($file_path, PATHINFO_DIRNAME) . "/" . kFile::getFileNameNoExtension($file_path) . ".xml";
}
// this will increment the name if needed
$entry->setData($file_path);
$file_path = $content_path . $entry->getDataPath();
$entry->save();
kFile::fullMkdir($file_path);
kFile::setFileContent($file_path, $this->show_metadata);
$this->xml_content = $this->show_metadata;
}
}
示例5: execute
/**
* Will forward to the regular swf player according to the widget_id
*/
public function execute()
{
myDbHelper::$use_alternative_con = myDbHelper::DB_HELPER_CONN_PROPEL2;
requestUtils::handleConditionalGet();
ignore_user_abort();
$entry_id = $this->getRequestParameter("entry_id");
$widget_id = $this->getRequestParameter("widget_id", 0);
$upload_token_id = $this->getRequestParameter("upload_token_id");
$version = $this->getRequestParameter("version", null);
$width = $this->getRequestParameter("width", -1);
$height = $this->getRequestParameter("height", -1);
$type = $this->getRequestParameter("type", 1);
$crop_provider = $this->getRequestParameter("crop_provider", null);
$quality = $this->getRequestParameter("quality", 0);
$src_x = $this->getRequestParameter("src_x", 0);
$src_y = $this->getRequestParameter("src_y", 0);
$src_w = $this->getRequestParameter("src_w", 0);
$src_h = $this->getRequestParameter("src_h", 0);
$vid_sec = $this->getRequestParameter("vid_sec", -1);
$vid_slice = $this->getRequestParameter("vid_slice", -1);
$vid_slices = $this->getRequestParameter("vid_slices", -1);
// actual width and height of image from which the src_* values were taken.
// these will be used to multiply the src_* parameters to make them relate to the original image size.
$rel_width = $this->getRequestParameter("rel_width", -1);
$rel_height = $this->getRequestParameter("rel_height", -1);
if ($width == -1 && $height == -1) {
$width = 120;
$height = 90;
} else {
if ($width == -1) {
// if only either width or height is missing reset them to zero, and convertImage will handle them
$width = 0;
} else {
if ($height == -1) {
$height = 0;
}
}
}
$bgcolor = $this->getRequestParameter("bgcolor", "ffffff");
if ($upload_token_id) {
$upload_token = UploadTokenPeer::retrieveByPK($upload_token_id);
if ($upload_token) {
$thumb_full_path = myContentStorage::getFSCacheRootPath() . myContentStorage::getGeneralEntityPath("uploadtokenthumb", $upload_token->getIntId(), $upload_token->getId(), $upload_token->getId() . ".jpg");
kFile::fullMkdir($thumb_full_path);
if (file_exists($upload_token->getUploadTempPath())) {
$src_full_path = $upload_token->getUploadTempPath();
$valid_image_types = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP, IMAGETYPE_WBMP);
$image_type = exif_imagetype($src_full_path);
if (!in_array($image_type, $valid_image_types)) {
// capture full frame
myFileConverter::captureFrame($src_full_path, $thumb_full_path, 1, "image2", -1, -1, 3);
if (!file_exists($thumb_full_path)) {
myFileConverter::captureFrame($src_full_path, $thumb_full_path, 1, "image2", -1, -1, 0);
}
$src_full_path = $thumb_full_path;
}
// and resize it
myFileConverter::convertImage($src_full_path, $thumb_full_path, $width, $height, $type, $bgcolor, true, $quality, $src_x, $src_y, $src_w, $src_h);
kFile::dumpFile($thumb_full_path);
}
}
}
$entry = entryPeer::retrieveByPKNoFilter($entry_id);
// multiply the passed $src_* values so that they will relate to the original image size, according to $src_display_*
if ($rel_width != -1) {
$widthRatio = $entry->getWidth() / $rel_width;
$src_x = $src_x * $widthRatio;
$src_w = $src_w * $widthRatio;
}
if ($rel_height != -1) {
$heightRatio = $entry->getHeight() / $rel_height;
$src_y = $src_y * $heightRatio;
$src_h = $src_h * $heightRatio;
}
if (!$entry) {
// get the widget
$widget = widgetPeer::retrieveByPK($widget_id);
if (!$widget) {
KExternalErrors::dieError(KExternalErrors::ENTRY_AND_WIDGET_NOT_FOUND);
}
// get the kshow
$kshow_id = $widget->getKshowId();
$kshow = kshowPeer::retrieveByPK($kshow_id);
if ($kshow) {
$entry_id = $kshow->getShowEntryId();
} else {
$entry_id = $widget->getEntryId();
}
$entry = entryPeer::retrieveByPKNoFilter($entry_id);
if (!$entry) {
KExternalErrors::dieError(KExternalErrors::ENTRY_NOT_FOUND);
}
}
$subType = entry::FILE_SYNC_ENTRY_SUB_TYPE_THUMB;
if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_IMAGE) {
$subType = entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA;
}
//.........这里部分代码省略.........
示例6: resizeEntryImage
public static function resizeEntryImage(entry $entry, $version, $width, $height, $type, $bgcolor = "ffffff", $crop_provider = null, $quality = 0, $src_x = 0, $src_y = 0, $src_w = 0, $src_h = 0, $vid_sec = -1, $vid_slice = 0, $vid_slices = -1, $orig_image_path = null)
{
$contentPath = myContentStorage::getFSContentRootPath();
$entry_status = $entry->getStatus();
$tempThumbName = $entry->getId() . "_{$width}_{$height}_{$type}_{$crop_provider}_{$bgcolor}_{$quality}_{$src_x}_{$src_y}_{$src_w}_{$src_h}_{$vid_sec}_{$vid_slice}_{$vid_slices}_{$entry_status}";
$entryThumbFilename = $entry->getThumbnail() ? $entry->getThumbnail() : "0.jpg";
if ($entry->getStatus() != entryStatus::READY || @$entryThumbFilename[0] == '&') {
$tempThumbName .= "_NOCACHE_";
}
// we remove the & from the template thumb otherwise getGeneralEntityPath will drop $tempThumbName from the final path
$entryThumbFilename = str_replace("&", "", $entryThumbFilename);
$basePath = myContentStorage::getGeneralEntityPath("entry/tempthumb", $entry->getIntId(), $tempThumbName, $entryThumbFilename, $version);
$tempThumbPath = $contentPath . $basePath;
$cachedTempThumbPath = myContentStorage::getFSCacheRootPath() . $basePath;
if (file_exists($cachedTempThumbPath)) {
header("X-Kaltura:cached-local-thumb-exists," . md5($cachedTempThumbPath));
return $cachedTempThumbPath;
}
if (file_exists($tempThumbPath)) {
header("X-Kaltura:cached-thumb-exists," . md5($tempThumbPath));
return $tempThumbPath;
}
if ($orig_image_path === null || !file_exists($orig_image_path)) {
$sub_type = $entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_IMAGE ? entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA : entry::FILE_SYNC_ENTRY_SUB_TYPE_THUMB;
$orig_image_key = $entry->getSyncKey($sub_type, $version);
$orig_image_path = kFileSyncUtils::getReadyLocalFilePathForKey($orig_image_key);
}
// remark added so ffmpeg will try to load the thumbnail from the original source
//if (!file_exists($orig_image_path))
// KExternalErrors::dieError(KExternalErrors::FILE_NOT_FOUND);
// check a request for animated thumbs without a concrete vid_slice
// in which case we'll create all the frames as one wide image
$multi = $vid_slice == -1 && $vid_slices != -1;
$count = $multi ? $vid_slices : 1;
$im = null;
if ($multi) {
$vid_slice = 0;
}
while ($count--) {
if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_VIDEO && ($vid_sec != -1 || $vid_slices != -1) || !file_exists($orig_image_path)) {
if ($vid_sec != -1) {
$calc_vid_sec = min($vid_sec, floor($entry->getLengthInMsecs() / 1000));
} else {
if ($vid_slices != -1) {
$calc_vid_sec = floor($entry->getLengthInMsecs() / $vid_slices * min($vid_slice, $vid_slices) / 1000);
} else {
if ($entry->getStatus() != entryStatus::READY && $entry->getLengthInMsecs() == 0) {
$calc_vid_sec = $entry->getPartner() && $entry->getPartner()->getDefThumbOffset() ? $entry->getPartner()->getDefThumbOffset() : 3;
} else {
$calc_vid_sec = $entry->getBestThumbOffset();
}
}
}
$capturedThumbName = $entry->getId() . "_sec_{$calc_vid_sec}";
$capturedThumbPath = $contentPath . myContentStorage::getGeneralEntityPath("entry/tempthumb", $entry->getIntId(), $capturedThumbName, $entry->getThumbnail(), $version);
$orig_image_path = $capturedThumbPath . "temp_1.jpg";
// if we already captured the frame at that second, dont recapture, just use the existing file
if (!file_exists($orig_image_path)) {
// creating the thumbnail is a very heavy operation
// prevent calling it in parallel for the same thubmnail for 5 minutes
$cache = new myCache("thumb-processing", 5 * 60);
// 5 minutes
$processing = $cache->get($orig_image_path);
if ($processing) {
KExternalErrors::dieError(KExternalErrors::PROCESSING_CAPTURE_THUMBNAIL);
}
$cache->put($orig_image_path, true);
$flavorAsset = flavorAssetPeer::retrieveOriginalReadyByEntryId($entry->getId());
if (is_null($flavorAsset) || !($flavorAsset->hasTag(flavorParams::TAG_MBR) || $flavorAsset->hasTag(flavorParams::TAG_WEB))) {
// try the best playable
$flavorAsset = flavorAssetPeer::retrieveHighestBitrateByEntryId($entry->getId());
}
if (is_null($flavorAsset)) {
// if no READY ORIGINAL entry is available, try to retreive a non-READY ORIGINAL entry
$flavorAsset = flavorAssetPeer::retreiveOriginalByEntryId($entry->getId());
}
if (is_null($flavorAsset)) {
KExternalErrors::dieError(KExternalErrors::FLAVOR_NOT_FOUND);
}
$flavorSyncKey = $flavorAsset->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET);
$entry_data_path = kFileSyncUtils::getReadyLocalFilePathForKey($flavorSyncKey);
if (!$entry_data_path) {
// since this is not really being processed on this server, and will probably cause redirect in thumbnailAction
// remove from cache so later requests will still get redirected and will not fail on PROCESSING_CAPTURE_THUMBNAIL
$cache->remove($orig_image_path);
throw new kFileSyncException('no ready filesync on current DC', kFileSyncException::FILE_DOES_NOT_EXIST_ON_CURRENT_DC);
}
myFileConverter::autoCaptureFrame($entry_data_path, $capturedThumbPath . "temp_", $calc_vid_sec, -1, -1);
$cache->remove($orig_image_path);
}
}
kFile::fullMkdir($tempThumbPath);
if ($crop_provider) {
$convertedImagePath = myFileConverter::convertImageUsingCropProvider($orig_image_path, $tempThumbPath, $width, $height, $type, $crop_provider, $bgcolor, true, $quality, $src_x, $src_y, $src_w, $src_h);
} else {
$convertedImagePath = myFileConverter::convertImage($orig_image_path, $tempThumbPath, $width, $height, $type, $bgcolor, true, $quality, $src_x, $src_y, $src_w, $src_h);
}
// die if resize operation failed
if ($convertedImagePath === null) {
KExternalErrors::dieError(KExternalErrors::IMAGE_RESIZE_FAILED);
//.........这里部分代码省略.........
示例7: getCachedContent
private function getCachedContent($kaltura_config, $confFilePath)
{
if (!file_exists($confFilePath)) {
return null;
}
if (strpos($confFilePath, "://") != FALSE) {
// remote file (http:// or ftp://) - store the cache in a directory near the base file
//$cache_path = dirname( $kaltura_config ) . "cache/" . $confFilePath . "_cache.xml" ;
// for now - don't cache for remote files
$cache_path = null;
} else {
// this is a local file - store the cache file in the same directory
$cache_path = str_replace("/uiconf/", "/cacheuiconf/", $confFilePath) . "_cache.xml";
kFile::fullMkdir($cache_path);
}
try {
$s_time = microtime(true);
$config = new kXmlConfig($kaltura_config, $confFilePath);
$content = $config->getConfig($cache_path);
$e_time = microtime(true);
if ($config->createdCache()) {
KalturaLog::log(__METHOD__ . " created config cache file [{$kaltura_config}]+[{$confFilePath}]->[{$cache_path}].\ntook [" . ($e_time - $s_time) . "] seconds");
}
return $content;
} catch (Exception $ex) {
KalturaLog::log(__METHOD__ . " Error creating config [{$kaltura_config}]+[{$confFilePath}]:" . $ex->getMessage());
return null;
}
}
示例8: resizeEntryImage
//.........这里部分代码省略.........
$processing = $cache->get($orig_image_path);
if ($processing) {
KExternalErrors::dieError(KExternalErrors::PROCESSING_CAPTURE_THUMBNAIL);
}
$cache->put($orig_image_path, true);
$flavorAsset = assetPeer::retrieveHighestBitrateByEntryId($entry->getId(), flavorParams::TAG_THUMBSOURCE);
if (is_null($flavorAsset)) {
$flavorAsset = assetPeer::retrieveOriginalReadyByEntryId($entry->getId());
if ($flavorAsset) {
$flavorSyncKey = $flavorAsset->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET);
list($fileSync, $local) = kFileSyncUtils::getReadyFileSyncForKey($flavorSyncKey, false, false);
if (!$fileSync) {
$flavorAsset = null;
}
}
if (is_null($flavorAsset) || !($flavorAsset->hasTag(flavorParams::TAG_MBR) || $flavorAsset->hasTag(flavorParams::TAG_WEB))) {
// try the best playable
$flavorAsset = assetPeer::retrieveHighestBitrateByEntryId($entry->getId(), null, flavorParams::TAG_SAVE_SOURCE);
}
if (is_null($flavorAsset)) {
// if no READY ORIGINAL entry is available, try to retrieve a non-READY ORIGINAL entry
$flavorAsset = assetPeer::retrieveOriginalByEntryId($entry->getId());
}
}
if (is_null($flavorAsset)) {
// if no READY ORIGINAL entry is available, try to retrieve a non-READY ORIGINAL entry
$flavorAsset = assetPeer::retrieveOriginalByEntryId($entry->getId());
}
if (is_null($flavorAsset)) {
KExternalErrors::dieError(KExternalErrors::FLAVOR_NOT_FOUND);
}
$flavorSyncKey = $flavorAsset->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET);
$entry_data_path = kFileSyncUtils::getReadyLocalFilePathForKey($flavorSyncKey);
if (!$entry_data_path) {
// since this is not really being processed on this server, and will probably cause redirect in thumbnailAction
// remove from cache so later requests will still get redirected and will not fail on PROCESSING_CAPTURE_THUMBNAIL
$cache->remove($orig_image_path);
throw new kFileSyncException('no ready filesync on current DC', kFileSyncException::FILE_DOES_NOT_EXIST_ON_CURRENT_DC);
}
// close db connections as we won't be requiring the database anymore and capturing a thumbnail may take a long time
kFile::closeDbConnections();
myFileConverter::autoCaptureFrame($entry_data_path, $capturedThumbPath . "temp_", $calc_vid_sec, -1, -1);
$cache->remove($orig_image_path);
}
}
// close db connections as we won't be requiring the database anymore and image manipulation may take a long time
kFile::closeDbConnections();
// limit creation of more than XX Imagemagick processes
if (kConf::hasParam("resize_thumb_max_processes_imagemagick") && trim(exec("ps -e -ocmd|awk '{print \$1}'|grep -c " . kConf::get("bin_path_imagemagick"))) > kConf::get("resize_thumb_max_processes_imagemagick")) {
KExternalErrors::dieError(KExternalErrors::TOO_MANY_PROCESSES);
}
// resizing (and editing)) an image file that failes results in a long server waiting time
// prevent this waiting time (of future requests) in case the resizeing failes
$cache = new myCache("thumb-processing-resize", 5 * 60);
// 5 minutes
$processing = $cache->get($orig_image_path);
if ($processing) {
KExternalErrors::dieError(KExternalErrors::PROCESSING_CAPTURE_THUMBNAIL);
}
kFile::fullMkdir($processingThumbPath);
if ($crop_provider) {
$convertedImagePath = myFileConverter::convertImageUsingCropProvider($orig_image_path, $processingThumbPath, $width, $height, $type, $crop_provider, $bgcolor, true, $quality, $src_x, $src_y, $src_w, $src_h, $density, $stripProfiles);
} else {
if (!file_exists($orig_image_path) || !filesize($orig_image_path)) {
KExternalErrors::dieError(KExternalErrors::IMAGE_RESIZE_FAILED);
}
$imageSizeArray = getimagesize($orig_image_path);
if ($thumbParams->getSupportAnimatedThumbnail() && is_array($imageSizeArray) && $imageSizeArray[2] === IMAGETYPE_GIF) {
$processingThumbPath = kFile::replaceExt($processingThumbPath, "gif");
$finalThumbPath = kFile::replaceExt($finalThumbPath, "gif");
}
$convertedImagePath = myFileConverter::convertImage($orig_image_path, $processingThumbPath, $width, $height, $type, $bgcolor, true, $quality, $src_x, $src_y, $src_w, $src_h, $density, $stripProfiles, $thumbParams, $format);
}
// die if resize operation failed and add failed resizing to cache
if ($convertedImagePath === null || !@filesize($convertedImagePath)) {
$cache->put($orig_image_path, true);
KExternalErrors::dieError(KExternalErrors::IMAGE_RESIZE_FAILED);
}
// if resizing secceded remove from cache of failed resizing
if ($cache->get($orig_image_path)) {
$cache->remove($orig_image_path, true);
}
if ($multi) {
list($w, $h, $type, $attr, $srcIm) = myFileConverter::createImageByFile($processingThumbPath);
if (!$im) {
$im = imagecreatetruecolor($w * $vid_slices, $h);
}
imagecopy($im, $srcIm, $w * $vid_slice, 0, 0, 0, $w, $h);
imagedestroy($srcIm);
++$vid_slice;
}
}
if ($multi) {
imagejpeg($im, $processingThumbPath);
imagedestroy($im);
}
kFile::fullMkdir($finalThumbPath);
kFile::moveFile($processingThumbPath, $finalThumbPath);
return $finalThumbPath;
}
示例9: createFilePath
public static function createFilePath($base_path, $file_name)
{
$id = self::getEntryIdFromFileName($file_name);
// create a new path with the file name
$entry = entryPeer::retrieveByPK($id);
if ($entry) {
KalturaLog::debug("Found entry for file_name [{$file_name}] -> entry_id [{$id}]");
$int_id = $entry->getIntId();
$path_name = myContentStorage::dirForId($int_id, $id) . "." . pathinfo($file_name, PATHINFO_EXTENSION);
} else {
KalturaLog::debug("Did NOT find entry for file_name [{$file_name}] -> entry_id [{$id}]");
$path_name = "AZ/" . pathinfo($file_name, PATHINFO_BASENAME);
}
// make sure the separator exists between the 2 paths
// if ( ! kString::endsWith( $base_path , "/" ) ) $base_path .= "/";
kFile::fullMkdir($base_path . "/" . $path_name);
return $base_path . "/" . $path_name;
}
开发者ID:EfncoPlugins,项目名称:Media-Management-based-on-Kaltura,代码行数:18,代码来源:kConversionClientBase.class.php
示例10: getCachePath
/**
* @return string
*/
protected static function getCachePath()
{
$path = kEnvironment::get("cache_root_path") . DIRECTORY_SEPARATOR . 'batch';
if (!file_exists($path)) {
kFile::fullMkdir($path);
}
return $path;
}
示例11: execute
//.........这里部分代码省略.........
}
if (version_compare($uiConf->getSwfUrlVersion(), "3.0", ">=")) {
$kdp3 = true;
// further in the code, $wrapper_swf is being used and not $base_wrapper_swf
$wrapper_swf = $base_wrapper_swf = myContentStorage::getFSFlashRootPath() . '/kdp3wrapper/' . kConf::get('kdp3_wrapper_version') . '/kdp3wrapper.swf';
$widgetIdStr = "widgetId={$widget_id}";
$uiconf_id_str = "&uiConfId={$uiconf_id}";
$partnerIdStr = "partnerId={$partner_id}&subpId={$subp_id}";
}
// if we are loaded without a wrapper (directly in flex)
// 1. dont create the ks - keep url the same for caching
// 2. dont patch the uiconf - patching is done only to wrapper anyway
if ($nowrapper) {
$dynamic_date = $widgetIdStr . "&host=" . str_replace("http://", "", str_replace("https://", "", $partner_host)) . "&cdnHost=" . str_replace("http://", "", str_replace("https://", "", $partner_cdnHost)) . $uiconf_id_str . $conf_vars;
$url = "{$swf_url}?{$dynamic_date}";
} else {
// if kdp version >= 2.5
if (version_compare($uiConf->getSwfUrlVersion(), "2.5", ">=")) {
// create an anonymous session
$ks = "";
$result = kSessionUtils::createKSessionNoValidations($partner_id, 0, $ks, 86400, false, "", "view:*");
$ks_flashvars = "&{$partnerIdStr}&uid=0&ts=" . microtime(true);
if ($widget->getSecurityType() != widget::WIDGET_SECURITY_TYPE_FORCE_KS) {
$ks_flashvars = "&ks={$ks}" . $ks_flashvars;
}
// patch kdpwrapper with getwidget and getuiconf
$root = myContentStorage::getFSContentRootPath();
$confFile_mtime = $uiConf->getUpdatedAt(null);
$new_swf_path = "widget_{$widget_id}_{$widget_type}_{$confFile_mtime}_" . md5($base_wrapper_swf . $swf_url) . ".swf";
$md5 = md5($new_swf_path);
$new_swf_path = "content/cacheswf/" . substr($md5, 0, 2) . "/" . substr($md5, 2, 2) . "/" . $new_swf_path;
$cached_swf = "{$root}/{$new_swf_path}";
if (!file_exists($cached_swf) || filemtime($cached_swf) < $confFile_mtime) {
kFile::fullMkdir($cached_swf);
require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . "api_v3" . DIRECTORY_SEPARATOR . "bootstrap.php";
$dispatcher = KalturaDispatcher::getInstance();
try {
$widget_result = $dispatcher->dispatch("widget", "get", array("ks" => $ks, "id" => $widget_id));
$ui_conf_result = $dispatcher->dispatch("uiConf", "get", array("ks" => $ks, "id" => $widget_type));
} catch (Exception $ex) {
die;
}
$serializer = new KalturaXmlSerializer(false);
$serializer->serialize($widget_result);
$widget_xml = $serializer->getSerializedData();
$serializer = new KalturaXmlSerializer(false);
$serializer->serialize($ui_conf_result);
$ui_conf_xml = $serializer->getSerializedData();
$patcher = new kPatchSwf($root . $base_wrapper_swf);
$result = "<xml><result>{$widget_xml}</result><result>{$ui_conf_xml}</result></xml>";
$patcher->patch($result, $cached_swf);
}
if (file_exists($cached_swf)) {
$wrapper_swf = $new_swf_path;
}
}
$kdp_version_2 = strpos($swf_url, "kdp/v2.") > 0;
if ($partner_host == "http://www.kaltura.com" && !$kdp_version_2 && !$kdp3) {
$partner_host = 1;
// otherwise the kdp will try going to cdnwww.kaltura.com
}
$track_wrapper = '';
if (kConf::get('track_kdpwrapper') && kConf::get('kdpwrapper_track_url')) {
$track_wrapper = "&wrapper_tracker_url=" . urlencode(kConf::get('kdpwrapper_track_url') . "?activation_key=" . kConf::get('kaltura_activation_key') . "&package_version=" . kConf::get('kaltura_version'));
}
$dynamic_date = $widgetIdStr . $track_wrapper . "&kdpUrl=" . urlencode($swf_url) . "&host=" . str_replace("http://", "", str_replace("https://", "", $partner_host)) . "&cdnHost=" . str_replace("http://", "", str_replace("https://", "", $partner_cdnHost)) . ($show_version ? "&entryVersion={$show_version}" : "") . ($kshow_id ? "&kshowId={$kshow_id}" : "") . ($entry_id ? "&entryId={$entry_id}" : "") . $uiconf_id_str . $ks_flashvars . ($cache_st ? "&clientTag=cache_st:{$cache_st}" : "") . $conf_vars;
示例12: array_shift
$schemaXmlPath = $value;
}
array_shift($argv);
}
//pass the name of the generator as the first argument of the command line to
//generate a single library. if this argument is empty or 'all', generator will create all libs.
$generateSingle = isset($argv[1]) ? $argv[1] : null;
//second command line argument specifies the output path, if not specified will default to
//<content root>/content/clientlibs
if (isset($argv[2])) {
$outputPathBase = $argv[2];
} else {
$root = myContentStorage::getFSContentRootPath();
$outputPathBase = "{$root}/content/clientlibs";
}
kFile::fullMkdir($outputPathBase);
//pull the generator config ini
$config = new Zend_Config_Ini(__DIR__ . '/../configurations/generator.ini', null, array('allowModifications' => true));
$config = KalturaPluginManager::mergeConfigs($config, 'generator', false);
$libsToGenerate = null;
if (strtolower($generateSingle) == 'all') {
$generateSingle = null;
} elseif (!$generateSingle) {
$libsToGenerate = file(__DIR__ . '/../configurations/generator.defaults.ini');
foreach ($libsToGenerate as $key => &$default) {
$default = strtolower(trim($default, " \t\r\n"));
}
}
//if we got specific generator request, tes if this requested generator does exist
if ($generateSingle != null) {
$libsToGenerate = array_map('strtolower', array_intersect(explode(',', $generateSingle), array_keys($config->toArray())));
示例13: fullMkdir
protected static function fullMkdir($filePath)
{
$filePath = str_replace(array('/', '\\'), array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR), $filePath);
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
return kFile::fullMkdir($filePath, 0770);
}
$contentGroup = kConf::get('content_group');
if (is_numeric($contentGroup)) {
$contentGroup = intval($contentGroup);
}
$dirs = explode(DIRECTORY_SEPARATOR, dirname($filePath));
$path = '';
foreach ($dirs as $dir) {
$path .= DIRECTORY_SEPARATOR . $dir;
if (is_dir($path)) {
continue;
}
if (!kFile::fullMkfileDir($path, 0770)) {
return false;
}
chgrp($path, $contentGroup);
}
return true;
}
示例14: getTemplateDir
public static function getTemplateDir()
{
$dir = myContentStorage::getFSContentRootPath() . "/email_templates/";
kFile::fullMkdir($dir);
return $dir;
}
示例15: execute
//.........这里部分代码省略.........
$clipFrom = $this->getRequestParameter("clipFrom", 0);
// milliseconds
if (is_null($clipTo)) {
$clipTo = $this->getRequestParameter("clipTo", self::NO_CLIP_TO);
}
// milliseconds
if ($clipTo == 0) {
$clipTo = self::NO_CLIP_TO;
}
if (!is_numeric($clipTo) || $clipTo < 0) {
KExternalErrors::dieError(KExternalErrors::BAD_QUERY, 'clipTo must be a positive number');
}
$seekFrom = $this->getRequestParameter("seekFrom", -1);
if ($seekFrom <= 0) {
$seekFrom = -1;
}
$seekFromBytes = $this->getRequestParameter("seekFromBytes", -1);
if ($seekFromBytes <= 0) {
$seekFromBytes = -1;
}
if ($fileParam && is_dir($path)) {
$path .= "/{$fileParam}";
kFileUtils::dumpFile($path, null, null);
KExternalErrors::dieGracefully();
} else {
if (!$isFlv || $clipTo == self::NO_CLIP_TO && $seekFrom < 0 && $seekFromBytes < 0) {
$limit_file_size = 0;
if ($clipTo != self::NO_CLIP_TO) {
if (strtolower($flavorAsset->getFileExt()) == 'mp4' && PermissionPeer::isValidForPartner(PermissionName::FEATURE_ACCURATE_SERVE_CLIPPING, $flavorAsset->getPartnerId())) {
$contentPath = myContentStorage::getFSContentRootPath();
$tempClipName = $version . '_' . $clipTo . '.mp4';
$tempClipPath = $contentPath . myContentStorage::getGeneralEntityPath("entry/tempclip", $flavorAsset->getIntId(), $flavorAsset->getId(), $tempClipName);
if (!file_exists($tempClipPath)) {
kFile::fullMkdir($tempClipPath);
$clipToSec = round($clipTo / 1000, 3);
$cmdLine = kConf::get("bin_path_ffmpeg") . " -i {$path} -vcodec copy -acodec copy -f mp4 -t {$clipToSec} -y {$tempClipPath} 2>&1";
KalturaLog::log("Executing {$cmdLine}");
$output = array();
$return_value = "";
exec($cmdLine, $output, $return_value);
KalturaLog::log("ffmpeg returned {$return_value}, output:" . implode("\n", $output));
}
if (file_exists($tempClipPath)) {
KalturaLog::log("Dumping {$tempClipPath}");
kFileUtils::dumpFile($tempClipPath);
} else {
KalturaLog::err('Failed to clip the file using ffmpeg, falling back to rough clipping');
}
}
$mediaInfo = mediaInfoPeer::retrieveByFlavorAssetId($flavorAsset->getId());
if ($mediaInfo && ($mediaInfo->getVideoDuration() || $mediaInfo->getAudioDuration() || $mediaInfo->getContainerDuration())) {
$duration = $mediaInfo->getVideoDuration() ? $mediaInfo->getVideoDuration() : ($mediaInfo->getAudioDuration() ? $mediaInfo->getAudioDuration() : $mediaInfo->getContainerDuration());
$limit_file_size = floor(@kFile::fileSize($path) * ($clipTo / $duration) * 1.2);
}
}
$renderer = kFileUtils::getDumpFileRenderer($path, null, null, $limit_file_size);
if (!$fileName) {
$this->storeCache($renderer, $flavorAsset->getPartnerId());
}
$renderer->output();
KExternalErrors::dieGracefully();
}
}
$audioOnly = $this->getRequestParameter("audioOnly");
// milliseconds
if ($audioOnly === '0') {