_pages = array(); if ($action == CRM_Core_Action::ADVANCED) { $this->_pages['CRM_Contact_Form_Search_Advanced'] = NULL; list($task, $result) = $this->taskName($controller, 'Advanced'); } elseif ($action == CRM_Core_Action::PROFILE) { $this->_pages['CRM_Contact_Form_Search_Builder'] = NULL; list($task, $result) = $this->taskName($controller, 'Builder'); } elseif ($action == CRM_Core_Action::COPY) { $this->_pages['CRM_Contact_Form_Search_Custom'] = NULL; list($task, $result) = $this->taskName($controller, 'Custom'); } else { $this->_pages['CRM_Contact_Form_Search_Basic'] = NULL; list($task, $result) = $this->taskName($controller, 'Basic'); } $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_Contact_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 * @access protected */ 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); if ($value) { $componentMode = $this->_controller->get('component_mode'); $modeValue = CRM_Contact_Form_Search::getModeValue($componentMode); $taskClassName = $modeValue['taskClassName']; return $taskClassName::getTask($value); } else { return CRM_Contact_Task::getTask($value); } } /** * return the form name of the task * * @return string * @access public */ function getTaskFormName() { if (is_array($this->_task)) { // return first page return CRM_Utils_String::getClassName($this->_task[0]); } else { 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 * */ function shouldReset() { return FALSE; } }