示例#1
0
 /**
  * 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();
     }
 }
示例#2
0
 /**
  * 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);
 }