/** * Processes the request. * * @param CRM_Core_Form $page * CRM_Core_Form the current form-page. * @param string $actionName * Current action name, as one Action object can serve multiple actions. * * @return object|void */ public function perform(&$page, $actionName) { $pageName = $page->getAttribute('id'); // If the original action was 'display' and we have values in container then we load them // BTW, if the page was invalid, we should later call validate() to get the errors list(, $oldName) = $page->controller->getActionName(); if ('display' == $oldName) { // If the controller is "modal" we should not allow direct access to a page // unless all previous pages are valid (see also bug #2323) if ($page->controller->isModal() && !$page->controller->isValid($page->getAttribute('id'))) { $target =& $page->controller->getPage($page->controller->findInvalid()); return $target->handle('jump'); } $data =& $page->controller->container(); if (!empty($data['values'][$pageName])) { $page->loadValues($data['values'][$pageName]); $validate = FALSE === $data['valid'][$pageName]; } } // set "common" defaults and constants $page->controller->applyDefaults($pageName); $page->isFormBuilt() or $page->buildForm(); // if we had errors we should show them again if (isset($validate) && $validate) { $page->validate(); } //will this work generally as TRUE (i.e., return output) //was default, i.e., FALSE return $this->renderForm($page); }