_name = $name; $this->_type = $type; $this->_back = $back; $this->_next = $next; $this->_stateMachine = &$stateMachine; } public function debugPrint() { CRM_Core_Error::debug("{$this->_name}, {$this->_type}", "{$this->_back}, {$this->_next}"); } /** * Given an CRM Form, jump to the previous page * * @return mixed * does a jump to the back state */ public function handleBackState(&$page) { if ($this->_type & self::START) { $page->handle('display'); } else { $back = &$page->controller->getPage($this->_back); return $back->handle('jump'); } } /** * Given an CRM Form, jump to the next page * * @return mixed * does a jump to the nextstate */ public function handleNextState(&$page) { if ($this->_type & self::FINISH) { $page->handle('process'); } else { $next = &$page->controller->getPage($this->_next); return $next->handle('jump'); } } /** * Determine the name of the next state. This is useful when we want * to display the navigation labels or potential path * * @return string */ public function getNextState() { if ($this->_type & self::FINISH) { return NULL; } else { $next = &$page->controller->getPage($this->_next); return $next; } } /** * Mark this page as valid for the QFC framework. This is needed as * we build more advanced functionality into the StateMachine * * @return void */ public function validate(&$data) { $data['valid'][$this->_name] = TRUE; } /** * Mark this page as invalid for the QFC framework. This is needed as * we build more advanced functionality into the StateMachine * * @return void */ public function invalidate(&$data) { $data['valid'][$this->_name] = NULL; } /** * Getter for name. * * @return string */ public function getName() { return $this->_name; } /** * Setter for name. * * @return void */ public function setName($name) { $this->_name = $name; } /** * Getter for type. * * @return int */ public function getType() { return $this->_type; } }