public function saveWatermarkImageAction() { $templateData = $this->getRequest()->getPost('description'); if (is_null($templateData['id']) || empty($_FILES['watermark_image']['tmp_name'])) { return NULL; } $varDir = new Ess_M2ePro_Model_General_VariablesDir(array('child_folder' => 'ebay/template/description/watermarks')); $watermarkPath = $varDir->getPath() . (int) $templateData['id'] . '.png'; if (is_file($watermarkPath)) { @unlink($watermarkPath); } $template = Mage::getModel('M2ePro/Ebay_Template_Description')->load((int) $templateData['id']); $template->updateWatermarkHashes(); $data = array('watermark_image' => file_get_contents($_FILES['watermark_image']['tmp_name'])); $template->addData($data); $template->save(); }
public function addWatermarkIfNeed($imageLink) { if (!$this->isWatermarkEnabled()) { return $imageLink; } $imagePath = $this->imageLinkToPath($imageLink); if (!is_file($imagePath)) { return $imageLink; } $fileExtension = pathinfo($imagePath, PATHINFO_EXTENSION); $pathWithoutExtension = preg_replace('/\\.' . $fileExtension . '$/', '', $imagePath); $markingImagePath = $pathWithoutExtension . '-' . $this->getWatermarkHash() . '.' . $fileExtension; if (is_file($markingImagePath)) { $currentTime = Mage::helper('M2ePro')->getCurrentGmtDate(true); if (filemtime($markingImagePath) + self::WATERMARK_CACHE_TIME > $currentTime) { return $this->pathToImageLink($markingImagePath); } @unlink($markingImagePath); } $prevMarkingImagePath = $pathWithoutExtension . '-' . $this->getWatermarkPreviousHash() . '.' . $fileExtension; if (is_file($prevMarkingImagePath)) { @unlink($prevMarkingImagePath); } $varDir = new Ess_M2ePro_Model_General_VariablesDir(array('child_folder' => 'ebay/template/description/watermarks')); $watermarkPath = $varDir->getPath() . $this->getId() . '.png'; if (!is_file($watermarkPath)) { $varDir->create(); @file_put_contents($watermarkPath, $this->getWatermarkImage()); } $watermarkPositions = array(self::WATERMARK_POSITION_TOP => Varien_Image_Adapter_Abstract::POSITION_TOP_RIGHT, self::WATERMARK_POSITION_MIDDLE => Varien_Image_Adapter_Abstract::POSITION_CENTER, self::WATERMARK_POSITION_BOTTOM => Varien_Image_Adapter_Abstract::POSITION_BOTTOM_RIGHT); $image = new Varien_Image($imagePath); $imageOriginalHeight = $image->getOriginalHeight(); $imageOriginalWidth = $image->getOriginalWidth(); $image->open(); $image->setWatermarkPosition($watermarkPositions[$this->getWatermarkPosition()]); $watermark = new Varien_Image($watermarkPath); $watermarkOriginalHeight = $watermark->getOriginalHeight(); $watermarkOriginalWidth = $watermark->getOriginalWidth(); if ($this->isWatermarkScaleModeStretch()) { $image->setWatermarkPosition(Varien_Image_Adapter_Abstract::POSITION_STRETCH); } if ($this->isWatermarkScaleModeInWidth()) { $watermarkWidth = $imageOriginalWidth; $heightPercent = $watermarkOriginalWidth / $watermarkWidth; $watermarkHeight = (int) ($watermarkOriginalHeight / $heightPercent); $image->setWatermarkWidth($watermarkWidth); $image->setWatermarkHeigth($watermarkHeight); } if ($this->isWatermarkScaleModeNone()) { $image->setWatermarkWidth($watermarkOriginalWidth); $image->setWatermarkHeigth($watermarkOriginalHeight); if ($watermarkOriginalHeight > $imageOriginalHeight) { $image->setWatermarkHeigth($imageOriginalHeight); $widthPercent = $watermarkOriginalHeight / $imageOriginalHeight; $watermarkWidth = (int) ($watermarkOriginalWidth / $widthPercent); $image->setWatermarkWidth($watermarkWidth); } if ($watermarkOriginalWidth > $imageOriginalWidth) { $image->setWatermarkWidth($imageOriginalWidth); $heightPercent = $watermarkOriginalWidth / $imageOriginalWidth; $watermarkHeight = (int) ($watermarkOriginalHeight / $heightPercent); $image->setWatermarkHeigth($watermarkHeight); } } $opacity = 100; if ($this->isWatermarkTransparentEnabled()) { $opacity = 30; } $image->setWatermarkImageOpacity($opacity); $image->watermark($watermarkPath); $image->save($markingImagePath); return $this->pathToImageLink($markingImagePath); }
protected function prepareData(array &$data) { $prepared = parent::prepareData($data); //------------------------------ $isSimpleMode = Mage::helper('M2ePro/View_Ebay')->isSimpleMode(); $defaultData = $isSimpleMode ? Mage::getSingleton('M2ePro/Ebay_Template_Description')->getDefaultSettingsSimpleMode() : Mage::getSingleton('M2ePro/Ebay_Template_Description')->getDefaultSettingsAdvancedMode(); $defaultData['enhancement'] = explode(',', $defaultData['enhancement']); $defaultData['product_details'] = json_decode($defaultData['product_details'], true); $defaultData['watermark_settings'] = json_decode($defaultData['watermark_settings'], true); $data = Mage::helper('M2ePro')->arrayReplaceRecursive($defaultData, $data); //------------------------------ if (isset($data['title_mode'])) { $prepared['title_mode'] = (int) $data['title_mode']; } if (isset($data['title_template'])) { $prepared['title_template'] = $data['title_template']; } if (isset($data['subtitle_mode'])) { $prepared['subtitle_mode'] = (int) $data['subtitle_mode']; } if (isset($data['subtitle_template'])) { $prepared['subtitle_template'] = $data['subtitle_template']; } if (isset($data['description_mode'])) { $prepared['description_mode'] = (int) $data['description_mode']; } if (isset($data['description_template'])) { $prepared['description_template'] = $data['description_template']; } if (isset($data['condition_mode'])) { $prepared['condition_mode'] = (int) $data['condition_mode']; } if (isset($data['condition_value'])) { $prepared['condition_value'] = (int) $data['condition_value']; } if (isset($data['condition_attribute'])) { $prepared['condition_attribute'] = $data['condition_attribute']; } if (isset($data['condition_note_mode'])) { $prepared['condition_note_mode'] = (int) $data['condition_note_mode']; } if (isset($data['condition_note_template'])) { $prepared['condition_note_template'] = $data['condition_note_template']; } if (isset($data['product_details'])) { $prepared['product_details'] = $data['product_details']; if (is_array($prepared['product_details'])) { $prepared['product_details'] = json_encode($prepared['product_details']); } } if (isset($data['editor_type'])) { $prepared['editor_type'] = (int) $data['editor_type']; } if (isset($data['cut_long_titles'])) { $prepared['cut_long_titles'] = (int) $data['cut_long_titles']; } if (isset($data['hit_counter'])) { $prepared['hit_counter'] = $data['hit_counter']; } if (isset($data['enhancement'])) { $prepared['enhancement'] = $data['enhancement']; if (is_array($prepared['enhancement'])) { $prepared['enhancement'] = implode(',', $data['enhancement']); } } if (isset($data['gallery_type'])) { $prepared['gallery_type'] = (int) $data['gallery_type']; } if (isset($data['image_main_mode'])) { $prepared['image_main_mode'] = (int) $data['image_main_mode']; } if (isset($data['image_main_attribute'])) { $prepared['image_main_attribute'] = $data['image_main_attribute']; } if (isset($data['gallery_images_mode'])) { $prepared['gallery_images_mode'] = (int) $data['gallery_images_mode']; } if (isset($data['gallery_images_limit'])) { $prepared['gallery_images_limit'] = (int) $data['gallery_images_limit']; } if (isset($data['gallery_images_attribute'])) { $prepared['gallery_images_attribute'] = $data['gallery_images_attribute']; } if (isset($data['reserve_price_custom_attribute'])) { $prepared['reserve_price_custom_attribute'] = $data['reserve_price_custom_attribute']; } if (isset($data['default_image_url'])) { $prepared['default_image_url'] = $data['default_image_url']; } if (isset($data['variation_configurable_images'])) { $prepared['variation_configurable_images'] = $data['variation_configurable_images']; } if (isset($data['use_supersize_images'])) { $prepared['use_supersize_images'] = (int) $data['use_supersize_images']; } if (isset($data['watermark_mode'])) { $prepared['watermark_mode'] = (int) $data['watermark_mode']; } //----------------------------- $watermarkSettings = array(); $hashChange = false; if (isset($data['watermark_settings']['position'])) { $watermarkSettings['position'] = (int) $data['watermark_settings']['position']; if ($data['watermark_settings']['position'] != $data['old_watermark_settings']['position']) { $hashChange = true; } } if (isset($data['watermark_settings']['scale'])) { $watermarkSettings['scale'] = (int) $data['watermark_settings']['scale']; if ($data['watermark_settings']['scale'] != $data['old_watermark_settings']['scale']) { $hashChange = true; } } if (isset($data['watermark_settings']['transparent'])) { $watermarkSettings['transparent'] = (int) $data['watermark_settings']['transparent']; if ($data['watermark_settings']['transparent'] != $data['old_watermark_settings']['transparent']) { $hashChange = true; } } //----------------------------- //----------------------------- if (!empty($_FILES['watermark_image']['tmp_name'])) { $hashChange = true; $prepared['watermark_image'] = file_get_contents($_FILES['watermark_image']['tmp_name']); $varDir = new Ess_M2ePro_Model_General_VariablesDir(array('child_folder' => 'ebay/template/description/watermarks')); $watermarkPath = $varDir->getPath() . (int) $data['id'] . '.png'; if (is_file($watermarkPath)) { @unlink($watermarkPath); } } elseif (!empty($data['old_watermark_image']) && !isset($data['id'])) { $prepared['watermark_image'] = base64_decode($data['old_watermark_image']); } //----------------------------- //----------------------------- if ($hashChange) { $watermarkSettings['hashes']['previous'] = $data['old_watermark_settings']['hashes']['current']; $watermarkSettings['hashes']['current'] = substr(sha1(microtime()), 0, 5); } else { $watermarkSettings['hashes']['previous'] = $data['old_watermark_settings']['hashes']['previous']; $watermarkSettings['hashes']['current'] = $data['old_watermark_settings']['hashes']['current']; } $prepared['watermark_settings'] = json_encode($watermarkSettings); //----------------------------- return $prepared; }
public function saveAction() { if (!($post = $this->getRequest()->getPost())) { return $this->_redirect('*/adminhtml_template_description/index'); } $id = $this->getRequest()->getParam('id'); // Base prepare //-------------------- $data = array(); $keys = array('title', 'title_mode', 'title_template', 'subtitle_mode', 'subtitle_template', 'description_mode', 'description_template', 'cut_long_titles', 'hit_counter', 'editor_type', 'image_main_mode', 'image_main_attribute', 'use_supersize_images', 'watermark_mode', 'gallery_images_mode', 'gallery_images_limit', 'gallery_images_attribute', 'variation_configurable_images'); foreach ($keys as $key) { if (isset($post[$key])) { $data[$key] = $post[$key]; } } $data['title'] = strip_tags($data['title']); if ($data['watermark_mode'] == Ess_M2ePro_Model_Ebay_Template_Description::WATERMARK_MODE_YES) { if (!is_null($id)) { $tempModel = Mage::helper('M2ePro/Component_Ebay')->getModel('Template_Description'); $watermarkSettings = $tempModel->load($id)->getSettings('watermark_settings'); } else { $watermarkSettings['position'] = $post['watermark_position']; $watermarkSettings['scale'] = $post['watermark_scale']; $watermarkSettings['transparent'] = $post['watermark_transparent']; } $hashChange = false; !isset($watermarkSettings['position']) && ($watermarkSettings['position'] = -1); !isset($watermarkSettings['scale']) && ($watermarkSettings['scale'] = -1); !isset($watermarkSettings['transparent']) && ($watermarkSettings['transparent'] = -1); if (!is_null($id) && ($watermarkSettings['position'] != $post['watermark_position'] || $watermarkSettings['scale'] != $post['watermark_scale'] || $watermarkSettings['transparent'] != $post['watermark_transparent'])) { $hashChange = true; $watermarkSettings['position'] = $post['watermark_position']; $watermarkSettings['scale'] = $post['watermark_scale']; $watermarkSettings['transparent'] = $post['watermark_transparent']; } if (!empty($_FILES['watermark_image']['tmp_name'])) { $watermarkImage = file_get_contents($_FILES['watermark_image']['tmp_name']); $hashChange = true; if (!is_null($id)) { $varDir = new Ess_M2ePro_Model_General_VariablesDir(array('child_folder' => 'ebay/template/description/watermarks')); $watermarkPath = $varDir->getPath() . $id . '.png'; if (is_file($watermarkPath)) { @unlink($watermarkPath); } } } if ($hashChange) { $newHash = substr(sha1(microtime() . $data['title']), 0, 5); if (is_null($id)) { $watermarkSettings['hashes']['current'] = $newHash; $watermarkSettings['hashes']['previous'] = NULL; } else { if (isset($watermarkSettings['hashes']['current'])) { $previousHash = $watermarkSettings['hashes']['current']; } else { $previousHash = NULL; } $watermarkSettings['hashes']['previous'] = $previousHash; $watermarkSettings['hashes']['current'] = $newHash; } } } //-------------------- // Add or update model //-------------------- $model = Mage::helper('M2ePro/Component_Ebay')->getModel('Template_Description'); is_null($id) && $model->setData($data); !is_null($id) && $model->load($id)->addData($data); $id = $model->save()->getId(); if (isset($watermarkSettings)) { $model->load($id)->setSettings('watermark_settings', $watermarkSettings); $model->save(); } if (isset($watermarkImage)) { $resource = Mage::getSingleton('core/resource'); $updateConnection = $resource->getConnection('core_write'); $tableName = Mage::getResourceModel('M2ePro/Ebay_Template_Description')->getMainTable(); $updateConnection->update($tableName, array('watermark_image' => $watermarkImage), array('template_description_id = ?' => (int) $id)); } //-------------------- // Attribute sets //-------------------- $temp = Ess_M2ePro_Model_AttributeSet::OBJECT_TYPE_TEMPLATE_DESCRIPTION; $oldAttributeSets = Mage::getModel('M2ePro/AttributeSet')->getCollection()->addFieldToFilter('object_type', $temp)->addFieldToFilter('object_id', (int) $id)->getItems(); foreach ($oldAttributeSets as $oldAttributeSet) { /** @var $oldAttributeSet Ess_M2ePro_Model_AttributeSet */ $oldAttributeSet->deleteInstance(); } if (!is_array($post['attribute_sets'])) { $post['attribute_sets'] = explode(',', $post['attribute_sets']); } foreach ($post['attribute_sets'] as $newAttributeSet) { $dataForAdd = array('object_type' => Ess_M2ePro_Model_AttributeSet::OBJECT_TYPE_TEMPLATE_DESCRIPTION, 'object_id' => (int) $id, 'attribute_set_id' => (int) $newAttributeSet); Mage::getModel('M2ePro/AttributeSet')->setData($dataForAdd)->save(); } //-------------------- $this->_getSession()->addSuccess(Mage::helper('M2ePro')->__('Template was successfully saved')); $this->_redirectUrl(Mage::helper('M2ePro')->getBackUrl('list', array(), array('edit' => array('id' => $id)))); }