X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FBAO%2FGroup.php;h=b0cea18aa89201e1df4a0b3d5a27b268d5818a04;hb=1b9976cbf762dbf6513df8a4141626d2e5584171;hp=9a67ef3dc3ff3d2420fc91856e013d92e528bdae;hpb=1761553f7e28866ef0c0a9f54abbb222487cea5c;p=civicrm-core.git diff --git a/CRM/Contact/BAO/Group.php b/CRM/Contact/BAO/Group.php index 9a67ef3dc3..b0cea18aa8 100644 --- a/CRM/Contact/BAO/Group.php +++ b/CRM/Contact/BAO/Group.php @@ -37,7 +37,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Class constructor */ - function __construct() { + public function __construct() { parent::__construct(); } @@ -48,14 +48,14 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { * of time. This is the inverse function of create. It also stores all the retrieved * values in the default array * - * @param array $params (reference ) an assoc array of name/value pairs - * @param array $defaults (reference ) an assoc array to hold the flattened values + * @param array $params + * (reference ) an assoc array of name/value pairs. + * @param array $defaults + * (reference ) an assoc array to hold the flattened values. * - * @return CRM_Contact_BAO_Group object - * @access public - * @static + * @return CRM_Contact_BAO_Group */ - static function retrieve(&$params, &$defaults) { + public static function retrieve(&$params, &$defaults) { $group = new CRM_Contact_DAO_Group(); $group->copyValues($params); if ($group->find(TRUE)) { @@ -70,14 +70,12 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { * Delete the group and all the object that connect to * this group. Incredibly destructive * - * @param int $id group id - * - * @return null - * @access public - * @static + * @param int $id + * Group id. * + * @return NULL */ - static function discard($id) { + public static function discard($id) { CRM_Utils_Hook::pre('delete', 'Group', $id, CRM_Core_DAO::$_nullArray); $transaction = new CRM_Core_Transaction(); @@ -118,8 +116,9 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { CRM_Core_DAO::executeQuery($query, $params); if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::MULTISITE_PREFERENCES_NAME, - 'is_enabled' - )) { + 'is_enabled' + ) + ) { // clear any descendant groups cache if exists CRM_Core_BAO_Cache::deleteGroup('descendant groups for an org'); } @@ -143,9 +142,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Returns an array of the contacts in the given group. - * */ - static function getGroupContacts($id) { + public static function getGroupContacts($id) { $params = array(array('group', 'IN', array($id => 1), 0, 0)); list($contacts, $_) = CRM_Contact_BAO_Query::apiQuery($params, array('contact_id')); return $contacts; @@ -154,15 +152,16 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Get the count of a members in a group with the specific status * - * @param int $id group id - * @param enum|string $status status of members in group - * + * @param int $id + * Group id. + * @param string $status + * status of members in group * @param bool $countChildGroups * - * @return int count of members in the group with above status - * @access public + * @return int + * count of members in the group with above status */ - static function memberCount($id, $status = 'Added', $countChildGroups = FALSE) { + public static function memberCount($id, $status = 'Added', $countChildGroups = FALSE) { $groupContact = new CRM_Contact_DAO_GroupContact(); $groupIds = array($id); if ($countChildGroups) { @@ -204,11 +203,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { * @param int $groupID * @param bool $useCache * - * @return array $aMembers this array contains the list of members for this group id - * @access public - * @static + * @return array + * this array contains the list of members for this group id */ - static function &getMember($groupID, $useCache = TRUE) { + public static function &getMember($groupID, $useCache = TRUE) { $params = array(array('group', 'IN', array($groupID => 1), 0, 0)); $returnProperties = array('contact_id'); list($contacts, $_) = CRM_Contact_BAO_Query::apiQuery($params, $returnProperties, NULL, NULL, 0, 0, $useCache); @@ -224,17 +222,18 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Returns array of group object(s) matching a set of one or Group properties. * - * @param array $params Limits the set of groups returned. - * @param array $returnProperties Which properties should be included in the returned group objects. - * (member_count should be last element.) - * - * @param null $sort - * @param null $offset - * @param null $rowCount + * @param array $params + * Limits the set of groups returned. + * @param array $returnProperties + * Which properties should be included in the returned group objects. + * (member_count should be last element.) + * @param string $sort + * @param int $offset + * @param int $rowCount * - * @return array of group objects. + * @return array + * Array of group objects. * - * @access public * * @todo other BAO functions that use returnProperties (e.g. Query Objects) receive the array flipped & filled with 1s and * add in essential fields (e.g. id). This should follow a regular pattern like the others @@ -305,13 +304,13 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Make sure that the user has permission to access this group * - * @param int $id the id of the object + * @param int $id + * The id of the object. * - * @return string the permission that the user has (or null) - * @access public - * @static + * @return string + * the permission that the user has (or NULL) */ - static function checkPermission($id) { + public static function checkPermission($id) { $allGroups = CRM_Core_PseudoConstant::allGroup(); $permissions = NULL; @@ -344,11 +343,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Create a new group * - * @param array $params Associative array of parameters + * @param array $params * - * @return object|null The new group BAO (if created) - * @access public - * @static + * @return CRM_Contact_BAO_Group|NULL + * The new group BAO (if created) */ public static function &create(&$params) { @@ -369,15 +367,15 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { if (isset($params['group_type'])) { if (is_array($params['group_type'])) { $params['group_type'] = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, - array_keys($params['group_type']) - ) . CRM_Core_DAO::VALUE_SEPARATOR; + array_keys($params['group_type']) + ) . CRM_Core_DAO::VALUE_SEPARATOR; } } else { $params['group_type'] = ''; } - $session = CRM_Core_Session::singleton( ); + $session = CRM_Core_Session::singleton(); $cid = $session->get('userID'); // this action is add if ($cid && empty($params['id'])) { @@ -395,10 +393,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { // use metadata to translate the array to the appropriate DB type or altering the param in the api layer, // or at least altering the param in same section as 'group_type' rather than repeating here. However, further down // we need the $params one to be in it's original form & we are not sure what test coverage we have on that - if(isset($group->parents) && is_array($group->parents)) { + if (isset($group->parents) && is_array($group->parents)) { $group->parents = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, - array_keys($group->parents) - ) . CRM_Core_DAO::VALUE_SEPARATOR; + array_keys($group->parents) + ) . CRM_Core_DAO::VALUE_SEPARATOR; } if (empty($params['id']) && !$nameParam @@ -506,7 +504,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { * Given a saved search compute the clause and the tables * and store it for future use */ - function buildClause() { + public function buildClause() { $params = array(array('group', 'IN', array($this->id => 1), 0, 0)); if (!empty($params)) { @@ -526,11 +524,11 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Defines a new smart group * - * @param array $params Associative array of parameters + * @param array $params + * Associative array of parameters. * - * @return object|null The new group BAO (if created) - * @access public - * @static + * @return CRM_Contact_BAO_Group|NULL + * The new group BAO (if created) */ public static function createSmartGroup(&$params) { if (!empty($params['formValues'])) { @@ -554,26 +552,28 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * Update the is_active flag in the db * - * @param int $id id of the database record - * @param boolean $isActive value we want to set the is_active field + * @param int $id + * Id of the database record. + * @param bool $isActive + * Value we want to set the is_active field. * - * @return Object DAO object on sucess, null otherwise - * @static + * @return CRM_Core_DAO|null + * DAO object on success, NULL otherwise */ - static function setIsActive($id, $isActive) { + public static function setIsActive($id, $isActive) { return CRM_Core_DAO::setFieldValue('CRM_Contact_DAO_Group', $id, 'is_active', $isActive); } /** * Build the condition to retrieve groups. * - * @param string $groupType type of group(Access/Mailing) OR the key of the group - * @param bool|\boolen $excludeHidden exclude hidden groups. + * @param string $groupType + * Type of group(Access/Mailing) OR the key of the group. + * @param bool $excludeHidden exclude hidden groups. * - * @return string $condition - * @static + * @return string */ - static function groupTypeCondition($groupType = NULL, $excludeHidden = TRUE) { + public static function groupTypeCondition($groupType = NULL, $excludeHidden = TRUE) { $value = NULL; if ($groupType == 'Mailing') { $value = CRM_Core_DAO::VALUE_SEPARATOR . '2' . CRM_Core_DAO::VALUE_SEPARATOR; @@ -581,7 +581,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { elseif ($groupType == 'Access') { $value = CRM_Core_DAO::VALUE_SEPARATOR . '1' . CRM_Core_DAO::VALUE_SEPARATOR; } - elseif (!empty($groupType)){ + elseif (!empty($groupType)) { // ie we have been given the group key $value = CRM_Core_DAO::VALUE_SEPARATOR . $groupType . CRM_Core_DAO::VALUE_SEPARATOR; } @@ -614,7 +614,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { public static function getPermissionClause($force = FALSE) { static $clause = 1; static $retrieved = FALSE; - if ((!$retrieved || $force ) && !CRM_Core_Permission::check('view all contacts') && !CRM_Core_Permission::check('edit all contacts')) { + if ((!$retrieved || $force) && !CRM_Core_Permission::check('view all contacts') && !CRM_Core_Permission::check('edit all contacts')) { //get the allowed groups for the current user $groups = CRM_ACL_API::group(CRM_ACL_API::VIEW); if (!empty($groups)) { @@ -640,13 +640,13 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { * This function create the hidden smart group when user perform * contact seach and want to send mailing to search contacts. * - * @param array $params ( reference ) an assoc array of name/value pairs + * @param array $params + * ( reference ) an assoc array of name/value pairs. * - * @return array ( smartGroupId, ssId ) smart group id and saved search id - * @access public - * @static + * @return array + * ( smartGroupId, ssId ) smart group id and saved search id */ - static function createHiddenSmartGroup($params) { + public static function createHiddenSmartGroup($params) { $ssId = CRM_Utils_Array::value('saved_search_id', $params); //add mapping record only for search builder saved search @@ -655,10 +655,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { //save the mapping for search builder if (!$ssId) { //save record in mapping table - $temp = array(); + $temp = array(); $mappingParams = array('mapping_type' => 'Search Builder'); - $mapping = CRM_Core_BAO_Mapping::add($mappingParams, $temp); - $mappingId = $mapping->id; + $mapping = CRM_Core_BAO_Mapping::add($mappingParams, $temp); + $mappingId = $mapping->id; } else { //get the mapping id from saved search @@ -708,22 +708,23 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { } /** - * This function is a wrapper for ajax group selector + * wrapper for ajax group selector * - * @param array $params associated array for params record id. + * @param array $params + * Associated array for params record id. * - * @return array $groupList associated array of group list - * -rp = rowcount - * -page= offset - * @todo there seems little reason for the small number of functions that call this to pass in - * params that then need to be translated in this function since they are coding them when calling - * @access public + * @return array + * associated array of group list + * -rp = rowcount + * -page= offset + * @todo there seems little reason for the small number of functions that call this to pass in + * params that then need to be translated in this function since they are coding them when calling */ static public function getGroupListSelector(&$params) { // format the params - $params['offset'] = ($params['page'] - 1) * $params['rp']; + $params['offset'] = ($params['page'] - 1) * $params['rp']; $params['rowCount'] = $params['rp']; - $params['sort'] = CRM_Utils_Array::value('sortBy', $params); + $params['sort'] = CRM_Utils_Array::value('sortBy', $params); // get groups $groups = CRM_Contact_BAO_Group::getGroupList($params); @@ -749,10 +750,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { if (empty($params['parent_id']) && !empty($value['parents'])) { $groupIds = explode(',', $value['parents']); $title = array(); - foreach($groupIds as $gId) { + foreach ($groupIds as $gId) { $title[] = $allGroups[$gId]; } - $groupList[$id]['group_name'] .= '
'.ts('Child of').': ' . implode(', ', $title) . '
'; + $groupList[$id]['group_name'] .= '
' . ts('Child of') . ': ' . implode(', ', $title) . '
'; $value['class'] = array_diff($value['class'], array('crm-row-parent')); } $value['class'][] = 'crm-entity'; @@ -779,12 +780,12 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * This function to get list of groups * - * @param array $params associated array for params + * @param array $params + * Associated array for params. * * @return array - * @access public */ - static function getGroupList(&$params) { + public static function getGroupList(&$params) { $config = CRM_Core_Config::singleton(); $whereClause = self::whereClause($params, FALSE); @@ -934,10 +935,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { ); // If group has children, add class for link to view children - $values[$object->id]['is_parent'] = false; + $values[$object->id]['is_parent'] = FALSE; if (array_key_exists('children', $values[$object->id])) { $values[$object->id]['class'][] = "crm-group-parent"; - $values[$object->id]['is_parent'] = true; + $values[$object->id]['is_parent'] = TRUE; } // If group is a child, add child class @@ -964,14 +965,16 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { } } - // Get group counts + // Get group counts - executes one query for regular groups and another for smart groups foreach ($groupsToCount as $table => $groups) { - $where = "group_id IN (" . implode(',', $groups) . ")"; + $where = "g.group_id IN (" . implode(',', $groups) . ")"; if ($table == 'civicrm_group_contact') { - $where .= " AND status = 'Added'"; + $where .= " AND g.status = 'Added'"; } - $dao = CRM_Core_DAO::executeQuery("SELECT group_id, COUNT(id) as `count` FROM $table WHERE $where GROUP BY group_id"); - while($dao->fetch()) { + // Exclude deleted contacts + $where .= " and c.id = g.contact_id AND c.is_deleted = 0"; + $dao = CRM_Core_DAO::executeQuery("SELECT g.group_id, COUNT(g.id) as `count` FROM $table g, civicrm_contact c WHERE $where GROUP BY g.group_id"); + while ($dao->fetch()) { $values[$dao->group_id]['count'] = $dao->count; } } @@ -982,14 +985,14 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { /** * This function to get hierarchical list of groups (parent followed by children) * - * @param array $groupIDs array of group ids + * @param array $groupIDs + * Array of group ids. * - * @param null $parents + * @param NULL $parents * @param string $spacer * @param bool $titleOnly * * @return array - * @access public */ static function getGroupsHierarchy( $groupIDs, @@ -1035,14 +1038,14 @@ WHERE id IN $groupIdString $allGroups[$dao->id] = array( 'title' => $dao->title, 'visibility' => $dao->visibility, - 'description' => $dao->description + 'description' => $dao->description, ); if ($dao->parents == $parents) { $roots[] = array( 'id' => $dao->id, 'prefix' => '', - 'title' => $dao->title + 'title' => $dao->title, ); } else { @@ -1053,7 +1056,7 @@ WHERE id IN $groupIdString 'id' => $dao->id, 'prefix' => '', 'title' => $dao->title, - 'parents' => $parent + 'parents' => $parent, ); } } @@ -1078,7 +1081,7 @@ WHERE id IN $groupIdString $new_roots[] = array( 'id' => $row['id'], 'prefix' => $groups[$root['id']][0] . $spacer, - 'title' => $row['title'] + 'title' => $row['title'], ); unset($rows[$key]); } @@ -1117,9 +1120,9 @@ WHERE id IN $groupIdString /** * @param array $params * - * @return null|string + * @return NULL|string */ - static function getGroupCount(&$params) { + public static function getGroupCount(&$params) { $whereClause = self::whereClause($params, FALSE); $query = "SELECT COUNT(*) FROM civicrm_group groups"; @@ -1141,7 +1144,7 @@ WHERE {$whereClause}"; * * @return string */ - static function whereClause(&$params, $sortBy = TRUE, $excludeHidden = TRUE) { + public static function whereClause(&$params, $sortBy = TRUE, $excludeHidden = TRUE) { $values = array(); $title = CRM_Utils_Array::value('title', $params); if ($title) { @@ -1158,9 +1161,9 @@ WHERE {$whereClause}"; if ($groupType) { $types = explode(',', $groupType); if (!empty($types)) { - $clauses[] = 'groups.group_type LIKE %2'; + $clauses[] = 'groups.group_type LIKE %2'; $typeString = CRM_Core_DAO::VALUE_SEPARATOR . implode(CRM_Core_DAO::VALUE_SEPARATOR, $types) . CRM_Core_DAO::VALUE_SEPARATOR; - $params[2] = array($typeString, 'String', TRUE); + $params[2] = array($typeString, 'String', TRUE); } } @@ -1218,7 +1221,7 @@ WHERE {$whereClause}"; if ($excludeHidden) { $clauses[] = 'groups.is_hidden = 0'; } - ; + $clauses[] = self::getPermissionClause(); @@ -1228,10 +1231,10 @@ WHERE {$whereClause}"; /** * Define action links * - * @return array $links array of action links - * @access public + * @return array + * array of action links */ - static function actionLinks() { + public static function actionLinks() { $links = array( CRM_Core_Action::VIEW => array( 'name' => ts('Contacts'), @@ -1272,7 +1275,7 @@ WHERE {$whereClause}"; * * @return string */ - function pagerAtoZ($whereClause, $whereParams) { + public function pagerAtoZ($whereClause, $whereParams) { $query = " SELECT DISTINCT UPPER(LEFT(groups.title, 1)) as sort_name FROM civicrm_group groups @@ -1284,4 +1287,3 @@ WHERE {$whereClause}"; return CRM_Utils_PagerAToZ::getAToZBar($dao, $this->_sortByCharacter, TRUE); } } -