execute($event->getRegistry(), $event->getRequest()); } //TODO:{[Anything needed here?[[FAWebCommand} } class FAConditionalWebCommandObserver extends FAObserver { var $_errors = array(); function getErrors() { return $this->_errors; } function isValid() { return empty($this->_errors); } function notify(&$event) { $this->_errors[] = &$event; } } class FAConditionalWebCommand extends FAWebCommand { var $_validator; var $_success; var $_failure; function FAConditionalWebCommand($name, &$validator, &$success, &$failure) { parent::FAWebCommand($name); assert(is_a($validator, 'FAValidator')); assert(is_a($success, 'FAWebCommand')); assert(is_a($failure, 'FAWebCommand')); $this->_validator = &$validator; $this->_success = &$success; $this->_failure = &$failure; } function notify(&$event) { $observer = &new FAConditionalWebCommandObserver; $this->_validator->addObserver($observer); $this->_validator->run($event->getRequest); if ($observer->isValid()) { $ret = $this->_success->notify($event); } else { $registry = &$event->getRegistry(); $registry->set('errors', $observer->getErrors()); $ret = $this->_failure->notify($event); } return $ret; } } ?>