public function beforeSave($object) { $this->_isInVendorEdit = $object->getData('_edit_in_vendor'); $this->_allowUseRenamedImage = $object->getData('_allow_use_renamed_image'); parent::beforeSave($object); if ($this->_isInVendorEdit && !Mage::getSingleton('udprod/source')->isMediaCfgPerOptionHidden() && !Mage::getSingleton('udprod/source')->isCfgUploadImagesSimple() && !Mage::getSingleton('udprod/source')->isMediaCfgShowExplicit()) { $attrCode = $this->getAttribute()->getAttributeCode(); $value = $object->getData($attrCode); if (is_array($value) && is_array($value['images'])) { $useImage = null; foreach ($value['images'] as $img) { if (isset($img['super_attribute']) && is_array($img['super_attribute']) && isset($img['super_attribute']['main']) && !@$img['removed']) { $useImage = $img; break; } } if ($useImage) { foreach ($object->getMediaAttributes() as $mediaAttribute) { $mediaAttrCode = $mediaAttribute->getAttributeCode(); $attrData = $object->getData($mediaAttrCode); $object->setData($mediaAttrCode, @$useImage['file']); $object->setData($mediaAttrCode . '_label', @$useImage['label']); } } } } $this->_isInVendorEdit = false; $this->_allowUseRenamedImage = false; return $this; }
/** * @covers Mage_Catalog_Model_Product_Attribute_Backend_Media::beforeSave * @covers Mage_Catalog_Model_Product_Attribute_Backend_Media::getRenamedImage */ public function testBeforeSave() { $product = new Mage_Catalog_Model_Product(); $product->setData('media_gallery', array('images' => array('image' => array('file' => 'magento_image.jpg')))); $this->_model->beforeSave($product); $this->assertStringStartsWith('./magento_image', $product->getData('media_gallery/images/image/new_file')); $product->setIsDuplicate(true); $product->setData('media_gallery', array('images' => array('image' => array('value_id' => '100', 'file' => 'magento_image.jpg')))); $this->_model->beforeSave($product); $this->assertStringStartsWith('./magento_image', $product->getData('media_gallery/duplicate/100')); /* affect of beforeSave */ $this->assertNotEquals('magento_image.jpg', $this->_model->getRenamedImage('magento_image.jpg')); $this->assertEquals('test.jpg', $this->_model->getRenamedImage('test.jpg')); }
/** * Before saving the object we store the gallery data into a temporary field to avoid * the gallery is saved as a standard attribute * * @param Mage_Catalog_Model_Product $object The saved product * * @return void othing is returned by this method */ public function beforeSave($object) { parent::beforeSave($object); $attrCode = $this->getAttribute()->getAttributeCode(); $object->setData($attrCode . '_tmp', $object->getData($attrCode)); $object->unsetData($attrCode); }