/** * 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); }