_userContext = $session->readUserContext(); CRM_Utils_System::setTitle(ts('Batch Profile Update for Activities')); $validate = FALSE; //validations if (count($this->_activityHolderIds) > $this->_maxActivities) { CRM_Core_Session::setStatus(ts("The maximum number of Activities you can select for Batch Update is %1. You have selected %2. Please select fewer Activities from your search results and try again.", array(1 => $this->_maxActivities, 2 => count($this->_activityHolderIds))), ts('Maximum Exceeded'), 'error'); $validate = TRUE; } // than redirect if ($validate) { CRM_Utils_System::redirect($this->_userContext); } } /** * Build the form object * * @access public * * @return void */ function buildQuickForm() { $types = array('Activity'); $profiles = CRM_Core_BAO_UFGroup::getProfiles($types, TRUE); $activityTypeIds = array_flip(CRM_Core_PseudoConstant::activityType(TRUE, FALSE, FALSE, 'name')); $nonEditableActivityTypeIds = array( $activityTypeIds['Email'], $activityTypeIds['Bulk Email'], $activityTypeIds['Contribution'], $activityTypeIds['Inbound Email'], $activityTypeIds['Pledge Reminder'], $activityTypeIds['Membership Signup'], $activityTypeIds['Membership Renewal'], $activityTypeIds['Event Registration'], $activityTypeIds['Pledge Acknowledgment'], ); $notEditable = FALSE; foreach ($this->_activityHolderIds as $activityId) { $typeId = CRM_Core_DAO::getFieldValue("CRM_Activity_DAO_Activity", $activityId, 'activity_type_id'); if (in_array($typeId, $nonEditableActivityTypeIds)) { $notEditable = TRUE; break; } } if (empty($profiles)) { CRM_Core_Session::setStatus(ts("You will need to create a Profile containing the %1 fields you want to edit before you can use Batch Update via Profile. Navigate to Administer > Customize Data and Screens > Profiles to configure a Profile. Consult the online Administrator documentation for more information.", array(1 => $types[0])), ts("No Profile Configured"), "alert"); CRM_Utils_System::redirect($this->_userContext); } elseif ($notEditable) { CRM_Core_Session::setStatus("", ts("Some of the selected activities are not editable."), "alert"); CRM_Utils_System::redirect($this->_userContext); } $ufGroupElement = $this->add('select', 'uf_group_id', ts('Select Profile'), array( '' => ts('- select profile -')) + $profiles, TRUE ); $this->addDefaultButtons(ts('Continue >>')); } /** * Add local and global form rules * * @access protected * * @return void */ function addRules() { $this->addFormRule(array('CRM_Activity_Form_Task_PickProfile', 'formRule')); } /** * Global validation rules for the form * * @param array $fields posted values of the form * * @return array list of errors to be posted back to the form * @static * @access public */ static function formRule($fields) { return TRUE; } /** * Process the form after the input has been submitted and validated * * @access public * * @return void */ public function postProcess() { $params = $this->exportValues(); $this->set('ufGroupId', $params['uf_group_id']); // also reset the batch page so it gets new values from the db $this->controller->resetPage('Batch'); } }