/**
  * 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 processMedium(&$medium, &$gallery)
 {
     $mime = $medium->getMimeType();
     zmgimport('org.zoomfactory.lib.mime.zmgMimeHelper');
     $ok = true;
     if (zmgMimeHelper::isImage($mime, true)) {
         zmgimport('org.zoomfactory.var.plugins.toolbox.tools.imageTool');
         $ok = zmgImageTool::process($medium, $gallery);
         if (!$ok) {
             zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Could not create thumbnail of image file'));
             //TODO: cleanup
         }
     } else {
         if (zmgMimeHelper::isDocument($mime, true) && zmgMimeHelper::isIndexable($mime, true)) {
             zmgimport('org.zoomfactory.var.plugins.toolbox.tools.documentTool');
             $ok = zmgDocumentTool::process($medium, $gallery);
             if (!$ok) {
                 zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Could not index document'));
                 //TODO: cleanup
             }
         } else {
             if (zmgMimeHelper::isVideo($mime, true) && zmgMimeHelper::isThumbnailable($mime, true)) {
                 zmgimport('org.zoomfactory.var.plugins.toolbox.tools.videoTool');
                 $ok = zmgVideoTool::process($medium, $gallery);
                 if (!$ok) {
                     zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Could not create thumbnail of video file'));
                     //TODO: cleanup
                 }
             } else {
                 if (zmgMimeHelper::isAudio($mime, true)) {
                     zmgimport('org.zoomfactory.var.plugins.toolbox.tools.audioTool');
                     $ok = zmgAudioTool::process($medium, $gallery);
                     if (!$ok) {
                         zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Audio file not supported'));
                         //TODO: cleanup
                     }
                 } else {
                     zmgToolboxPlugin::registerError(T_('Upload medium'), T_('Unsupported medium type.'));
                 }
             }
         }
     }
     return $ok;
 }