Example #1
0
 public function getVideoThumbnailUrlFromParts(array $parts, $force = false)
 {
     if (!isset($parts[1]) || !isset($parts[2])) {
         return false;
     }
     $serviceId = preg_replace('#[^a-zA-Z0-9_]#', '', $parts[1]);
     $videoId = $parts[2];
     $cleanVideoId = XenGallery_Helper_String::cleanVideoId($videoId);
     if (!strlen($serviceId) || !strlen($cleanVideoId)) {
         return false;
     }
     $videoThumbnail = sprintf('%s/xengallery/%s/%s_%s_thumb.jpg', XenForo_Application::$externalDataUrl, $serviceId, $serviceId, $cleanVideoId);
     $videoThumbnailPath = sprintf('%s/xengallery/%s/%s_%s.jpg', XenForo_Application::$externalDataPath, $serviceId, $serviceId, $cleanVideoId);
     if (!file_exists($videoThumbnailPath) || !is_readable($videoThumbnailPath) || $force) {
         $mediaSiteOptions = XenForo_Application::getOptions()->xengalleryMediaThumbs;
         if (empty($mediaSiteOptions[$serviceId])) {
             return false;
         }
         $mediaSite = $mediaSiteOptions[$serviceId];
         if (strpos($mediaSite, '_')) {
             if (class_exists($mediaSite)) {
                 /** @var $thumbnailObj XenGallery_Thumbnail_Abstract */
                 $thumbnailObj = XenGallery_Thumbnail_Abstract::create($mediaSite);
                 if ($mediaSite == 'XenGallery_Thumbnail_NoThumb') {
                     $videoThumbnailPath = $thumbnailObj->getNoThumbnailUrl($videoId, $serviceId);
                 } else {
                     $videoThumbnailPath = $thumbnailObj->getThumbnailUrl($videoId);
                 }
             } else {
                 $videoThumbnailPath = $mediaSite;
             }
         } else {
             $videoThumbnailPath = $mediaSite;
         }
         if (strpos($videoThumbnailPath, '{$id}')) {
             $this->_thumbnailPath = XenForo_Application::$externalDataPath . '/xengallery/' . $parts[0];
             XenForo_Helper_File::createDirectory($this->_thumbnailPath, true);
             $videoThumbnailPath = str_replace('{$id}', rawurldecode($cleanVideoId), $videoThumbnailPath);
             XenGallery_Thumbnail_Abstract::saveThumbnailFromUrl($serviceId, $videoId, $videoThumbnailPath);
         } else {
             $this->_thumbnailPath = XenForo_Application::$externalDataPath . '/xengallery/' . $serviceId;
             XenForo_Helper_File::createDirectory($this->_thumbnailPath, true);
             XenGallery_Thumbnail_Abstract::saveThumbnailFromPath($serviceId, $videoId, $videoThumbnailPath);
         }
         if (!$mediaSite) {
             /** @var $thumbnailObj XenGallery_Thumbnail_Abstract */
             $thumbnailObj = XenGallery_Thumbnail_Abstract::create('XenGallery_Thumbnail_NoThumb');
             $thumbnailObj->getNoThumbnailUrl($videoId, $serviceId);
         }
     }
     return $videoThumbnail;
 }
Example #2
0
 public function actionThumbnail()
 {
     $mediaModel = $this->_getMediaModel();
     $mediaSiteOptions = XenForo_Application::getOptions()->xengalleryMediaThumbs;
     $mediaSite = $this->_input->filterSingle('id', XenForo_Input::STRING);
     if (!$mediaSite) {
         return $this->responseView('XenGallery_ViewPublic_Media_Thumbnail', '', array());
     }
     $parts = explode('.', $mediaSite, 2);
     $videoThumbnail = $mediaModel->getVideoThumbnailFromParts($parts);
     if (file_exists($videoThumbnail) && is_readable($videoThumbnail)) {
         $this->getRouteMatch()->setResponseType('raw');
         $viewParams = array('thumbnailPath' => $videoThumbnail);
         return $this->responseView('XenGallery_ViewPublic_Media_Thumbnail', '', $viewParams);
     } else {
         $mediaSite = false;
         if (!empty($mediaSiteOptions[$parts[0]])) {
             $mediaSite = $mediaSiteOptions[$parts[0]];
         }
         if (strpos($mediaSite, '_')) {
             if (class_exists($mediaSite)) {
                 $thumbnailObj = XenGallery_Thumbnail_Abstract::create($mediaSite);
                 $thumbnailPath = $thumbnailObj->getThumbnailUrl($parts[1]);
             } else {
                 $thumbnailPath = $mediaSite;
             }
         } else {
             $thumbnailPath = $mediaSite;
         }
         if (strpos($thumbnailPath, '{$id}')) {
             $this->_thumbnailPath = XenForo_Application::$externalDataPath . '/xengallery/' . $parts[0];
             XenForo_Helper_File::createDirectory($this->_thumbnailPath, true);
             $thumbnailUrl = str_replace('{$id}', $parts[1], $thumbnailPath);
             $thumbnailPath = XenGallery_Thumbnail_Abstract::saveThumbnailFromUrl($parts[0], $parts[1], $thumbnailUrl);
         }
         if (!$thumbnailPath) {
             $thumbnailPath = XenForo_Template_Helper_Core::callHelper('dummy', array('', '', '', true));
         }
     }
     $this->getRouteMatch()->setResponseType('raw');
     $viewParams = array('thumbnailPath' => $thumbnailPath);
     return $this->responseView('XenGallery_ViewPublic_Media_Thumbnail', '', $viewParams);
 }