示例#1
0
 protected function _load()
 {
     if (!is_array($this->_options) || empty($this->_options) || !isset($this->_options[0]) || !$this->_options[0] || preg_match('~^\\s*$~', $this->_options[0])) {
         throw new Exceptions_SeotoasterException($this->_translator->translate('You should specify folder.'));
     }
     $configHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('config');
     $path = $this->_websiteHelper->getPath() . $this->_websiteHelper->getMedia() . $this->_options[0] . '/';
     $mediaServersAllowed = $configHelper->getConfig('mediaServers');
     unset($configHelper);
     $websiteData = $mediaServersAllowed ? Zend_Registry::get('website') : null;
     $thumbSize = isset($this->_options[1]) ? $this->_options[1] : self::DEFAULT_THUMB_SIZE;
     $useCrop = isset($this->_options[2]) ? (bool) $this->_options[2] : false;
     $useCaption = isset($this->_options[3]) ? (bool) $this->_options[3] : false;
     if (!is_dir($path)) {
         throw new Exceptions_SeotoasterException($path . ' is not a directory.');
     }
     $sourceImages = Tools_Filesystem_Tools::scanDirectory($path . 'original/');
     $galFolder = $path . ($useCrop ? 'crop/' : 'thumbnails/');
     if (!is_dir($galFolder)) {
         @mkdir($galFolder);
     }
     foreach ($sourceImages as $key => $image) {
         if (is_file($galFolder . $image)) {
             $imgInfo = getimagesize($galFolder . $image);
             if ($imgInfo[0] != $thumbSize) {
                 Tools_Image_Tools::resize($path . 'original/' . $image, $thumbSize, !$useCrop, $galFolder, $useCrop);
             }
         } else {
             Tools_Image_Tools::resize($path . 'original/' . $image, $thumbSize, !$useCrop, $galFolder, $useCrop);
         }
         $sourcePart = str_replace($this->_websiteHelper->getPath(), $this->_websiteHelper->getUrl(), $galFolder);
         if ($mediaServersAllowed) {
             $mediaServer = Tools_Content_Tools::getMediaServer();
             $cleanWebsiteUrl = str_replace('www.', '', $websiteData['url']);
             $sourcePart = str_replace($websiteData['url'], $mediaServer . '.' . $cleanWebsiteUrl, $sourcePart);
         }
         $sourceImages[$key] = array('path' => $sourcePart . $image, 'name' => $image);
     }
     $this->_view->folder = $this->_options[0];
     $this->_view->original = str_replace($this->_websiteHelper->getPath(), $this->_websiteHelper->getUrl(), $path) . 'original/';
     $this->_view->images = $sourceImages;
     $this->_view->useCaption = $useCaption;
     $this->_view->galFolderPath = $galFolder;
     $this->_view->mediaServersAllowed = $mediaServersAllowed;
     $this->_view->galFolder = str_replace($this->_websiteHelper->getPath(), $this->_websiteHelper->getUrl(), $galFolder);
     return $this->_view->render('gallery.phtml');
 }
 private function _uploadPagepreview()
 {
     $miscConfig = Zend_Registry::get('misc');
     $configTeaserSize = $this->_helper->config->getConfig('teaserSize');
     $savePath = $this->_websiteConfig['path'] . $this->_websiteConfig['tmp'];
     $fileMime = $this->_getMimeType();
     switch ($fileMime) {
         case 'image/png':
             $newName = '.png';
             break;
         case 'image/jpg':
         case 'image/jpeg':
             $newName = '.jpg';
             $this->_helper->session->imageQualityPreview = self::PREVIEW_IMAGE_OPTIMIZE;
             break;
         case 'image/gif':
             $newName = '.gif';
             break;
         default:
             return false;
             break;
     }
     $newName = md5(microtime(1)) . $newName;
     $newImageFile = $savePath . $newName;
     $this->_uploadHandler->addFilter('Rename', array('target' => $newImageFile, 'overwrite' => true));
     $result = $this->_uploadImages($savePath, false);
     if ($result['error'] == false) {
         Tools_Image_Tools::resize($newImageFile, $configTeaserSize ? $configTeaserSize : $miscConfig['pageTeaserSize'], true);
         $result['src'] = $this->_helper->website->getUrl() . $this->_websiteConfig['tmp'] . $newName;
     }
     return $result;
 }
