Example #1
0
 /**
  * Prepare multiselect attribute value
  *
  * @param mixed $value
  * @param Varien_Object $object
  * @return mixed
  */
 protected function _prepareMultiselectValue($value, $object)
 {
     $attribute = $object->getResource()->getAttribute($this->getAttribute());
     if ($attribute && $attribute->getFrontendInput() == 'multiselect') {
         $value = strlen($value) ? explode(',', $value) : array();
     }
     return $value;
 }
Example #2
0
 /**
  * Check if increment id already exists, unset it if this is the case
  *
  * @param Varien_Object $object
  * @return SSE_AutoSku_Model_Entity_Attribute_Backend_Increment
  */
 protected function checkDuplicateValue($object)
 {
     /* @var $resource Mage_Eav_Model_Entity_Abstract */
     $resource = $object->getResource();
     $code = $this->getAttribute()->getName();
     /* @var $adapter Varien_Db_Adapter_Interface */
     $adapter = $object->getResource()->getWriteConnection();
     $bind = [$code => $object->getIncrementId()];
     /*
      * increment id should be a static attribute (field in entity table), so we access it directly
      */
     $select = $adapter->select()->from($resource->getEntityTable(), [$resource->getEntityIdField()])->where("{$code} = :{$code}");
     $result = $adapter->fetchOne($select, $bind);
     if ($result) {
         $object->setIncrementId(null);
     }
     return $this;
 }
Example #3
0
 /**
  * Validate product attrbute value for condition
  *
  * @param Varien_Object $object
  * @return bool
  */
 public function validate(Varien_Object $object)
 {
     $attrCode = $this->getAttribute();
     if ('category_ids' == $attrCode) {
         return $this->validateAttribute($object->getAvailableInCategories());
     } elseif ('product_ids' == $attrCode) {
         return $this->validateAttribute($object->getId());
     } elseif (!isset($this->_entityAttributeValues[$object->getId()])) {
         $attr = $object->getResource()->getAttribute($attrCode);
         if ($attr && $attr->getBackendType() == 'datetime' && !is_int($this->getValue())) {
             $this->setValue(strtotime($this->getValue()));
             $value = strtotime($object->getData($attrCode));
             return $this->validateAttribute($value);
         }
         if ($attr && $attr->getFrontendInput() == 'multiselect') {
             $value = $object->getData($attrCode);
             $value = strlen($value) ? explode(',', $value) : array();
             return $this->validateAttribute($value);
         }
         return parent::validate($object);
     } else {
         $result = false;
         // any valid value will set it to TRUE
         // remember old attribute state
         $oldAttrValue = $object->hasData($attrCode) ? $object->getData($attrCode) : null;
         foreach ($this->_entityAttributeValues[$object->getId()] as $storeId => $value) {
             $attr = $object->getResource()->getAttribute($attrCode);
             if ($attr && $attr->getBackendType() == 'datetime') {
                 $value = strtotime($value);
             } else {
                 if ($attr && $attr->getFrontendInput() == 'multiselect') {
                     $value = strlen($value) ? explode(',', $value) : array();
                 }
             }
             $object->setData($attrCode, $value);
             $result |= parent::validate($object);
             if ($result) {
                 break;
             }
         }
         if (is_null($oldAttrValue)) {
             $object->unsetData($attrCode);
         } else {
             $object->setData($attrCode, $oldAttrValue);
         }
         return (bool) $result;
     }
 }
Example #4
0
 public function validate(Varien_Object $object)
 {
     $attr = $object->getResource()->getAttribute($this->getAttribute());
     if ($attr && $attr->getBackendType() == 'datetime' && !is_int($this->getValue())) {
         $this->setValue(strtotime($this->getValue()));
         $value = strtotime($object->getData($this->getAttribute()));
         return $this->validateAttribute($value);
     }
     if ($this->getAttribute() == 'category_ids') {
         return $this->validateAttribute($object->getAvailableInCategories());
     }
     if ($attr && $attr->getFrontendInput() == 'multiselect') {
         $value = $object->getData($this->getAttribute());
         if (!strlen($value)) {
             $value = array();
         } else {
             $value = split(',', $value);
         }
         return $this->validateAttribute($value);
     }
     return parent::validate($object);
 }