/** * Generate a thumbnail from a video stream using the FFMpeg library. * * @param string $file * @param string $size * @param string $filename * @return boolean */ function process(&$medium, &$gallery) { //$file, $size, $filename) { zmgimport('org/.zoomfactory.lib.helpers.zmgFileHelper'); //$temp_dir = zmgEnv::getTempDir() . DS.substr(uniqid("zoom_"), 0, 13); //support filesystems which only support 14 char dirnames //if (zmgFileHelper::createDir($temp_dir, 0777)) { $thumb_file = ereg_replace("(.*)\\.([^\\.]*)\$", "\\1", $medium->filename) . ".jpg"; $thumb_path = str_replace($medium->filename, $thumb_file, $medium->getAbsPath()); //$temp_dir.DS.$thumb_file; $cmd = zmgVideoTool::getPath() . "ffmpeg -an -y -t 0:0:0.001 -i \"" . $medium->getAbsPath() . "\" -f mjpeg \"" . $thumb_path . "\""; $output = $retval = null; exec($cmd, $output, $retval); if ($retval || !zmgFileHelper::exists($thumb_path)) { return zmgToolboxPlugin::registerError($medium->filename, 'FFMpeg: Could not create thumbnail: ' . $output); } $thumb_obj = new zmgMedium(zmgDatabase::getDBO()); //temp obj $thumb_obj->filename = $thumb_file; $thumb_obj->setGalleryDir($medium->getGalleryDir()); $ret = true; zmgimport('org.zoomfactory.var.plugins.toolbox.tools.imageTool'); if (!zmgImageTool::process($thumb_obj, $gallery)) { $ret = false; } //clean up! zmgFileHelper::delete($thumb_path); return $ret; //} else { // return zmgToolboxPlugin::registerError($medium->filename, 'FFmpeg: Could not create temporary directory.'); //} }
function finalizeUpload($gid = 0) { //finish the SwfUpload sequence... if ($gid === 0) { return zmgToolboxPlugin::registerError(T_('Upload media'), T_('No valid gallery ID provided')); } $session =& zmgFactory::getSession(); $events =& zmgFactory::getEvents(); $config =& zmgFactory::getConfig(); $db =& zmgDatabase::getDBO(); $gallery = new zmgGallery($db); $gallery->load($gid); //now we got the gallery and its data, retrieve the uploaded media $media = $session->get('uploadtool.fancyfiles'); if (!is_array($media) || count($media) == 0) { return zmgToolboxPlugin::registerError(T_('Upload media'), T_('No media have been uploaded; nothing to do.')); } zmgimport('org.zoomfactory.lib.helpers.zmgFileHelper'); $src_path = ZMG_ABS_PATH . DS . "etc" . DS . "cache" . DS; $dest_path = zmgEnv::getRootPath() . DS . $config->get('filesystem/mediapath') . $gallery->dir . DS; foreach ($media as $medium) { $obj = new zmgMedium($db); $name = zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_upload_name', '')); $descr = zmgSQLEscape(zmgGetParam($_REQUEST, 'zmg_upload_descr', '')); $data = array('name' => $name, 'filename' => $medium, 'descr' => $descr, 'published' => 1, 'gid' => $gallery->gid); $obj->setGalleryDir($gallery->dir); //saves a SQL query later on... //do some additional validation of strings $data['name'] = $events->fire('onvalidate', $data['name']); if (!$data['name']) { $data['name'] = $name; } $data['descr'] = $events->fire('onvalidate', $data['descr']); if (!$data['descr']) { $data['descr'] = $descr; } if (!$obj->bind($data)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be saved') . ': ' . $obj->getError()); } else { if (!zmgFileHelper::copy($src_path . $medium, $dest_path . $medium)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Unable to copy file') . ' ' . $medium); } else { if (!zmgFileHelper::delete($src_path . $medium)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Unable to delete temporary file') . ' ' . $medium); } else { if (!zmgToolboxPlugin::processMedium($obj, $gallery)) { zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be processed') . ' ' . $medium); } else { if (!$obj->store()) { //now save this medium in our DB zmgToolboxPlugin::registerError(T_('Upload media'), T_('Medium could not be saved') . ': ' . $obj->getError()); } } } } } //delete medium from session data: fourth parameter as TRUE $session->update('uploadtool.fancyfiles', $medium, ZMG_DATATYPE_ARRAY, true); } zmgToolboxPlugin::throwErrors(); }
/** * remove a gallery completely including sub-directories. * @param string $path * @return boolean */ function deleteDir($path) { // Sanity check if (!$path) { // Bad programmer! Bad Bad programmer! zmgError::throwError('zmgFileHelper: ' . _('Attempt to delete base directory')); return false; } $res = true; $current_dir = opendir($path); while ($entryname = readdir($current_dir)) { if (is_dir($path . DS . $entryname) && ($entryname != "." && $entryname != "..")) { $res = zmgFileHelper::deleteDir($path . DS . $entryname); } else { if ($entryname != "." && $entryname != "..") { $res = zmgFileHelper::delete($path . DS . $entryname); } } } closedir($current_dir); if (zmgFactory::getConfig()->get('plugins/safemode/general/enable') == 1) { $res = zmgFactory::getEvents()->fire('ondirdelete', $path); } else { $res = rmdir($path); } return $res; }