示例#3
0
 protected function _applyMedia($themeName = false)
 {
     if (!$themeName) {
         $themeName = $this->_configHelper->getConfig('currentTheme');
     }
     $toasterRoot = $this->_websiteHelper->getPath();
     $themePath = $toasterRoot . $this->_themesConfig['path'] . $themeName;
     $themeMediaPath = $themePath . DIRECTORY_SEPARATOR . $this->_websiteHelper->getMedia();
     $themePageTeasersPath = $themePath . DIRECTORY_SEPARATOR . $this->_websiteHelper->getPreview();
     //processing images from media folder
     if (is_dir($themeMediaPath)) {
         $mediaFiles = glob($themeMediaPath . join(DIRECTORY_SEPARATOR, array('*', '*.{jpeg,jpg,png,gif}')), GLOB_BRACE);
         $toasterMedia = $toasterRoot . $this->_websiteHelper->getMedia();
         foreach ($mediaFiles as $originalFile) {
             $filepath = str_replace($themeMediaPath, '', $originalFile);
             $filepath = explode(DIRECTORY_SEPARATOR, $filepath);
             if (!is_array($filepath)) {
                 continue;
             }
             list($folderName, $fileName) = $filepath;
             $destFolderPath = $toasterMedia . $folderName;
             if (!is_dir($destFolderPath)) {
                 if (Tools_Filesystem_Tools::mkDir($destFolderPath)) {
                     Tools_Filesystem_Tools::mkDir($destFolderPath . DIRECTORY_SEPARATOR . 'original');
                 }
             }
             $destImgPath = $destFolderPath . DIRECTORY_SEPARATOR . 'original' . DIRECTORY_SEPARATOR . $fileName;
             if (Tools_Filesystem_Tools::copy($originalFile, $destImgPath, true)) {
                 Tools_Image_Tools::batchResize($destImgPath, $destFolderPath);
             }
             unset($filepath, $destFolderPath, $folderName, $fileName);
         }
     }
     //processing page preview images
     if (is_dir($themePageTeasersPath)) {
         $destinationPreview = $toasterRoot . $this->_websiteHelper->getPreview();
         if (!is_dir($destinationPreview)) {
             Tools_Filesystem_Tools::mkDir($destinationPreview);
         }
         Tools_Filesystem_Tools::copy($themePageTeasersPath, $destinationPreview, array(), true);
     }
 }
 /**
  * Action used for removing images/files from media catalog
  * for AJAX request
  * @return JSON
  */
 public function removefileAction()
 {
     if ($this->getRequest()->isPost()) {
         $folderName = $this->getRequest()->getParam('folder');
         if (empty($folderName)) {
             $this->view->errorMsg = $this->_translator->translate('No folder specified');
             return false;
         }
         $removeImages = $this->getRequest()->getParam('removeImages');
         $removeFiles = $this->getRequest()->getParam('removeFiles');
         $errorList = array();
         $folderPath = realpath($this->_websiteConfig['path'] . $this->_websiteConfig['media'] . $folderName);
         if (!isset($removeFiles) && !isset($removeImages)) {
             $this->view->errorMsg = $this->_translator->translate('Nothing to remove');
         }
         if (!$folderPath || !is_dir($folderPath)) {
             $this->view->errorMsg = $this->_translator->translate('No such folder');
             return false;
         }
         //list of removed files
         $deleted = array();
         //processing images
         if (isset($removeImages) && is_array($removeImages)) {
             foreach ($removeImages as $imageName) {
                 //checking if this image in any container
                 $pages = $this->_checkFileInContent($folderName . '%' . $imageName);
                 if (!empty($pages)) {
                     array_push($errorList, array('name' => $imageName, 'errors' => $pages));
                 } else {
                     // going to remove image
                     try {
                         $result = Tools_Image_Tools::removeImageFromFilesystem($imageName, $folderName);
                         if ($result !== true) {
                             array_push($errorList, array('name' => $imageName, 'errors' => $result));
                         } else {
                             //cleaning out the images related widgets
                             $this->_helper->cache->clean(null, null, array('Widgets_Gal_Gal'));
                             array_push($deleted, $imageName);
                         }
                     } catch (Exceptions_SeotoasterException $e) {
                         error_log($e->getMessage() . PHP_EOL . $e->getTraceAsString());
                     }
                 }
             }
         }
         //processing files
         if (isset($removeFiles) && is_array($removeFiles)) {
             foreach ($removeFiles as $fileName) {
                 if (!is_file($folderPath . DIRECTORY_SEPARATOR . $fileName)) {
                     $errorList[$fileName] = $this->_translator->translate($folderPath . DIRECTORY_SEPARATOR . $fileName . ': file not found');
                 }
                 //checking if this image in any container
                 $pages = $this->_checkFileInContent($fileName);
                 if (!empty($pages)) {
                     array_push($errorList, array('name' => $fileName, 'errors' => $pages));
                 }
                 try {
                     $result = Tools_Filesystem_Tools::deleteFile($folderPath . DIRECTORY_SEPARATOR . $fileName);
                     if ($result !== true) {
                         array_push($errorList, array('name' => $fileName, 'errors' => $this->_translator->translate("Can't remove file. Permission denied")));
                     } else {
                         array_push($deleted, $fileName);
                     }
                 } catch (Exception $e) {
                     error_log($e->getMessage() . PHP_EOL . $e->getTraceAsString());
                 }
             }
         }
         if (!empty($deleted)) {
             $folderContent = Tools_Filesystem_Tools::scanDirectory($folderPath, false, true);
             if (empty($folderContent)) {
                 try {
                     $this->view->folderRemoved = Tools_Filesystem_Tools::deleteDir($folderPath);
                 } catch (Exception $e) {
                     error_log($e->getMessage());
                 }
             }
         }
         $this->view->errors = empty($errorList) ? false : $errorList;
         $this->view->deleted = $deleted;
     } else {
         $this->_redirect($this->_helper->website->getUrl(), array('exit' => true));
     }
 }
