| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Rule/Model/Condition/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Rule
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Mage_Rule_Model_Condition_Combine extends Mage_Rule_Model_Condition_Abstract
{
public function __construct()
{
parent::__construct();
$this->setType('rule/condition_combine')
->setAggregator('all')
->setValue(true)
->setConditions(array())
->setActions(array());
$this->loadAggregatorOptions();
if ($options = $this->getAggregatorOptions()) {
foreach ($options as $aggregator=>$dummy) { $this->setAggregator($aggregator); break; }
}
}
/* start aggregator methods */
public function loadAggregatorOptions()
{
$this->setAggregatorOption(array(
'all' => Mage::helper('rule')->__('ALL'),
'any' => Mage::helper('rule')->__('ANY'),
));
return $this;
}
public function getAggregatorSelectOptions()
{
$opt = array();
foreach ($this->getAggregatorOption() as $k=>$v) {
$opt[] = array('value'=>$k, 'label'=>$v);
}
return $opt;
}
public function getAggregatorName()
{
return $this->getAggregatorOption($this->getAggregator());
}
public function getAggregatorElement()
{
if (is_null($this->getAggregator())) {
foreach ($this->getAggregatorOption() as $k=>$v) {
$this->setAggregator($k);
break;
}
}
return $this->getForm()->addField($this->getPrefix().'__'.$this->getId().'__aggregator', 'select', array(
'name'=>'rule['.$this->getPrefix().']['.$this->getId().'][aggregator]',
'values'=>$this->getAggregatorSelectOptions(),
'value'=>$this->getAggregator(),
'value_name'=>$this->getAggregatorName(),
))->setRenderer(Mage::getBlockSingleton('rule/editable'));
}
/* end aggregator methods */
public function loadValueOptions()
{
$this->setValueOption(array(
1 => Mage::helper('rule')->__('TRUE'),
0 => Mage::helper('rule')->__('FALSE'),
));
return $this;
}
public function addCondition($condition)
{
$condition->setRule($this->getRule());
$condition->setObject($this->getObject());
$condition->setPrefix($this->getPrefix());
$conditions = $this->getConditions();
$conditions[] = $condition;
if (!$condition->getId()) {
$condition->setId($this->getId().'--'.sizeof($conditions));
}
$this->setData($this->getPrefix(), $conditions);
return $this;
}
public function getValueElementType()
{
return 'select';
}
/**
* Returns array containing conditions in the collection
*
* Output example:
* array(
* 'type'=>'combine',
* 'operator'=>'ALL',
* 'value'=>'TRUE',
* 'conditions'=>array(
* {condition::asArray},
* {combine::asArray},
* {quote_item_combine::asArray}
* )
* )
*
* @return array
*/
public function asArray(array $arrAttributes = array())
{
$out = parent::asArray();
$out['aggregator'] = $this->getAggregator();
foreach ($this->getConditions() as $condition) {
$out['conditions'][] = $condition->asArray();
}
return $out;
}
public function asXml($containerKey='conditions', $itemKey='condition')
{
$xml = "<aggregator>".$this->getAggregator()."</aggregator>"
."<value>".$this->getValue()."</value>"
."<$containerKey>";
foreach ($this->getConditions() as $condition) {
$xml .= "<$itemKey>".$condition->asXml()."</$itemKey>";
}
$xml .= "</$containerKey>";
return $xml;
}
public function loadArray($arr, $key='conditions')
{
$this->setAggregator(isset($arr['aggregator']) ? $arr['aggregator']
: (isset($arr['attribute']) ? $arr['attribute'] : null))
->setValue(isset($arr['value']) ? $arr['value']
: (isset($arr['operator']) ? $arr['operator'] : null));
if (!empty($arr[$key]) && is_array($arr[$key])) {
foreach ($arr[$key] as $condArr) {
try {
$cond = @Mage::getModel($condArr['type']);
if (!empty($cond)) {
$this->addCondition($cond);
$cond->loadArray($condArr, $key);
}
} catch (Exception $e) {
Mage::logException($e);
}
}
}
return $this;
}
public function loadXml($xml)
{
if (is_string($xml)) {
$xml = simplexml_load_string($xml);
}
$arr = parent::loadXml($xml);
foreach ($xml->conditions->children() as $condition) {
$arr['conditions'] = parent::loadXml($condition);
}
$this->loadArray($arr);
return $this;
}
public function asHtml()
{
$html = $this->getTypeElement()->getHtml().
Mage::helper('rule')->__("If %s of these conditions are %s:",
$this->getAggregatorElement()->getHtml(),
$this->getValueElement()->getHtml()
);
if ($this->getId()!='1') {
$html.= $this->getRemoveLinkHtml();
}
return $html;
}
public function getNewChildElement()
{
return $this->getForm()->addField($this->getPrefix().'__'.$this->getId().'__new_child', 'select', array(
'name'=>'rule['.$this->getPrefix().']['.$this->getId().'][new_child]',
'values'=>$this->getNewChildSelectOptions(),
'value_name'=>$this->getNewChildName(),
))->setRenderer(Mage::getBlockSingleton('rule/newchild'));
}
public function asHtmlRecursive()
{
$html = $this->asHtml().'<ul id="'.$this->getPrefix().'__'.$this->getId().'__children" class="rule-param-children">';
foreach ($this->getConditions() as $cond) {
$html .= '<li>'.$cond->asHtmlRecursive().'</li>';
}
$html .= '<li>'.$this->getNewChildElement()->getHtml().'</li></ul>';
return $html;
}
public function asString($format='')
{
$str = Mage::helper('rule')->__("If %s of these conditions are %s:", $this->getAggregatorName(), $this->getValueName());
return $str;
}
public function asStringRecursive($level=0)
{
$str = parent::asStringRecursive($level);
foreach ($this->getConditions() as $cond) {
$str .= "\n".$cond->asStringRecursive($level+1);
}
return $str;
}
public function validate(Varien_Object $object)
{
if (!$this->getConditions()) {
return true;
}
$all = $this->getAggregator() === 'all';
$true = (bool)$this->getValue();
foreach ($this->getConditions() as $cond) {
$validated = $cond->validate($object);
if ($all && $validated !== $true) {
return false;
} elseif (!$all && $validated === $true) {
return true;
}
}
return $all ? true : false;
}
public function setJsFormObject($form)
{
$this->setData('js_form_object', $form);
foreach ($this->getConditions() as $condition) {
$condition->setJsFormObject($form);
}
return $this;
}
public function getConditions()
{
return $this->getData($this->getPrefix());
}
/**
* Getter for "Conditions Combination" select option for recursive combines
*/
protected function _getRecursiveChildSelectOption()
{
return array('value' => $this->getType(), 'label' => Mage::helper('rule')->__('Conditions Combination'));
}
}