protected function _beforeSave() { if ($this->getBackendType() == 'datetime') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_datetime'); } if (!$this->getFrontendModel()) { $this->setFrontendModel('eav/entity_attribute_frontend_datetime'); } } if ($this->getBackendType() == 'gallery') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_media'); } } if ($this->getFrontendInput() == 'price') { if (!$this->getBackendModel()) { $this->setBackendModel('catalog/product_attribute_backend_price'); } } return parent::_beforeSave(); }
/** * Prepare data for save * * @return Mage_Eav_Model_Entity_Attribute * @throws Mage_Eav_Exception */ protected function _beforeSave() { /** * Check for maximum attribute_code length */ if (isset($this->_data['attribute_code']) && !Zend_Validate::is($this->_data['attribute_code'], 'StringLength', array('max' => self::ATTRIBUTE_CODE_MAX_LENGTH))) { throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('Maximum length of attribute code must be less then %s symbols', self::ATTRIBUTE_CODE_MAX_LENGTH)); } $defaultValue = $this->getDefaultValue(); $hasDefaultValue = (string) $defaultValue != ''; if ($this->getBackendType() == 'decimal' && $hasDefaultValue) { $locale = Mage::app()->getLocale()->getLocaleCode(); if (!Zend_Locale_Format::isNumber($defaultValue, array('locale' => $locale))) { throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('Invalid default decimal value')); } try { $filter = new Zend_Filter_LocalizedToNormalized(array('locale' => Mage::app()->getLocale()->getLocaleCode())); $this->setDefaultValue($filter->filter($defaultValue)); } catch (Exception $e) { throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('Invalid default decimal value')); } } if ($this->getBackendType() == 'datetime') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_datetime'); } if (!$this->getFrontendModel()) { $this->setFrontendModel('eav/entity_attribute_frontend_datetime'); } // save default date value as timestamp if ($hasDefaultValue) { $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT); try { $defaultValue = Mage::app()->getLocale()->date($defaultValue, $format, null, false)->toValue(); $this->setDefaultValue($defaultValue); } catch (Exception $e) { throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('Invalid default date')); } } } if ($this->getBackendType() == 'gallery') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_media'); } } return parent::_beforeSave(); }
/** * Prepare data for save * * @return Mage_Eav_Model_Entity_Attribute */ protected function _beforeSave() { // prevent overriding product data if (isset($this->_data['attribute_code']) && Mage::getModel('Mage_Catalog_Model_Product')->isReservedAttribute($this)) { throw Mage::exception('Mage_Eav', Mage::helper('Mage_Eav_Helper_Data')->__('The attribute code \'%s\' is reserved by system. Please try another attribute code', $this->_data['attribute_code'])); } /** * Check for maximum attribute_code length */ if (isset($this->_data['attribute_code']) && !Zend_Validate::is($this->_data['attribute_code'], 'StringLength', array('max' => self::ATTRIBUTE_CODE_MAX_LENGTH))) { throw Mage::exception('Mage_Eav', Mage::helper('Mage_Eav_Helper_Data')->__('Maximum length of attribute code must be less then %s symbols', self::ATTRIBUTE_CODE_MAX_LENGTH)); } $defaultValue = $this->getDefaultValue(); $hasDefaultValue = (string) $defaultValue != ''; if ($this->getBackendType() == 'decimal' && $hasDefaultValue) { if (!Zend_Locale_Format::isNumber($defaultValue, array('locale' => Mage::app()->getLocale()->getLocaleCode()))) { throw Mage::exception('Mage_Eav', Mage::helper('Mage_Eav_Helper_Data')->__('Invalid default decimal value')); } try { $filter = new Zend_Filter_LocalizedToNormalized(array('locale' => Mage::app()->getLocale()->getLocaleCode())); $this->setDefaultValue($filter->filter($defaultValue)); } catch (Exception $e) { throw Mage::exception('Mage_Eav', Mage::helper('Mage_Eav_Helper_Data')->__('Invalid default decimal value')); } } if ($this->getBackendType() == 'datetime') { if (!$this->getBackendModel()) { $this->setBackendModel('Mage_Eav_Model_Entity_Attribute_Backend_Datetime'); } if (!$this->getFrontendModel()) { $this->setFrontendModel('Mage_Eav_Model_Entity_Attribute_Frontend_Datetime'); } // save default date value as timestamp if ($hasDefaultValue) { $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT); try { $defaultValue = Mage::app()->getLocale()->date($defaultValue, $format, null, false)->toValue(); $this->setDefaultValue($defaultValue); } catch (Exception $e) { throw Mage::exception('Mage_Eav', Mage::helper('Mage_Eav_Helper_Data')->__('Invalid default date')); } } } if ($this->getBackendType() == 'gallery') { if (!$this->getBackendModel()) { $this->setBackendModel('Mage_Eav_Model_Entity_Attribute_Backend_Default'); } } return parent::_beforeSave(); }
protected function _beforeSave() { // prevent overriding product data if (isset($this->_data['attribute_code']) && AO::getModel('catalog/product')->isReservedAttribute($this)) { AO::throwException(AO::helper('eav')->__('The attribute code \'%s\' is reserved by system. Please, try another attribute code.', $this->_data['attribute_code'])); } // prevent changing attribute scope, if used in configurable products if (isset($this->_origData['is_global'])) { if (!isset($this->_data['is_global'])) { AO::throwException('0_o'); } if ($this->_data['is_global'] != $this->_origData['is_global'] && $this->_getResource()->isUsedBySuperProducts($this)) { AO::throwException(AO::helper('eav')->__('Scope must not be changed, because the attribute is used in configurable products.')); } } if ($this->getBackendType() == 'datetime') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_datetime'); } if (!$this->getFrontendModel()) { $this->setFrontendModel('eav/entity_attribute_frontend_datetime'); } // save default date value as timestamp if ($defaultValue = $this->getDefaultValue()) { $format = AO::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT); $this->setDefaultValue(AO::app()->getLocale()->date($defaultValue, $format, null, false)->toValue()); } } if ($this->getBackendType() == 'gallery') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_media'); } } if ($this->getFrontendInput() == 'price') { if (!$this->getBackendModel()) { $this->setBackendModel('catalog/product_attribute_backend_price'); } } return parent::_beforeSave(); }
protected function _beforeSave() { // prevent overriding product data if (isset($this->_data['attribute_code']) && Mage::getModel('catalog/product')->isReservedAttribute($this)) { Mage::throwException(Mage::helper('eav')->__('The attribute code \'%s\' is reserved by system. Please try another attribute code.', $this->_data['attribute_code'])); } $defaultValue = $this->getDefaultValue(); $hasDefaultValue = (string) $defaultValue != ''; if ($this->getBackendType() == 'decimal' && $hasDefaultValue) { if (!Zend_Locale_Format::isNumber($defaultValue, array('locale' => Mage::app()->getLocale()->getLocaleCode()))) { throw new Exception('Invalid default decimal value.'); } try { $filter = new Zend_Filter_LocalizedToNormalized(array('locale' => Mage::app()->getLocale()->getLocaleCode())); $this->setDefaultValue($filter->filter($defaultValue)); } catch (Exception $e) { throw new Exception('Invalid default decimal value.'); } } if ($this->getBackendType() == 'datetime') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_datetime'); } if (!$this->getFrontendModel()) { $this->setFrontendModel('eav/entity_attribute_frontend_datetime'); } // save default date value as timestamp if ($hasDefaultValue) { $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT); try { $defaultValue = Mage::app()->getLocale()->date($defaultValue, $format, null, false)->toValue(); $this->setDefaultValue($defaultValue); } catch (Exception $e) { throw new Exception('Invalid default date.'); } } } if ($this->getBackendType() == 'gallery') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_media'); } } return parent::_beforeSave(); }
protected function _beforeSave() { // prevent overriding product data if (isset($this->_data['attribute_code']) && Mage::getModel('catalog/product')->isReservedAttribute($this)) { Mage::throwException(Mage::helper('eav')->__('The attribute code \'%s\' is reserved by system. Please, try another attribute code.', $this->_data['attribute_code'])); } if ($this->getBackendType() == 'datetime') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_datetime'); } if (!$this->getFrontendModel()) { $this->setFrontendModel('eav/entity_attribute_frontend_datetime'); } // save default date value as timestamp if ($defaultValue = $this->getDefaultValue()) { $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT); try { $defaultValue = Mage::app()->getLocale()->date($defaultValue, $format, null, false)->toValue(); $this->setDefaultValue($defaultValue); } catch (Exception $e) { throw new Exception("Invalid default date."); } } } if ($this->getBackendType() == 'gallery') { if (!$this->getBackendModel()) { $this->setBackendModel('eav/entity_attribute_backend_media'); } } return parent::_beforeSave(); }