public function setRules(array $rules = array()) { if (count($rules) == 0) { $rules = (array) ObjectModel::getRules($this); } // attach each rule to the relevant property foreach ($rules as $trigger => $rulesArray) { $parts = explode('/', $trigger); foreach ($rulesArray as $key => $rule) { // rules on properties if (isset($parts[2]) && ($property = $this->_dataObject->getProperty($parts[2])) !== false) { $property->attach($rule, $parts[0] . '/' . $parts[1]); unset($rules[$trigger][$key]); /* * @todo find a way to also pass rules to whatever property is concerned * ex: if the rules allows to compute data from a collection, any change to the collection * members should trigger the rule. */ } else { $this->attach($rule, $parts[0] . '/' . $parts[1]); } } } $this->_rules = $rules; return $this; }
public function setRules(array $rules = array()) { if (count($rules) == 0) { $rules = (array) \t41\ObjectModel::getRules(get_class($this)); } $doRules = array(); foreach ($rules as $key => $rule) { /* if $rule is an array, targeted property contains an object and we need to delegate logic to data object */ if (is_array($rule)) { $doRules[] = $rule; unset($rules[$key]); } } if (count($doRules) > 0) { $this->_dataObject->delegateRules($doRules); } $this->_rules = $rules; return $this; }