示例#5
0
 public static function processPagePreviewImage($pageUrl, $tmpPreviewFile = null)
 {
     $websiteHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('website');
     $pageHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('page');
     $websiteConfig = Zend_Registry::get('website');
     $pageUrl = str_replace(DIRECTORY_SEPARATOR, '-', $pageHelper->clean($pageUrl));
     $previewPath = $websiteHelper->getPath() . $websiteHelper->getPreview();
     //        $filelist           = Tools_Filesystem_Tools::findFilesByExtension($previewPath, '(jpg|gif|png)', false, false, false);
     $currentPreviewList = glob($previewPath . $pageUrl . '.{jpg,jpeg,png,gif}', GLOB_BRACE);
     if ($tmpPreviewFile) {
         $tmpPreviewFile = str_replace($websiteHelper->getUrl(), $websiteHelper->getPath(), $tmpPreviewFile);
         if (is_file($tmpPreviewFile) && is_readable($tmpPreviewFile)) {
             preg_match('/\\.[\\w]{2,6}$/', $tmpPreviewFile, $extension);
             $newPreviewImageFile = $previewPath . $pageUrl . $extension[0];
             //cleaning form existing page previews
             if (!empty($currentPreviewList)) {
                 foreach ($currentPreviewList as $key => $file) {
                     if (file_exists($file)) {
                         if (Tools_Filesystem_Tools::deleteFile($file)) {
                             //                                unset($currentPreviewList[$key]);
                         }
                     }
                 }
             }
             if (is_writable($newPreviewImageFile)) {
                 $status = @rename($tmpPreviewFile, $newPreviewImageFile);
             } else {
                 $status = @copy($tmpPreviewFile, $newPreviewImageFile);
             }
             if ($status && file_exists($tmpPreviewFile)) {
                 Tools_Filesystem_Tools::deleteFile($tmpPreviewFile);
             }
             $miscConfig = Zend_Registry::get('misc');
             //check for the previews crop folder and try to create it if not exists
             $cropPreviewDirPath = $websiteHelper->getPath() . $websiteHelper->getPreviewCrop();
             if (!is_dir($cropPreviewDirPath)) {
                 @mkdir($cropPreviewDirPath);
             } else {
                 // unlink old croped page previews
                 if (!empty($currentPreviewList)) {
                     foreach ($currentPreviewList as $fileToUnlink) {
                         $unlinkPath = str_replace($previewPath, $cropPreviewDirPath, $fileToUnlink);
                         if (file_exists($unlinkPath)) {
                             unlink($unlinkPath);
                         }
                     }
                 }
             }
             Tools_Image_Tools::resize($newPreviewImageFile, $miscConfig['pageTeaserCropSize'], false, $cropPreviewDirPath, true);
             unset($miscConfig);
             return $pageUrl . $extension[0];
             //                return $websiteHelper->getUrl() . $websiteConfig['preview'] . $pageUrl . $extension[0];
         }
     }
     if (sizeof($currentPreviewList) == 0) {
         return false;
     } else {
         $pagePreviewImage = str_replace($websiteHelper->getPath(), $websiteHelper->getUrl(), reset($currentPreviewList));
     }
     return $pagePreviewImage;
 }