Пример #1
0
 private function _initCacheObject()
 {
     $pepvnDirCachePathTemp = $this->_configs['folder'];
     if (!is_dir($pepvnDirCachePathTemp)) {
         System::mkdir($pepvnDirCachePathTemp);
     }
     if (is_dir($pepvnDirCachePathTemp) && is_readable($pepvnDirCachePathTemp) && is_writable($pepvnDirCachePathTemp)) {
         $pepvnCacheHashKeySaltTemp = PepVN_Data::$defaultParams['fullDomainName'] . $this->_key;
         if (defined('WP_PEPVN_SITE_SALT')) {
             $pepvnCacheHashKeySaltTemp .= '_' . WP_PEPVN_SITE_SALT;
         }
         $this->_cacheObject = new PepVN_CacheSimpleFile(array('cache_timeout' => 86400, 'hash_key_method' => 'crc32b', 'hash_key_salt' => hash('crc32b', md5($pepvnCacheHashKeySaltTemp)), 'gzcompress_level' => 2, 'key_prefix' => 'dtstvr_', 'cache_dir' => $pepvnDirCachePathTemp));
     } else {
         $this->_cacheObject = new PepVN_CacheSimpleFile(array());
     }
 }
Пример #2
0
 public function process_image($input_parameters)
 {
     $resultData = array();
     $resultData['image_original_file_path'] = false;
     $resultData['image_optimized_file_path'] = false;
     $resultData['image_optimized_file_url'] = false;
     if (false === $this->_isSystemReadyToHandleImagesStatus) {
         return $resultData;
     }
     if (!isset(PepVN_Data::$params['optimize_images']['number_images_processed_request'])) {
         PepVN_Data::$params['optimize_images']['number_images_processed_request'] = 0;
     }
     $options = false;
     $paramsWatermarkOptions = false;
     if (isset($input_parameters['options']) && $input_parameters['options']) {
         $options = $input_parameters['options'];
     }
     if (isset($input_parameters['paramsWatermarkOptions']) && $input_parameters['paramsWatermarkOptions']) {
         $paramsWatermarkOptions = $input_parameters['paramsWatermarkOptions'];
     }
     unset($input_parameters['options']);
     unset($input_parameters['paramsWatermarkOptions']);
     if (!$options) {
         $options = self::getOption();
     }
     if (isset($options['optimize_images_optimize_image_file_enable']) && 'on' === $options['optimize_images_optimize_image_file_enable']) {
     } else {
         return $resultData;
     }
     if (!$paramsWatermarkOptions) {
         $rsSettingWatermarksFirstOptions = $this->parse_watermarks_first_options(array('options' => $options));
         $paramsWatermarkOptions = $rsSettingWatermarksFirstOptions['paramsWatermarkOptions'];
         $options = $rsSettingWatermarksFirstOptions['options'];
         unset($rsSettingWatermarksFirstOptions);
     }
     if (isset($input_parameters['plusOptions']) && is_array($input_parameters['plusOptions'])) {
         $options = Utils::mergeArrays(array($options, $input_parameters['plusOptions']));
     }
     if (isset($paramsWatermarkOptions['text']) && is_array($paramsWatermarkOptions['text']) && !empty($paramsWatermarkOptions['text'])) {
     } else {
         $paramsWatermarkOptions['text'] = false;
     }
     if (isset($paramsWatermarkOptions['image']) && is_array($paramsWatermarkOptions['image']) && !empty($paramsWatermarkOptions['image'])) {
     } else {
         $paramsWatermarkOptions['image'] = false;
     }
     if (isset($options['optimize_images_watermarks_enable']) && 'on' === $options['optimize_images_watermarks_enable']) {
     } else {
         $paramsWatermarkOptions['text'] = false;
         $paramsWatermarkOptions['image'] = false;
     }
     $isProcessStatus = false;
     if ($paramsWatermarkOptions['text'] || $paramsWatermarkOptions['image']) {
         $isProcessStatus = true;
     }
     $options['optimize_images_image_quality_value'] = abs((int) $options['optimize_images_image_quality_value']);
     if ($options['optimize_images_image_quality_value'] >= 10 && $options['optimize_images_image_quality_value'] < 100) {
         $isProcessStatus = true;
     }
     $options['optimize_images_rename_img_filename_value'] = trim($options['optimize_images_rename_img_filename_value']);
     if ($options['optimize_images_rename_img_filename_value']) {
         $isProcessStatus = true;
     }
     $optimize_images_file_exclude_external_url_pattern = false;
     if (isset($options['optimize_images_file_exclude_external_url']) && $options['optimize_images_file_exclude_external_url']) {
         $options['optimize_images_file_exclude_external_url'] = trim($options['optimize_images_file_exclude_external_url']);
         if ($options['optimize_images_file_exclude_external_url']) {
             $tmp = PepVN_Data::cleanPregPatternsArray($options['optimize_images_file_exclude_external_url']);
             if ($tmp && !empty($tmp)) {
                 $optimize_images_file_exclude_external_url_pattern = '#(' . implode('|', $tmp) . ')#i';
             }
             unset($tmp);
         }
     }
     if ($isProcessStatus) {
         if (isset($input_parameters['original_image_src']) && $input_parameters['original_image_src']) {
             if (Utils::isImageUrl($input_parameters['original_image_src'])) {
                 if (isset($options['optimize_images_file_exclude_external_url_enable']) && 'on' === $options['optimize_images_file_exclude_external_url_enable']) {
                     if (!Utils::isUrlSameDomain($input_parameters['original_image_src'], PepVN_Data::$defaultParams['domainName'], false)) {
                         $isProcessStatus = false;
                     }
                 }
                 if ($isProcessStatus) {
                     if ($optimize_images_file_exclude_external_url_pattern) {
                         if (preg_match($optimize_images_file_exclude_external_url_pattern, $input_parameters['original_image_src'])) {
                             $isProcessStatus = false;
                         }
                     }
                 }
             } else {
                 $isProcessStatus = false;
             }
         } else {
             $isProcessStatus = false;
         }
     }
     if ($isProcessStatus) {
         $options['optimize_images_maximum_files_handled_each_request'] = (int) $options['optimize_images_maximum_files_handled_each_request'];
         if ($options['optimize_images_maximum_files_handled_each_request'] > 0) {
             if (PepVN_Data::$params['optimize_images']['number_images_processed_request'] >= $options['optimize_images_maximum_files_handled_each_request']) {
                 $isProcessStatus = false;
             }
         }
     }
     if ($isProcessStatus) {
         if (!isset($input_parameters['optimized_image_file_name'])) {
             $input_parameters['optimized_image_file_name'] = '';
         }
         if (!$input_parameters['optimized_image_file_name']) {
             $imgPathInfo = pathinfo($input_parameters['original_image_src']);
             if (isset($imgPathInfo['filename']) && $imgPathInfo['filename']) {
                 $input_parameters['optimized_image_file_name'] = trim($imgPathInfo['filename']);
             }
         }
         if (!$input_parameters['optimized_image_file_name']) {
             $isProcessStatus = false;
         }
     }
     if (!$isProcessStatus) {
         return $resultData;
     }
     $options['optimize_images_file_maximum_width_height'] = (int) $options['optimize_images_file_maximum_width_height'];
     $options['optimize_images_file_minimum_width_height'] = (int) $options['optimize_images_file_minimum_width_height'];
     if (!isset($input_parameters['resize_max_width'])) {
         $input_parameters['resize_max_width'] = 0;
     }
     $input_parameters['resize_max_width'] = (int) $input_parameters['resize_max_width'];
     $input_parameters['resize_max_width'] = abs($input_parameters['resize_max_width']);
     if (!isset($input_parameters['resize_max_height'])) {
         $input_parameters['resize_max_height'] = 0;
     }
     $input_parameters['resize_max_height'] = (int) $input_parameters['resize_max_height'];
     $input_parameters['resize_max_height'] = abs($input_parameters['resize_max_height']);
     if (!isset($input_parameters['optimized_image_folder_path'])) {
         $input_parameters['optimized_image_folder_path'] = '';
     }
     if (!$input_parameters['optimized_image_folder_path']) {
         /*
          * Dont't edit here, it make key for each image's url
          */
         $input_parameters['optimized_image_folder_path'] = $this->_folderStorePath;
         $imgKey1 = array();
         $imgKey1[] = PepVN_Data::$defaultParams['fullDomainName'];
         //add domain in case use watermark for each domain
         $imgKey1[] = $input_parameters['original_image_src'];
         $imgKey1 = $this->_createKey($imgKey1);
         $imgKey1 = $this->_hashCreateKey($imgKey1, 8);
         $input_parameters['optimized_image_folder_path'] .= substr($imgKey1, 0, 2) . DIRECTORY_SEPARATOR . $imgKey1 . DIRECTORY_SEPARATOR;
         /*
          * Dont't edit here, it make key for each image's url
          */
     }
     $keyConfigsProcessedData = '';
     if (isset($options['optimize_images_handle_again_files_different_configuration_enable']) && 'on' === $options['optimize_images_handle_again_files_different_configuration_enable']) {
         /*
          * Dont't edit here, it make key for each image's url
          */
         $fieldsKeysProcessedData = array('optimize_images_watermarks_enable', 'optimize_images_watermarks_watermark_position', 'optimize_images_watermarks_watermark_type', 'optimize_images_watermarks_watermark_text_value', 'optimize_images_watermarks_watermark_text_font_name', 'optimize_images_watermarks_watermark_text_size', 'optimize_images_watermarks_watermark_text_color', 'optimize_images_watermarks_watermark_text_margin_x', 'optimize_images_watermarks_watermark_text_margin_y', 'optimize_images_watermarks_watermark_text_opacity_value', 'optimize_images_watermarks_watermark_text_background_enable', 'optimize_images_watermarks_watermark_text_background_color', 'optimize_images_watermarks_watermark_image_url', 'optimize_images_watermarks_watermark_image_width', 'optimize_images_watermarks_watermark_image_margin_x', 'optimize_images_watermarks_watermark_image_margin_y', 'optimize_images_image_quality_value', 'optimize_images_rename_img_filename_value');
         $keyConfigsProcessedData = array();
         foreach ($fieldsKeysProcessedData as $value1) {
             if ($value1) {
                 if (isset($options[$value1])) {
                     $keyConfigsProcessedData[$value1] = $options[$value1];
                 }
             }
         }
         $keyConfigsProcessedData = $this->_createKey($keyConfigsProcessedData);
         /*
          * Dont't edit here, it make key for each image's url
          */
     }
     $keyConfigsProcessedData = trim($keyConfigsProcessedData);
     /*
      * Dont't edit here, it make key for each image's url
      */
     $keyFileConfigsProcessedData = $keyConfigsProcessedData;
     $keyFileConfigsProcessedData = md5($keyFileConfigsProcessedData);
     $keyFileConfigsProcessedData = $this->_hashCreateKey($keyFileConfigsProcessedData, 2);
     /*
      * Dont't edit here, it make key for each image's url
      */
     $input_parameters['optimized_image_file_name'] = $this->_fixFileName($input_parameters['optimized_image_file_name']);
     $imgOptimizedFilePathExists1 = false;
     $imgOptimizedFilePath1 = $input_parameters['optimized_image_folder_path'] . $input_parameters['optimized_image_file_name'] . '-' . $keyFileConfigsProcessedData;
     if ($input_parameters['resize_max_width'] > 0 || $input_parameters['resize_max_height'] > 0) {
         $imgOptimizedFilePath1 .= '-' . $input_parameters['resize_max_width'] . 'x' . $input_parameters['resize_max_height'];
     }
     foreach ($this->imageExtensionsAllow as $key1 => $value1) {
         if ($value1) {
             $tmp = $imgOptimizedFilePath1 . '.' . $value1;
             if (is_file($tmp)) {
                 if (filesize($tmp) > 0) {
                     $imgOptimizedFilePathExists1 = $tmp;
                     break;
                 }
             }
         }
     }
     if ($imgOptimizedFilePathExists1) {
         $rsGetimagesize = getimagesize($imgOptimizedFilePathExists1);
         if ($rsGetimagesize && isset($rsGetimagesize[0]) && $rsGetimagesize[0]) {
             $resultData['image_optimized_file_path'] = $imgOptimizedFilePathExists1;
             $resultData['image_optimized_file_url'] = str_replace($this->_folderStorePath, $this->_folderStoreUrl, $resultData['image_optimized_file_path']);
             $resultData['image_optimized_width'] = (int) $rsGetimagesize[0];
             $resultData['image_optimized_height'] = (int) $rsGetimagesize[1];
             return $resultData;
         }
     }
     $checkStatus1 = false;
     if (isset($input_parameters['action']) && $input_parameters['action']) {
         if ('do_process_image' === $input_parameters['action']) {
             $checkStatus1 = true;
         }
         // else only check if file images processed exist
     }
     if (!$checkStatus1) {
         return $resultData;
     }
     $remote = $this->di->getShared('remote');
     if (isset($input_parameters['original_image_src']) && $input_parameters['original_image_src']) {
         if (Utils::isUrl($input_parameters['original_image_src'])) {
             $imgOptimizedFilePath = false;
             if ($input_parameters['optimized_image_folder_path'] && is_dir($input_parameters['optimized_image_folder_path'])) {
             } else {
                 System::mkdir($input_parameters['optimized_image_folder_path']);
             }
             if (is_dir($input_parameters['optimized_image_folder_path']) && is_readable($input_parameters['optimized_image_folder_path']) && is_writable($input_parameters['optimized_image_folder_path'])) {
                 if (!$resultData['image_optimized_file_path']) {
                     $imgFolderCachePath = $this->_folderCachePath;
                     if ($imgFolderCachePath && is_dir($imgFolderCachePath) && is_readable($imgFolderCachePath) && is_writable($imgFolderCachePath)) {
                         $imgOriginalCacheFilePath = $imgFolderCachePath . DIRECTORY_SEPARATOR;
                         $imgOriginalCacheFilePath .= md5($input_parameters['original_image_src']) . '.txt';
                         if (!is_file($imgOriginalCacheFilePath)) {
                             file_put_contents($imgOriginalCacheFilePath, '');
                             $imgSrcContent = $remote->get($input_parameters['original_image_src'], array('cache_timeout' => WP_PEPVN_CACHE_TIMEOUT_NORMAL));
                             if ($imgSrcContent) {
                                 file_put_contents($imgOriginalCacheFilePath, $imgSrcContent);
                             }
                         }
                         if (is_file($imgOriginalCacheFilePath)) {
                             $valueTemp1 = filesize($imgOriginalCacheFilePath);
                             if ($valueTemp1 && $valueTemp1 > 0) {
                                 if ($this->_isImageFileCanProcess($imgOriginalCacheFilePath)) {
                                     $imgOriginalCacheFile_RsGetImageFileInfo = $this->_getImageFileInfo($imgOriginalCacheFilePath);
                                     if (isset($imgOriginalCacheFile_RsGetImageFileInfo['image_type']) && $imgOriginalCacheFile_RsGetImageFileInfo['image_type']) {
                                         PepVN_Data::$params['optimize_images']['number_images_processed_request']++;
                                         $imgOptimizedFilePath1 .= '.' . $imgOriginalCacheFile_RsGetImageFileInfo['image_type'];
                                         if (!is_file($imgOptimizedFilePath1)) {
                                             file_put_contents($imgOptimizedFilePath1, '');
                                         }
                                         $isCanProcessFileStatus1 = true;
                                         if ($options['optimize_images_file_minimum_width_height'] > 0 || $options['optimize_images_file_maximum_width_height'] > 0) {
                                             $isCanProcessFileStatus1 = false;
                                             if (isset($imgOriginalCacheFile_RsGetImageFileInfo['width']) && $imgOriginalCacheFile_RsGetImageFileInfo['width'] > 0 && isset($imgOriginalCacheFile_RsGetImageFileInfo['height']) && $imgOriginalCacheFile_RsGetImageFileInfo['height'] > 0) {
                                                 $isCanProcessFileStatus1 = true;
                                                 if ($isCanProcessFileStatus1) {
                                                     if ($options['optimize_images_file_minimum_width_height'] > 0) {
                                                         if ($imgOriginalCacheFile_RsGetImageFileInfo['width'] >= $options['optimize_images_file_minimum_width_height'] && $imgOriginalCacheFile_RsGetImageFileInfo['height'] >= $options['optimize_images_file_minimum_width_height']) {
                                                         } else {
                                                             $isCanProcessFileStatus1 = false;
                                                         }
                                                     }
                                                 }
                                                 if ($isCanProcessFileStatus1) {
                                                     if ($options['optimize_images_file_maximum_width_height'] > 0) {
                                                         if ($imgOriginalCacheFile_RsGetImageFileInfo['width'] <= $options['optimize_images_file_maximum_width_height'] && $imgOriginalCacheFile_RsGetImageFileInfo['height'] <= $options['optimize_images_file_maximum_width_height']) {
                                                         } else {
                                                             $isCanProcessFileStatus1 = false;
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                         if (!$isCanProcessFileStatus1) {
                                             return $resultData;
                                         }
                                         $resultData['image_original_file_path'] = $imgOriginalCacheFilePath;
                                         $pepVN_PHPImage = new PepVN_PHPImage($imgOriginalCacheFilePath);
                                         if ($options['optimize_images_image_quality_value'] > 95) {
                                             $options['optimize_images_image_quality_value'] = 95;
                                         }
                                         $pepVN_PHPImage->setQuality($options['optimize_images_image_quality_value']);
                                         $imgOriginalCacheFile_RatioWidthPerHeight = $imgOriginalCacheFile_RsGetImageFileInfo['width'] / $imgOriginalCacheFile_RsGetImageFileInfo['height'];
                                         $imgOriginalCacheFile_RatioWidthPerHeight = (double) $imgOriginalCacheFile_RatioWidthPerHeight;
                                         $resizeImgNewWidth = 0;
                                         $resizeImgNewHeight = 0;
                                         $isCanWatermarkStatus1 = true;
                                         if ($input_parameters['resize_max_width'] > 0 || $input_parameters['resize_max_height'] > 0) {
                                             if ($isCanWatermarkStatus1) {
                                                 if ($options['optimize_images_file_minimum_width_height'] > 0) {
                                                     if ($input_parameters['resize_max_width'] > 0) {
                                                         if ($input_parameters['resize_max_width'] < $options['optimize_images_file_minimum_width_height']) {
                                                             $isCanWatermarkStatus1 = false;
                                                         }
                                                     }
                                                     if ($input_parameters['resize_max_height'] > 0) {
                                                         if ($input_parameters['resize_max_height'] < $options['optimize_images_file_minimum_width_height']) {
                                                             $isCanWatermarkStatus1 = false;
                                                         }
                                                     }
                                                 }
                                             }
                                             if ($isCanWatermarkStatus1) {
                                                 if ($options['optimize_images_file_maximum_width_height'] > 0) {
                                                     if ($input_parameters['resize_max_width'] > 0) {
                                                         if ($input_parameters['resize_max_width'] > $options['optimize_images_file_maximum_width_height']) {
                                                             $isCanWatermarkStatus1 = false;
                                                         }
                                                     }
                                                     if ($input_parameters['resize_max_height'] > 0) {
                                                         if ($input_parameters['resize_max_height'] > $options['optimize_images_file_maximum_width_height']) {
                                                             $isCanWatermarkStatus1 = false;
                                                         }
                                                     }
                                                 }
                                             }
                                             $resizeImgNewWidth = $input_parameters['resize_max_width'];
                                             $resizeImgNewHeight = $input_parameters['resize_max_height'];
                                             if ($resizeImgNewWidth > $imgOriginalCacheFile_RsGetImageFileInfo['width']) {
                                                 $resizeImgNewWidth = $imgOriginalCacheFile_RsGetImageFileInfo['width'];
                                             }
                                             if ($resizeImgNewHeight > $imgOriginalCacheFile_RsGetImageFileInfo['height']) {
                                                 $resizeImgNewHeight = $imgOriginalCacheFile_RsGetImageFileInfo['height'];
                                             }
                                             if ($resizeImgNewWidth > 0) {
                                                 if (0 === $resizeImgNewHeight) {
                                                     $resizeImgNewHeight = ceil($resizeImgNewWidth / $imgOriginalCacheFile_RatioWidthPerHeight);
                                                 }
                                             }
                                             if ($resizeImgNewHeight > 0) {
                                                 if (0 === $resizeImgNewWidth) {
                                                     $resizeImgNewWidth = ceil($resizeImgNewHeight * $imgOriginalCacheFile_RatioWidthPerHeight);
                                                 }
                                             }
                                             if ($resizeImgNewWidth > 0 && $resizeImgNewHeight > 0) {
                                                 $pepVN_PHPImage->resize($resizeImgNewWidth, $resizeImgNewHeight, false, false);
                                             }
                                         }
                                         if ($resizeImgNewWidth > 0 && $resizeImgNewHeight > 0) {
                                             $targetImgNeedWatermark_Width = $resizeImgNewWidth;
                                             $targetImgNeedWatermark_Height = $resizeImgNewHeight;
                                         } else {
                                             $targetImgNeedWatermark_Width = $imgOriginalCacheFile_RsGetImageFileInfo[0];
                                             $targetImgNeedWatermark_Height = $imgOriginalCacheFile_RsGetImageFileInfo[1];
                                         }
                                         if ($paramsWatermarkOptions['text'] && $isCanWatermarkStatus1) {
                                             $watermarkTextBoxWidth = 0;
                                             $watermarkTextBoxHeight = 0;
                                             $textFontSize = 12;
                                             $boxPaddingX = 0;
                                             $boxPaddingY = 0;
                                             if ($paramsWatermarkOptions['text']) {
                                                 if (isset($paramsWatermarkOptions['text']['fontSize']) && $paramsWatermarkOptions['text']['fontSize']) {
                                                     $paramsWatermarkOptions['text']['fontSize'] = (int) $paramsWatermarkOptions['text']['fontSize'];
                                                     if ($paramsWatermarkOptions['text']['fontSize'] > 0) {
                                                         $textFontSize = $paramsWatermarkOptions['text']['fontSize'];
                                                     }
                                                 }
                                                 if (isset($options['optimize_images_watermarks_watermark_text_size']) && $options['optimize_images_watermarks_watermark_text_size']) {
                                                     if (false !== stripos($options['optimize_images_watermarks_watermark_text_size'], '%')) {
                                                         $valueTemp = $options['optimize_images_watermarks_watermark_text_size'];
                                                         $valueTemp = preg_replace('#[^0-9]+#i', '', $valueTemp);
                                                         $valueTemp = (int) $valueTemp;
                                                         $valueTemp = abs($valueTemp);
                                                         if ($valueTemp > 100) {
                                                             $valueTemp = 100;
                                                         }
                                                         $watermarkTextBoxWidth = $targetImgNeedWatermark_Width * ($valueTemp / 100);
                                                         $watermarkTextBoxWidth = floor($watermarkTextBoxWidth);
                                                         $watermarkTextBoxWidth = (int) $watermarkTextBoxWidth;
                                                         $watermarkTextBoxHeight = $imgOriginalCacheFile_RsGetImageFileInfo[1] * ($valueTemp / 100);
                                                         $watermarkTextBoxHeight = floor($watermarkTextBoxHeight);
                                                         $watermarkTextBoxHeight = (int) $watermarkTextBoxHeight;
                                                         $textFontSize = PepVN_Images::fitTextSizeToBoxSize(0, 0, $paramsWatermarkOptions['text']['fontFile'], $options['optimize_images_watermarks_watermark_text_value'], $watermarkTextBoxWidth, $watermarkTextBoxHeight);
                                                     }
                                                 }
                                             }
                                             $textFontSize = (int) $textFontSize;
                                             if ($textFontSize > 0) {
                                                 $paramsWatermarkOptions['text']['fontSize'] = $textFontSize;
                                                 $rsCalculateText = PepVN_Images::calculateText($textFontSize, 0, $paramsWatermarkOptions['text']['fontFile'], $options['optimize_images_watermarks_watermark_text_value']);
                                                 $watermarkTextBoxWidth = $rsCalculateText['actualWidth'];
                                                 $watermarkTextBoxHeight = $rsCalculateText['actualHeight'];
                                             }
                                             $watermarkTextBoxWidth = (int) $watermarkTextBoxWidth;
                                             $watermarkTextBoxHeight = (int) $watermarkTextBoxHeight;
                                             if ($watermarkTextBoxWidth > 0 && $watermarkTextBoxHeight > 0) {
                                                 if (isset($paramsWatermarkOptions['text']['boxColor']) && $paramsWatermarkOptions['text']['boxColor']) {
                                                     $boxPaddingX = $paramsWatermarkOptions['text']['boxPaddingX'];
                                                     if (false !== stripos($boxPaddingX, '%')) {
                                                         $boxPaddingX = preg_replace('#[^0-9]+#is', '', $boxPaddingX);
                                                         $boxPaddingX = abs((int) $boxPaddingX);
                                                         $boxPaddingX = $watermarkTextBoxWidth * ($boxPaddingX / 100);
                                                     }
                                                     $boxPaddingX = abs((int) $boxPaddingX);
                                                     $watermarkTextBoxWidth += $boxPaddingX * 2;
                                                     $boxPaddingY = $paramsWatermarkOptions['text']['boxPaddingY'];
                                                     if (false !== stripos($boxPaddingY, '%')) {
                                                         $boxPaddingY = preg_replace('#[^0-9]+#is', '', $boxPaddingY);
                                                         $boxPaddingY = abs((int) $boxPaddingY);
                                                         $boxPaddingY = $watermarkTextBoxWidth * ($boxPaddingY / 100);
                                                     }
                                                     $boxPaddingY = abs((int) $boxPaddingY);
                                                     $watermarkTextBoxHeight += $boxPaddingY * 2;
                                                 }
                                             }
                                             $options['optimize_images_watermarks_watermark_text_margin_x'] = (int) $options['optimize_images_watermarks_watermark_text_margin_x'];
                                             $options['optimize_images_watermarks_watermark_text_margin_y'] = (int) $options['optimize_images_watermarks_watermark_text_margin_y'];
                                             if (isset($options['optimize_images_watermarks_watermark_position']) && $options['optimize_images_watermarks_watermark_position']) {
                                                 $options_optimize_images_watermarks_watermark_position = $options['optimize_images_watermarks_watermark_position'];
                                                 $options_optimize_images_watermarks_watermark_position = (array) $options_optimize_images_watermarks_watermark_position;
                                                 foreach ($options_optimize_images_watermarks_watermark_position as $value1) {
                                                     if ($value1) {
                                                         $value1 = trim($value1);
                                                         if ($value1) {
                                                             if ($paramsWatermarkOptions['text']) {
                                                                 if ($watermarkTextBoxWidth > 0 && $watermarkTextBoxHeight > 0) {
                                                                     $paramsWatermarkOptions_Temp1 = $paramsWatermarkOptions['text'];
                                                                     if (false !== stripos($value1, 'top_')) {
                                                                         $paramsWatermarkOptions_Temp1['y'] = 0 + abs((int) $options['optimize_images_watermarks_watermark_text_margin_y']);
                                                                     } else {
                                                                         if (false !== stripos($value1, 'middle_')) {
                                                                             $paramsWatermarkOptions_Temp1['y'] = floor(($imgOriginalCacheFile_RsGetImageFileInfo[1] - $watermarkTextBoxHeight) / 2) + $options['optimize_images_watermarks_watermark_text_margin_y'];
                                                                         } else {
                                                                             if (false !== stripos($value1, 'bottom_')) {
                                                                                 $paramsWatermarkOptions_Temp1['y'] = $imgOriginalCacheFile_RsGetImageFileInfo[1] - $watermarkTextBoxHeight - abs((int) $options['optimize_images_watermarks_watermark_text_margin_y']);
                                                                             }
                                                                         }
                                                                     }
                                                                     if (false !== stripos($value1, '_left')) {
                                                                         $paramsWatermarkOptions_Temp1['x'] = 0 + abs((int) $options['optimize_images_watermarks_watermark_text_margin_x']);
                                                                     } else {
                                                                         if (false !== stripos($value1, '_center')) {
                                                                             $paramsWatermarkOptions_Temp1['x'] = floor(abs($targetImgNeedWatermark_Width - $watermarkTextBoxWidth) / 2) + $options['optimize_images_watermarks_watermark_text_margin_x'];
                                                                         } else {
                                                                             if (false !== stripos($value1, '_right')) {
                                                                                 $paramsWatermarkOptions_Temp1['x'] = $targetImgNeedWatermark_Width - $watermarkTextBoxWidth - abs((int) $options['optimize_images_watermarks_watermark_text_margin_x']);
                                                                             }
                                                                         }
                                                                     }
                                                                     $paramsWatermarkOptions_Temp1['boxPaddingX'] = abs((int) $boxPaddingX);
                                                                     $paramsWatermarkOptions_Temp1['boxPaddingY'] = abs((int) $boxPaddingY);
                                                                     $pepVN_PHPImage->text($options['optimize_images_watermarks_watermark_text_value'], $paramsWatermarkOptions_Temp1);
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                                 //loop watermark_position
                                             }
                                         }
                                         if ($paramsWatermarkOptions['image'] && $isCanWatermarkStatus1) {
                                             if (isset($paramsWatermarkOptions['image']['watermark_image_file_path']) && $paramsWatermarkOptions['image']['watermark_image_file_path']) {
                                                 $options['optimize_images_watermarks_watermark_image_margin_x'] = (int) $options['optimize_images_watermarks_watermark_image_margin_x'];
                                                 $options['optimize_images_watermarks_watermark_image_margin_y'] = (int) $options['optimize_images_watermarks_watermark_image_margin_y'];
                                                 $watermarkActualBoxWidth = 0;
                                                 $watermarkActualBoxHeight = 0;
                                                 $watermarkNewBoxWidth = 0;
                                                 $watermarkNewBoxHeight = 0;
                                                 $watermarkImg_RsGetImageInfo = PepVN_Images::getImageInfo($paramsWatermarkOptions['image']['watermark_image_file_path'], true);
                                                 if (isset($watermarkImg_RsGetImageInfo['image_resource']) && $watermarkImg_RsGetImageInfo['image_resource']) {
                                                     $watermarkActualBoxWidth = $watermarkImg_RsGetImageInfo['width'];
                                                     $watermarkActualBoxHeight = $watermarkImg_RsGetImageInfo['height'];
                                                 }
                                                 $watermarkImg_Resource = false;
                                                 $watermarkActualBoxWidth = (int) $watermarkActualBoxWidth;
                                                 $watermarkActualBoxHeight = (int) $watermarkActualBoxHeight;
                                                 $watermarkActualBoxRatio_WidthPerHeight = 0;
                                                 $watermarkNewBoxWidth = $watermarkActualBoxWidth;
                                                 $watermarkNewBoxHeight = $watermarkActualBoxHeight;
                                                 $watermarkImageResource = false;
                                                 if ($watermarkActualBoxWidth > 0 && $watermarkActualBoxHeight > 0) {
                                                     $watermarkActualBoxRatio_WidthPerHeight = $watermarkActualBoxWidth / $watermarkNewBoxHeight;
                                                     $watermarkActualBoxRatio_WidthPerHeight = (double) $watermarkActualBoxRatio_WidthPerHeight;
                                                     if (isset($options['optimize_images_watermarks_watermark_image_width']) && $options['optimize_images_watermarks_watermark_image_width']) {
                                                         if (false !== stripos($options['optimize_images_watermarks_watermark_image_width'], '%')) {
                                                             $percentNewSize = $options['optimize_images_watermarks_watermark_image_width'];
                                                             $percentNewSize = preg_replace('#[^0-9]+#i', '', $percentNewSize);
                                                             $percentNewSize = abs((int) $percentNewSize);
                                                             if ($percentNewSize > 100) {
                                                                 $percentNewSize = 100;
                                                             }
                                                             $watermarkNewBoxWidth = floor($targetImgNeedWatermark_Width * ($percentNewSize / 100));
                                                             $watermarkNewBoxWidth = (int) $watermarkNewBoxWidth;
                                                             $watermarkNewBoxHeight = floor($watermarkNewBoxWidth / $watermarkActualBoxRatio_WidthPerHeight);
                                                             $watermarkNewBoxHeight = (int) $watermarkNewBoxHeight;
                                                         } else {
                                                             $options['optimize_images_watermarks_watermark_image_width'] = abs((int) $options['optimize_images_watermarks_watermark_image_width']);
                                                             if ($options['optimize_images_watermarks_watermark_image_width'] > 0) {
                                                                 $watermarkNewBoxWidth = $options['optimize_images_watermarks_watermark_image_width'];
                                                                 $watermarkNewBoxHeight = floor($watermarkNewBoxWidth / $watermarkActualBoxRatio_WidthPerHeight);
                                                                 $watermarkNewBoxHeight = (int) $watermarkNewBoxHeight;
                                                             }
                                                         }
                                                     }
                                                     $watermarkImg_Resource = PepVN_Images::create_blank_transparent_image_resource($watermarkNewBoxWidth, $watermarkNewBoxHeight);
                                                     imagecopyresampled($watermarkImg_Resource, $watermarkImg_RsGetImageInfo['image_resource'], 0, 0, 0, 0, $watermarkNewBoxWidth, $watermarkNewBoxHeight, $watermarkActualBoxWidth, $watermarkActualBoxHeight);
                                                     if ($watermarkImg_Resource && is_resource($watermarkImg_Resource) && isset($options['optimize_images_watermarks_watermark_position']) && $options['optimize_images_watermarks_watermark_position']) {
                                                         $options_optimize_images_watermarks_watermark_position = $options['optimize_images_watermarks_watermark_position'];
                                                         $options_optimize_images_watermarks_watermark_position = (array) $options_optimize_images_watermarks_watermark_position;
                                                         foreach ($options_optimize_images_watermarks_watermark_position as $value1) {
                                                             if ($value1) {
                                                                 $value1 = trim($value1);
                                                                 if ($value1) {
                                                                     $paramsWatermarkOptions_Temp1 = array();
                                                                     $paramsWatermarkOptions_Temp1['x'] = 0;
                                                                     $paramsWatermarkOptions_Temp1['y'] = 0;
                                                                     if (false !== stripos($value1, 'top_')) {
                                                                         $paramsWatermarkOptions_Temp1['y'] = 0 + abs((int) $options['optimize_images_watermarks_watermark_image_margin_y']);
                                                                     } else {
                                                                         if (false !== stripos($value1, 'middle_')) {
                                                                             $paramsWatermarkOptions_Temp1['y'] = floor(($imgOriginalCacheFile_RsGetImageFileInfo[1] - $watermarkNewBoxHeight) / 2) + $options['optimize_images_watermarks_watermark_image_margin_y'];
                                                                         } else {
                                                                             if (false !== stripos($value1, 'bottom_')) {
                                                                                 $paramsWatermarkOptions_Temp1['y'] = $imgOriginalCacheFile_RsGetImageFileInfo[1] - $watermarkNewBoxHeight - abs((int) $options['optimize_images_watermarks_watermark_image_margin_y']);
                                                                             }
                                                                         }
                                                                     }
                                                                     if (false !== stripos($value1, '_left')) {
                                                                         $paramsWatermarkOptions_Temp1['x'] = 0 + abs((int) $options['optimize_images_watermarks_watermark_image_margin_x']);
                                                                     } else {
                                                                         if (false !== stripos($value1, '_center')) {
                                                                             $paramsWatermarkOptions_Temp1['x'] = floor(abs($targetImgNeedWatermark_Width - $watermarkNewBoxWidth) / 2) + $options['optimize_images_watermarks_watermark_image_margin_x'];
                                                                         } else {
                                                                             if (false !== stripos($value1, '_right')) {
                                                                                 $paramsWatermarkOptions_Temp1['x'] = $targetImgNeedWatermark_Width - $watermarkNewBoxWidth - abs((int) $options['optimize_images_watermarks_watermark_image_margin_x']);
                                                                             }
                                                                         }
                                                                     }
                                                                     $pepVN_PHPImage->drawFromResource($watermarkImg_Resource, $paramsWatermarkOptions_Temp1);
                                                                 }
                                                             }
                                                         }
                                                         //loop watermark_position
                                                     }
                                                 }
                                                 if (isset($watermarkImg_RsGetImageInfo['image_resource']) && $watermarkImg_RsGetImageInfo['image_resource'] && is_resource($watermarkImg_RsGetImageInfo['image_resource'])) {
                                                     imagedestroy($watermarkImg_RsGetImageInfo['image_resource']);
                                                 }
                                                 $watermarkImg_RsGetImageInfo = false;
                                                 if ($watermarkImg_Resource && is_resource($watermarkImg_Resource)) {
                                                     imagedestroy($watermarkImg_Resource);
                                                 }
                                                 $watermarkImg_Resource = false;
                                             }
                                         }
                                         $pepVN_PHPImage->save($imgOptimizedFilePath1, false, true);
                                         $pepVN_PHPImage->cleanup();
                                         unset($pepVN_PHPImage);
                                     }
                                     $valueTemp1 = $imgOptimizedFilePath1;
                                     if ($valueTemp1 && is_file($valueTemp1)) {
                                         $valueTemp2 = filesize($valueTemp1);
                                         if ($valueTemp2 && $valueTemp2 > 0) {
                                             $rs_getimagesize = getimagesize($valueTemp1);
                                             if ($rs_getimagesize && isset($rs_getimagesize[0]) && $rs_getimagesize[0]) {
                                                 $resultData['image_optimized_file_path'] = $valueTemp1;
                                                 $resultData['image_optimized_file_url'] = str_replace($this->_folderStorePath, $this->_folderStoreUrl, $resultData['image_optimized_file_path']);
                                                 $resultData['image_optimized_width'] = (int) $rs_getimagesize[0];
                                                 $resultData['image_optimized_height'] = (int) $rs_getimagesize[1];
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
                 if ($resultData['image_optimized_file_path']) {
                     if ($keyConfigsProcessedData) {
                         if (isset($options['optimize_images_remove_files_available_different_configuration_enable']) && 'on' === $options['optimize_images_remove_files_available_different_configuration_enable']) {
                             $this->optimize_images_clean_unuse_image(array('optimized_image_folder_path' => $input_parameters['optimized_image_folder_path'], 'key_file' => $keyFileConfigsProcessedData));
                         }
                     }
                 }
             }
         }
     }
     return $resultData;
 }
Пример #3
0
    $cacheStatus = false;
    $dirPath = WP_OPTIMIZE_BY_XTRAFFIC_PLUGIN_STORAGES_CACHE_DIR . 'phcnscf' . DIRECTORY_SEPARATOR;
    System::mkdir($dirPath);
    if (is_dir($dirPath) && is_readable($dirPath) && is_writable($dirPath)) {
        $cacheStatus = true;
    }
    if ($cacheStatus) {
        return new CacheBackendFile(new CacheFrontendData(array('lifetime' => WP_PEPVN_CACHE_TIMEOUT_NORMAL)), array('cacheDir' => $dirPath, 'prefix' => WP_PEPVN_CACHE_PREFIX));
    } else {
        return new CacheBackendMemory(new CacheFrontendNone());
    }
}, true);
$di->set('cachePermanent', function () use($config, $di) {
    $cacheStatus = false;
    $dirPath = WP_OPTIMIZE_BY_XTRAFFIC_PLUGIN_STORAGES_CACHE_DIR . 'phcnscfpm' . DIRECTORY_SEPARATOR;
    System::mkdir($dirPath);
    if (is_dir($dirPath) && is_readable($dirPath) && is_writable($dirPath)) {
        $cacheStatus = true;
    }
    if ($cacheStatus) {
        return new CacheBackendFile(new CacheFrontendData(array('lifetime' => WP_PEPVN_CACHE_TIMEOUT_NORMAL)), array('cacheDir' => $dirPath, 'prefix' => WP_PEPVN_CACHE_PREFIX));
    } else {
        return new CacheBackendMemory(new CacheFrontendNone());
    }
}, true);
/*
*	Config for only this plugin
*/
/*
$url = $di->get('url');
$url->setDI($di);
Пример #4
0
 public static function initCacheObject()
 {
     //cacheObject : store cache for short time (less than 1 day)
     $pepvnDirCachePathTemp = WP_OPTIMIZE_BY_XTRAFFIC_PLUGIN_STORAGES_CACHE_DIR . 's' . DIRECTORY_SEPARATOR;
     if (!is_dir($pepvnDirCachePathTemp)) {
         System::mkdir($pepvnDirCachePathTemp);
     }
     if (is_dir($pepvnDirCachePathTemp) && is_readable($pepvnDirCachePathTemp) && is_writable($pepvnDirCachePathTemp)) {
         $pepvnCacheHashKeySaltTemp = self::$defaultParams['fullDomainName'] . $pepvnDirCachePathTemp;
         if (defined('WP_PEPVN_SITE_SALT')) {
             $pepvnCacheHashKeySaltTemp .= '_' . WP_PEPVN_SITE_SALT;
         }
         self::$cacheObject = new \WPOptimizeByxTraffic\Application\Service\PepVN_CacheSimpleFile(array('cache_timeout' => 86400, 'hash_key_method' => 'crc32b', 'hash_key_salt' => hash('crc32b', md5($pepvnCacheHashKeySaltTemp)), 'gzcompress_level' => 2, 'key_prefix' => 'dts_', 'cache_dir' => $pepvnDirCachePathTemp));
     } else {
         self::$cacheObject = new \WPOptimizeByxTraffic\Application\Service\PepVN_CacheSimpleFile(array());
     }
     //cachePermanentObject : store cache for long time (>6 days)
     $pepvnDirCachePathTemp = WP_OPTIMIZE_BY_XTRAFFIC_PLUGIN_STORAGES_CACHE_DIR . 'pm' . DIRECTORY_SEPARATOR;
     if (!is_dir($pepvnDirCachePathTemp)) {
         System::mkdir($pepvnDirCachePathTemp);
     }
     if (is_dir($pepvnDirCachePathTemp) && is_readable($pepvnDirCachePathTemp) && is_writable($pepvnDirCachePathTemp)) {
         $pepvnCacheHashKeySaltTemp = self::$defaultParams['fullDomainName'] . $pepvnDirCachePathTemp;
         if (defined('WP_PEPVN_SITE_SALT')) {
             $pepvnCacheHashKeySaltTemp .= '_' . WP_PEPVN_SITE_SALT;
         }
         $pepvnCacheTimeoutTemp = 86400 * 6;
         PepVN_Data::$cachePermanentObject = new \WPOptimizeByxTraffic\Application\Service\PepVN_CacheSimpleFile(array('cache_timeout' => $pepvnCacheTimeoutTemp, 'hash_key_method' => 'crc32b', 'hash_key_salt' => hash('crc32b', md5($pepvnCacheHashKeySaltTemp)), 'gzcompress_level' => 2, 'key_prefix' => 'dtpm_', 'cache_dir' => $pepvnDirCachePathTemp));
     } else {
         PepVN_Data::$cachePermanentObject = new \WPOptimizeByxTraffic\Application\Service\PepVN_CacheSimpleFile(array());
     }
     /*
     		//cacheByTagObject
     		$pepvnDirCachePathTemp = WP_OPTIMIZE_BY_XTRAFFIC_PLUGIN_STORAGES_CACHE_DIR.'cbtg'.DIRECTORY_SEPARATOR; 
     
     		if(!is_dir($pepvnDirCachePathTemp)) {
     			PepVN_Data::createFolder($pepvnDirCachePathTemp);
     		}
     
     		if(is_dir($pepvnDirCachePathTemp) && is_readable($pepvnDirCachePathTemp) && is_writable($pepvnDirCachePathTemp)) {
     			$pepvnCacheHashKeySaltTemp = __FILE__ . PepVN_Data::$defaultParams['fullDomainName'] . $pepvnDirCachePathTemp;
     			
     			if(defined('WP_PEPVN_SITE_SALT')) {
     				$pepvnCacheHashKeySaltTemp .= '_'.WP_PEPVN_SITE_SALT;
     			}
     			
     			$pepvnCacheTimeoutTemp = 86400 * 6;
     			
     			PepVN_Data::$cacheByTagObject = new PepVN_Cache(
     				array(
     					'cache_timeout' => $pepvnCacheTimeoutTemp	//int : seconds
     					,'hash_key_method' => 'crc32b'
     					,'hash_key_salt' => hash('crc32b',md5($pepvnCacheHashKeySaltTemp))
     					,'gzcompress_level' => 2
     					,'key_prefix' => 'cbtg_dt_'
     					,'cache_methods' => array(
     						'file' => array(
     							'cache_timeout' => $pepvnCacheTimeoutTemp
     							, 'cache_dir' => $pepvnDirCachePathTemp
     						),
     						
     					)
     				)
     			);
     		} else {
     			PepVN_Data::$cacheByTagObject = new PepVN_Cache(array()); 
     		}
     		//*/
 }