/** * Default operator options getter * Provides all possible operator options * * @return array */ public function getDefaultOperatorOptions() { if (null === $this->_defaultOperatorOptions) { $this->_defaultOperatorOptions = parent::getDefaultOperatorOptions(); $this->_defaultOperatorOptions['[]'] = Mage::helper('rule')->__('contains'); $this->_defaultOperatorOptions['![]'] = Mage::helper('rule')->__('does not contains'); } return $this->_defaultOperatorOptions; }
/** * Customize default operator input by type mapper for some types * @return array */ public function getDefaultOperatorInputByType() { if (null === $this->_defaultOperatorInputByType) { parent::getDefaultOperatorInputByType(); $this->_defaultOperatorInputByType['numeric'] = array('==', '!=', '>=', '>', '<=', '<'); $this->_defaultOperatorInputByType['string'] = array('==', '!=', '{}', '!{}'); } return $this->_defaultOperatorInputByType; }
/** * Validate Address Rule Condition * * @param Varien_Object|Mage_Sales_Model_Order|Mage_Sales_Model_Quote $object * @return bool */ public function validate(Varien_Object $object) { /* @var $object Mage_Sales_Model_Order|Mage_Sales_Model_Quote */ //Get infos from billing address $toValidate = new Varien_Object(); $customer_id = $object->getCustomerId(); $orders_count = Mage::getModel('sales/order')->getCollection()->addAttributeToFilter('customer_id', $customer_id)->count(); $toValidate->setOrdersCount($orders_count); $toValidate->setCustomerIsGuest(is_null($object->getCustomerIsGuest()) ? 0 : $object->getCustomerIsGuest()); $toValidate->setDiffAddresses($this->_addressesesAreDifferent($object)); $toValidate->setCustomerGroup($object->getCustomerGroupId()); return parent::validate($toValidate); }
/** * Overwrite parent method to add new operators * * @param array $arr * * @return MatheusGontijo_EasyShippingRules_Model_Rule_Condition_Product|Mage_CatalogRule_Model_Rule_Condition_Product */ public function loadArray($arr) { $isBetweenOperator = isset($arr['operator']) && in_array($arr['operator'], array('><', '<>')); if (isset($arr['value']) && $isBetweenOperator) { $valueExploded = explode('-', $arr['value']); if (isset($valueExploded[0]) && isset($valueExploded[1])) { $arr['value'] = Mage::app()->getLocale()->getNumber($valueExploded[0]) . '-' . Mage::app()->getLocale()->getNumber($valueExploded[1]); return Mage_Rule_Model_Condition_Abstract::loadArray($arr); } else { $arr['value'] = ''; } } return parent::loadArray($arr); }
/** * Overwrite parent method to update label * * @return array */ public function getDefaultOperatorOptions() { if (!$this->_defaultOperatorOptions) { $defaultOperatorOptions = parent::getDefaultOperatorOptions(); if (isset($defaultOperatorOptions['=='])) { $defaultOperatorOptions['=='] = Mage::helper('easyshippingrules')->__('is valid'); } if (isset($defaultOperatorOptions['!='])) { $defaultOperatorOptions['!='] = Mage::helper('easyshippingrules')->__('is not valid'); } $this->_defaultOperatorOptions = $defaultOperatorOptions; } return $this->_defaultOperatorOptions; }
public function getNewChildSelectOptions() { $productCondition = Mage::getModel('easyshippingrules/rule_condition_product'); $productAttributes = $productCondition->loadAttributeOptions()->getAttributeOption(); $pAttributes = array(); $cAttributes = array(); foreach ($productAttributes as $code => $label) { if (strpos($code, 'quote_item_') === 0) { $cAttributes[] = array('value' => 'easyshippingrules/rule_condition_product|' . $code, 'label' => $label); } else { $pAttributes[] = array('value' => 'easyshippingrules/rule_condition_product|' . $code, 'label' => $label); } } $conditions = Mage_Rule_Model_Condition_Abstract::getNewChildSelectOptions(); $conditions = array_merge_recursive($conditions, array(array('label' => Mage::helper('easyshippingrules')->__('Cart Item Attribute'), 'value' => $cAttributes), array('label' => Mage::helper('easyshippingrules')->__('Product Attribute'), 'value' => $pAttributes))); return $conditions; }
public function validateAttribute($validatedValue) { $op = $this->getOperatorForValidate(); $value = $this->getValueParsed(); if ($op == '{}' || $op == '!{}') { $result = false; if (is_array($validatedValue) && is_scalar($value)) { foreach ($validatedValue as $item) { if (stripos($item, $value) !== false) { $result = true; break; } } } if ($op == '!{}') { $result = !$result; } return $result; } return parent::validateAttribute($validatedValue); }
/** * Validate product attrbute value for condition * * @param Varien_Object $object Object * @return boolean True/False */ public function validate(Varien_Object $object) { $attrCode = $this->getAttribute(); if ('category_ids' == $attrCode) { return $this->validateAttribute($object->getAvailableInCategories()); } 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; $oldAttrValue = $object->hasData($attrCode) ? $object->getData($attrCode) : null; foreach ($this->_entityAttributeValues[$object->getId()] as $storeId => $value) { $object->setData($attrCode, $value); $result = parent::validate($object); if ($result) { break; } } if (null === $oldAttrValue) { $object->unsetData($attrCode); } else { $object->setData($attrCode, $oldAttrValue); } return (bool) $result; } }
/** * Validate Address Rule Condition * * @param Varien_Object $object * * @return bool */ public function validate(Varien_Object $object) { $objectForParent = $object; $adressAttributes = array('weight', 'shipping_method', 'postcode', 'region', 'region_id', 'country_id'); if ($this->getAttribute() == 'method') { $objectForParent = $object->getPayment(); } if (in_array($this->getAttribute(), $adressAttributes)) { if ($object->isVirtual()) { $objectForParent = $object->getBillingAddress(); } else { $objectForParent = $object->getShippingAddress(); } try { $countryId = $objectForParent->getCountryId(); if (!is_null($countryId)) { $numOfCountryRegions = count(Mage::getModel('directory/country')->loadByCode($countryId)->getRegions()->getData()); if ($numOfCountryRegions == 0) { $objectForParent->setRegionId('0'); } } } catch (Exception $e) { Mage::log('Exception: ' . $e->getMessage() . ' in ' . __CLASS__ . ' on line ' . __LINE__); } } return parent::validate($objectForParent); }
/** * Validate Address Rule Condition * * @param Varien_Object $object * @return bool */ public function validate(Varien_Object $object) { $address = $object; if (!$address instanceof Mage_Sales_Model_Quote_Address) { if ($object->getQuote()->isVirtual()) { $address = $object->getQuote()->getBillingAddress(); } else { $address = $object->getQuote()->getShippingAddress(); } } return parent::validate($address); }
public function validateAttribute($validatedValue) { if (is_object($validatedValue)) { return false; } if (is_string($validatedValue)) { $validatedValue = strtoupper($validatedValue); } /** * Condition attribute value */ $value = $this->getValueParsed(); if (is_string($value)) { $value = strtoupper($value); } /** * Comparison operator */ $op = $this->getOperatorForValidate(); // if operator requires array and it is not, or on opposite, return false if ($this->_isArrayOperatorType() xor is_array($value)) { return false; } $result = false; switch ($op) { case '{%': if (!is_scalar($validatedValue)) { return false; } else { $result = substr($validatedValue, 0, strlen($value)) == $value; } break; case '%}': if (!is_scalar($validatedValue)) { return false; } else { $result = substr($validatedValue, -strlen($value)) == $value; } break; default: return parent::validateAttribute($validatedValue); break; } return $result; }
/** * Validate product * * @param Varien_Object $object * @return bool */ protected function _validateProduct($object) { return Mage_Rule_Model_Condition_Abstract::validate($object); }
/** * Validate Address Rule Condition * * @param Varien_Object $object * @return bool */ public function validate(Varien_Object $object) { $address = $object; if (!$address instanceof Mage_Sales_Model_Quote_Address) { if ($object->getQuote()->isVirtual()) { $address = $object->getQuote()->getBillingAddress(); } else { $address = $object->getQuote()->getShippingAddress(); } } if ('payment_method' == $this->getAttribute() && !$address->hasPaymentMethod()) { $address->setPaymentMethod($object->getQuote()->getPayment()->getMethod()); } return parent::validate($address); }
public function validate(Varien_Object $object) { $customerId = $object->getQuote()->getCustomerId(); if ($customerId) { $customer = Mage::getModel('customer/customer')->load($customerId); $datas = $customer->getData(); return parent::validate($datas); } return false; //if ($object instanceof Mage_Sales_Model_Order && $order->getId()) /* if ($datas = $object->getData()){ return parent::validate($object); } else { return false; }*/ }
public function validate(Varien_Object $order) { if ($this->getAttribute() == 'method') { return parent::validate($order->getPayment()); } if (in_array($this->getAttribute(), array('postcode', 'region', 'region_id', 'country_id'))) { if ($order->getIsVirtual()) { $address = $order->getBillingAddress(); } else { $address = $order->getShippingAddress(); } $countryId = $address->getCountryId(); if (!is_null($countryId)) { try { $regions = Mage::getModel('directory/country')->loadByCode($countryId)->getRegions()->getData(); } catch (Exception $e) { Mage::log($e->getMessage()); } if (count($regions) == 0) { $address->setRegionId('0'); } } return parent::validate($address); } return parent::validate($order); }
/** * Validate Address Rule Condition * * @param Varien_Object $object * @return bool */ public function validate(Varien_Object $object) { $customer = $object; if (!$customer instanceof Mage_Customer_Model_Customer) { $customer = $object->getQuote()->getCustomer(); $attr = $this->getAttribute(); if ($attr == 'membership_days') { $customer->setData($attr, Mage::helper('amrules')->getMembership($customer->getCreatedAt())); } if ($attr != 'entity_id' && !$customer->getData($attr)) { $address = $object->getQuote()->getBillingAddress(); $customer->setData($attr, $address->getData($attr)); } } return parent::validate($customer); }
/** * Validate product attrbute value for condition * * @param Varien_Object $object * @return bool */ public function validate(Varien_Object $object) { $attrCode = $this->getAttribute(); switch ($attrCode) { case 'is_salable': $value = $object->isSalable(); $object->setIsSalable($value); return $this->validateAttribute($value); break; case 'status_parent': $parentProduct = Mage::getSingleton('feedexport/feed_generator_pattern_product')->getParentProduct($object); $value = $parentProduct->getStatus(); return $this->validateAttribute($value); break; case 'image': case 'small_image': case 'thumbnail': $value = $object->getData($attrCode); if ('' === $value || 'no_selection' === $value) { $value = null; } return $this->validateAttribute($value); break; case 'category_ids': return $this->validateAttribute($object->getAvailableInCategories()); break; case 'qty': if ($object->getTypeId() == 'configurable') { $totalQty = 0; $childs = $object->getTypeInstance()->getChildrenIds($object->getId()); $childs = Mage::getModel('catalog/product')->getCollection()->addFieldToFilter('entity_id', array('in' => $childs[0]))->joinField('qty', 'cataloginventory/stock_item', 'qty', 'product_id = entity_id', '{{table}}.stock_id = 1', 'left'); foreach ($childs as $child) { # if product enabled if ($child->getStatus() == 1) { $totalQty += $child->getQty(); } } return $this->validateAttribute($totalQty); } else { $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($object->getId()); return $this->validateAttribute($stockItem->getQty()); } break; case 'is_in_stock': $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($object->getId()); return $this->validateAttribute($stockItem->getIsInStock()); break; case 'manage_stock': $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($object->getId()); $m = 0; if ($stockItem->getManageStock()) { $m = 1; } return $this->validateAttribute($m); break; case 'image_size': case 'small_image_size': case 'thumbnail_size': $imageCode = str_replace('_size', '', $attrCode); $imagePath = $object->getData($imageCode); $path = Mage::getBaseDir('media') . DS . 'catalog/product' . $imagePath; $size = 0; if (file_exists($path) && is_file($path)) { $size = filesize($path); } return $this->validateAttribute($size); break; case 'php': $object = $object->load($object->getId()); extract($object->getData()); $expr = 'return ' . $this->getValue() . ';'; $value = eval($expr); if ($this->getOperator() == '==') { return $value; } else { return !$value; } break; default: if (!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 $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; } break; } }
public function __construct($data = array()) { $this->_initialData = $data; parent::__construct(); }
/** * @param Varien_Object $object * @return bool */ public function validate(Varien_Object $object) { $address = $object; if (!$address instanceof Mage_Sales_Model_Quote_Address) { if ($object->getQuote()->isVirtual()) { $address = $object->getQuote()->getBillingAddress(); } else { $address = $object->getQuote()->getShippingAddress(); } } $address->setCustomerGroupCondition($this->getValue()); return parent::validate($address); }
public function validate(Varien_Object $object) { /*$customerId = $object->getQuote()->getCustomerId(); if ($customerId){ $customer = Mage::getModel('customer/customer')->load($customerId); $address = $customer->getPrimaryBillingAddress(); } else { return false; }*/ //Mage_Checkout_Model_Cart //if ($object instanceof Mage_Sales_Model_Order && $order->getId()) //print_r(Mage::helper('checkout/cart')->getCart()); $customerId = $object->getQuote()->getCustomerId(); if ($customerId) { $customer = Mage::getModel('customer/customer')->load($customerId); if ($address = $object->getPrimaryBillingAddress()) { return parent::validate($address); } } return false; /*if ($address = $object->getPrimaryBillingAddress()){ return parent::validate($address); } else { return false; }*/ }
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); }
/** * Validate Address Rule Condition * * @param Varien_Object $object * @return bool */ public function validate(Varien_Object $object) { $customer = $object; if (!$customer instanceof Mage_Customer_Model_Customer) { $customer = $object->getQuote()->getCustomer(); $attr = $this->getAttribute(); if ($attr != 'entity_id' && !$customer->getData($attr)) { $address = $object->getQuote()->getBillingAddress(); $customer->setData($attr, $address->getData($attr)); } } return parent::validate($customer); }
/** * Specify allowed comparison operators * * @return Enterprise_CustomerSegment_Model_Segment_Condition_Segment */ public function loadOperatorOptions() { parent::loadOperatorOptions(); $this->setOperatorOption(array('==' => Mage::helper('enterprise_customersegment')->__('matches'), '!=' => Mage::helper('enterprise_customersegment')->__('does not match'), '()' => Mage::helper('enterprise_customersegment')->__('is one of'), '!()' => Mage::helper('enterprise_customersegment')->__('is not one of'))); return $this; }
public function validate(Varien_Object $object) { if ($this->getAttribute() == 'sku') { $sku = explode(',', $this->getValue()); foreach ($sku as $skuA) { foreach ($object->getSku() as $skuB) { if ($skuA == $skuB) { return true; } } } return false; } if ($this->getAttribute() == 'category') { if (is_array($object->getCategories())) { foreach ($object->getCategories() as $key => $value) { $result = $this->validateAttribute($value); if ($result) { return $result; } } } else { return $this->validateAttribute($object->getCategories()); } } return parent::validate($object); }
/** * Validate product attrbute value for condition * * @param Varien_Object $object * @return bool */ public function validate(Varien_Object $object) { $attrCode = $this->getAttribute(); if (!$object instanceof Mage_Catalog_Model_Product) { $object = Mage::getModel('catalog/product')->load($object->getId()); } if ('category_ids' == $attrCode) { return $this->validateAttribute($object->getCategoryIds()); } elseif (!isset($this->_entityAttributeValues[$object->getId()])) { if (!$object->getResource()) { return false; } $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; } }
public function getValueElement() { $element = parent::getValueElement(); switch ($this->getAttributeObject()->getFrontendInput()) { case 'date': $element->setImage(Mage::getDesign()->getSkinUrl('images/grid-cal.gif')); break; } return $element; }
public function getAttributeElement() { $element = parent::getAttributeElement(); $element->setShowAsText(true); return $element; }
/** * Prepare select for condition * * @param int $storeId * @param Mage_Rule_Model_Condition_Abstract $condition * @return Varien_Db_Select */ public function getProductFlatSelect($storeId, $condition) { $select = $this->_getReadAdapter()->select(); $select->from(array('p' => $this->getTable('catalog/product')), array(new Zend_Db_Expr('DISTINCT p.entity_id')))->joinInner(array('cpf' => $this->getTable('catalog/product_flat') . '_' . $storeId), 'cpf.entity_id = p.entity_id', array())->joinLeft(array('ccp' => $this->getTable('catalog/category_product')), 'ccp.product_id = p.entity_id', array()); $where = $condition->prepareConditionSql(); if (!empty($where)) { $select->where($where); } return $select; }
public function asStringRecursive($level = 0) { $str = parent::asStringRecursive($level); foreach ($this->getConditions() as $cond) { $str .= "\n" . $cond->asStringRecursive($level + 1); } return $str; }
/** * Validate Address Rule Condition * * @param Varien_Object|Mage_Sales_Model_Order|Mage_Sales_Model_Quote $object * @return bool */ public function validate(Varien_Object $object) { $quote = $object; if (!$object instanceof Mage_Sales_Model_Quote) { $quote = Mage::getModel('sales/quote')->load($object->getQuoteId()); } $address = $quote->getBillingAddress(); //Get infos from billing address $toValidate = new Varien_Object(); $toValidate->setBillingPostcode($address->getPostcode()); $toValidate->setBillingRegion($address->getRegion()); $toValidate->setBillingRegionId($address->getRegionId()); $toValidate->setBillingCountryId($address->getCountryId()); if (!$quote->isVirtual()) { //Get infos from shipping address $address = $quote->getShippingAddress(); } $toValidate->setBaseSubtotal($address->getBaseSubtotal()); $toValidate->setBaseGrandTotal($address->getBaseGrandTotal()); $toValidate->setWeight($address->getWeight()); $toValidate->setShippingMethod($address->getShippingMethod()); $toValidate->setTotalQty($quote->getItemsQty()); $toValidate->setBaseCurrencyCode($quote->getBaseCurrencyCode()); $toValidate->setCreatedAt($this->_getFormatCreatedAt($object)); return parent::validate($toValidate); }