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()); } }
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; }
$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);
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()); } //*/ }