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; }
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)); } }
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; }