setActions(array()); $this->setType('rule/action_collection'); } /** * Returns array containing actions in the collection * * Output example: * array( * {action::asArray}, * {action::asArray} * ) * * @return array */ public function asArray(array $arrAttributes = array()) { $out = parent::asArray(); foreach ($this->getActions() as $item) { $out['actions'][] = $item->asArray(); } return $out; } public function loadArray(array $arr) { if (!empty($arr['actions']) && is_array($arr['actions'])) { foreach ($arr['actions'] as $actArr) { if (empty($actArr['type'])) { continue; } $action = Mage::getModel($actArr['type']); $action->loadArray($actArr); $this->addAction($action); } } return $this; } public function addAction(Mage_Rule_Model_Action_Interface $action) { $actions = $this->getActions(); $action->setRule($this->getRule()); $actions[] = $action; if (!$action->getId()) { $action->setId($this->getId().'.'.sizeof($actions)); } $this->setActions($actions); return $this; } public function asHtml() { $html = $this->getTypeElement()->toHtml().'Perform following actions: '; if ($this->getId()!='1') { $html.= $this->getRemoveLinkHtml(); } return $html; } public function getNewChildElement() { return $this->getForm()->addField('action:'.$this->getId().':new_child', 'select', array( 'name'=>'rule[actions]['.$this->getId().'][new_child]', 'values'=>$this->getNewChildSelectOptions(), 'value_name'=>$this->getNewChildName(), ))->setRenderer(Mage::getBlockSingleton('rule/newchild')); } public function asHtmlRecursive() { $html = $this->asHtml().''; return $html; } public function asString($format='') { $str = Mage::helper('rule')->__("Perform following actions"); return $str; } public function asStringRecursive($level=0) { $str = $this->asString(); foreach ($this->getActions() as $action) { $str .= "\n".$action->asStringRecursive($level+1); } return $str; } public function process() { foreach ($this->getActions() as $action) { $action->process(); } return $this; } }