_pages = array(); $this->_pages['CRM_Contribute_Form_Search'] = NULL; list($task, $result) = $this->taskName($controller, 'Search'); $this->_task = $task; if (is_array($task)) { foreach ($task as $t) { $this->_pages[$t] = NULL; } } else { $this->_pages[$task] = NULL; } if ($result) { $this->_pages['CRM_Contribute_Form_Task_Result'] = NULL; } $this->addSequentialPages($this->_pages, $action); } /** * Determine the form name based on the action. This allows us * to avoid using conditional state machine, much more efficient * and simpler * * @param CRM_Core_Controller $controller * The controller object. * * @param string $formName * * @return string * the name of the form that will handle the task */ public function taskName($controller, $formName = 'Search') { // total hack, check POST vars and then session to determine stuff $value = CRM_Utils_Array::value('task', $_POST); if (!isset($value)) { $value = $this->_controller->get('task'); } $this->_controller->set('task', $value); return CRM_Contribute_Task::getTask($value); } /** * Return the form name of the task. * * @return string */ public function getTaskFormName() { return CRM_Utils_String::getClassName($this->_task); } /** * Since this is a state machine for search and we want to come back to the same state * we dont want to issue a reset of the state session when we are done processing a task */ public function shouldReset() { return FALSE; } }