/** * Make uf join entries for an uf group. * * @param array $params * (reference) an assoc array of name/value pairs. * @param int $ufGroupId * Ufgroup id. */ public static function createUFJoin(&$params, $ufGroupId) { $groupTypes = CRM_Utils_Array::value('uf_group_type', $params); // get ufjoin records for uf group $ufGroupRecord = CRM_Core_BAO_UFGroup::getUFJoinRecord($ufGroupId); // get the list of all ufgroup types $allUFGroupType = CRM_Core_SelectValues::ufGroupTypes(); // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input if (!is_array($groupTypes)) { $groupTypes = array(); } // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input if (!is_array($ufGroupRecord)) { $ufGroupRecord = array(); } // check which values has to be inserted/deleted for contact $menuRebuild = FALSE; foreach ($allUFGroupType as $key => $value) { $joinParams = array(); $joinParams['uf_group_id'] = $ufGroupId; $joinParams['module'] = $key; if ($key == 'User Account') { $menuRebuild = TRUE; } if (array_key_exists($key, $groupTypes) && !in_array($key, $ufGroupRecord)) { // insert a new record CRM_Core_BAO_UFGroup::addUFJoin($joinParams); } elseif (!array_key_exists($key, $groupTypes) && in_array($key, $ufGroupRecord)) { // delete a record for existing ufgroup CRM_Core_BAO_UFGroup::delUFJoin($joinParams); } } //update the weight $query = "\nUPDATE civicrm_uf_join\nSET weight = %1\nWHERE uf_group_id = %2\nAND ( entity_id IS NULL OR entity_id <= 0 )\n"; $p = array(1 => array($params['weight'], 'Integer'), 2 => array($ufGroupId, 'Integer')); CRM_Core_DAO::executeQuery($query, $p); // do a menu rebuild if we are on drupal, so it gets all the new menu entries // for user account $config = CRM_Core_Config::singleton(); if ($menuRebuild && $config->userSystem->is_drupal) { menu_rebuild(); } }
/** * Function to make uf join entries for an uf group * * @param array $params (reference) an assoc array of name/value pairs * @param int $ufGroupId ufgroup id * * @return void * @access public * @static */ function createUFJoin(&$params, $ufGroupId) { $groupTypes = $params['uf_group_type']; // get ufjoin records for uf group $ufGroupRecord =& CRM_Core_BAO_UFGroup::getUFJoinRecord($ufGroupId); // get the list of all ufgroup types $allUFGroupType =& CRM_Core_SelectValues::ufGroupTypes(); // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input if (!is_array($groupTypes)) { $groupTypes = array(); } // this fix is done to prevent warning generated by array_key_exits incase of empty array is given as input if (!is_array($ufGroupRecord)) { $ufGroupRecord = array(); } // check which values has to be inserted/deleted for contact foreach ($allUFGroupType as $key => $value) { $joinParams = array(); $joinParams['uf_group_id'] = $ufGroupId; $joinParams['module'] = $key; if (array_key_exists($key, $groupTypes) && !in_array($key, $ufGroupRecord)) { // insert a new record CRM_Core_BAO_UFGroup::addUFJoin($joinParams); } else { if (!array_key_exists($key, $groupTypes) && in_array($key, $ufGroupRecord)) { // delete a record for existing ufgroup CRM_Core_BAO_UFGroup::delUFJoin($joinParams); } } } //update the weight for remaining group CRM_Core_BAO_UFGroup::updateWeight($params['weight'], $ufGroupId); }
/** * Process the form * * @return void * @access public */ public function postProcess() { if ($this->_action & CRM_Core_Action::DELETE) { $title = CRM_Core_BAO_UFGroup::getTitle($this->_id); CRM_Core_BAO_UFGroup::del($this->_id); CRM_Core_Session::setStatus(ts("Your CiviCRM Profile '%1' has been deleted.", array(1 => $title)), ts('Profile Deleted'), 'success'); } elseif ($this->_action & CRM_Core_Action::DISABLE) { $ufJoinParams = array('uf_group_id' => $this->_id); CRM_Core_BAO_UFGroup::delUFJoin($ufJoinParams); CRM_Core_BAO_UFGroup::setIsActive($this->_id, 0); } else { // get the submitted form values. $params = $ids = array(); $params = $this->controller->exportValues($this->_name); if (!array_key_exists('is_active', $params)) { $params['is_active'] = 0; } if ($this->_action & CRM_Core_Action::UPDATE) { $ids['ufgroup'] = $this->_id; // CRM-5284 // lets skip trying to mess around with profile weights and allow the user to do as needed. } elseif ($this->_action & CRM_Core_Action::ADD) { $session = CRM_Core_Session::singleton(); $params['created_id'] = $session->get('userID'); $params['created_date'] = date('YmdHis'); } // create uf group $ufGroup = CRM_Core_BAO_UFGroup::add($params, $ids); if (!empty($params['is_active'])) { //make entry in uf join table CRM_Core_BAO_UFGroup::createUFJoin($params, $ufGroup->id); } elseif ($this->_id) { // this profile has been set to inactive, delete all corresponding UF Join's $ufJoinParams = array('uf_group_id' => $this->_id); CRM_Core_BAO_UFGroup::delUFJoin($ufJoinParams); } if ($this->_action & CRM_Core_Action::UPDATE) { $url = CRM_Utils_System::url('civicrm/admin/uf/group', 'reset=1&action=browse'); CRM_Core_Session::setStatus(ts("Your CiviCRM Profile '%1' has been saved.", array(1 => $ufGroup->title)), ts('Profile Saved'), 'success'); } else { // Jump directly to adding a field if popups are disabled $action = CRM_Core_Resources::singleton()->ajaxPopupsEnabled ? '' : '/add'; $url = CRM_Utils_System::url("civicrm/admin/uf/group/field{$action}", 'reset=1&gid=' . $ufGroup->id . '&action=' . ($action ? 'add' : 'browse')); CRM_Core_Session::setStatus(ts('Your CiviCRM Profile \'%1\' has been added. You can add fields to this profile now.', array(1 => $ufGroup->title)), ts('Profile Added'), 'success'); } $session = CRM_Core_Session::singleton(); $session->replaceUserContext($url); } // update cms integration with registration / my account CRM_Utils_System::updateCategories(); }
/** * Process the form * * @return void * @access public */ public function postProcess() { if ($this->_action & CRM_Core_Action::DELETE) { $title = CRM_Core_BAO_UFGroup::getTitle($this->_id); CRM_Core_BAO_UFGroup::del($this->_id); CRM_Core_Session::setStatus(ts("Your CiviCRM Profile '%1' has been deleted.", array(1 => $title))); } else { if ($this->_action & CRM_Core_Action::DISABLE) { $ufJoinParams = array('uf_group_id' => $this->_id); CRM_Core_BAO_UFGroup::delUFJoin($ufJoinParams); require_once "CRM/Core/BAO/UFGroup.php"; CRM_Core_BAO_UFGroup::setIsActive($this->_id, 0); } else { // get the submitted form values. $params = $ids = array(); $params = $this->controller->exportValues($this->_name); if (!array_key_exists('is_active', $params)) { $params['is_active'] = 0; } if ($this->_action & CRM_Core_Action::UPDATE) { $ids['ufgroup'] = $this->_id; // CRM-5284 // lets skip trying to mess around with profile weights and allow the user to do as needed. } else { if ($this->_action & CRM_Core_Action::ADD) { $session = CRM_Core_Session::singleton(); $params['created_id'] = $session->get('userID'); $params['created_date'] = date('YmdHis'); } } // create uf group $ufGroup = CRM_Core_BAO_UFGroup::add($params, $ids); if (CRM_Utils_Array::value('is_active', $params)) { //make entry in uf join table CRM_Core_BAO_UFGroup::createUFJoin($params, $ufGroup->id); } else { if ($this->_id) { // this profile has been set to inactive, delete all corresponding UF Join's $ufJoinParams = array('uf_group_id' => $this->_id); CRM_Core_BAO_UFGroup::delUFJoin($ufJoinParams); } } if ($this->_action & CRM_Core_Action::UPDATE) { CRM_Core_Session::setStatus(ts("Your CiviCRM Profile '%1' has been saved.", array(1 => $ufGroup->title))); } else { $url = CRM_Utils_System::url('civicrm/admin/uf/group/field/add', 'reset=1&action=add&gid=' . $ufGroup->id); CRM_Core_Session::setStatus(ts('Your CiviCRM Profile \'%1\' has been added. You can add fields to this profile now.', array(1 => $ufGroup->title))); $session = CRM_Core_Session::singleton(); $session->replaceUserContext($url); } } } // update cms integration with registration / my account require_once 'CRM/Utils/System.php'; CRM_Utils_System::updateCategories(); }