* @param array $defaults
* (reference ) an assoc array to hold the flattened values.
*
- * @return CRM_Contact_BAO_Group object
- * @static
+ * @return CRM_Contact_BAO_Group
*/
public static function retrieve(&$params, &$defaults) {
$group = new CRM_Contact_DAO_Group();
* Group id.
*
* @return NULL
- * @static
*/
public static function discard($id) {
CRM_Utils_Hook::pre('delete', 'Group', $id, CRM_Core_DAO::$_nullArray);
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');
}
*
* @param int $id
* Group id.
- * @param enum|string $status status of members in group
- *
+ * @param string $status
+ * status of members in group
* @param bool $countChildGroups
*
* @return int
*
* @return array
* this array contains the list of members for this group id
- * @static
*/
public static function &getMember($groupID, $useCache = TRUE) {
$params = array(array('group', 'IN', array($groupID => 1), 0, 0));
* 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
+ * (member_count should be last element.)
+ * @param string $sort
+ * @param int $offset
+ * @param int $rowCount
*
* @return array
- * of group objects.
+ * Array of group objects.
*
*
* @todo other BAO functions that use returnProperties (e.g. Query Objects) receive the array flipped & filled with 1s and
*
* @return string
* the permission that the user has (or NULL)
- * @static
*/
public static function checkPermission($id) {
$allGroups = CRM_Core_PseudoConstant::allGroup();
* Create a new group
*
* @param array $params
- * Associative array of parameters.
*
- * @return object|NULL The new group BAO (if created)
- * @static
+ * @return CRM_Contact_BAO_Group|NULL
+ * The new group BAO (if created)
*/
public static function &create(&$params) {
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 {
// 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)) {
$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
* @param array $params
* Associative array of parameters.
*
- * @return object|NULL The new group BAO (if created)
- * @static
+ * @return CRM_Contact_BAO_Group|NULL
+ * The new group BAO (if created)
*/
public static function createSmartGroup(&$params) {
if (!empty($params['formValues'])) {
* @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
*/
public static function setIsActive($id, $isActive) {
return CRM_Core_DAO::setFieldValue('CRM_Contact_DAO_Group', $id, 'is_active', $isActive);
*
* @param string $groupType
* Type of group(Access/Mailing) OR the key of the group.
- * @param bool|\boolen $excludeHidden exclude hidden groups.
+ * @param bool $excludeHidden exclude hidden groups.
*
* @return string
- * @static
*/
public static function groupTypeCondition($groupType = NULL, $excludeHidden = TRUE) {
$value = NULL;
*
* @return array
* ( smartGroupId, ssId ) smart group id and saved search id
- * @static
*/
public static function createHiddenSmartGroup($params) {
$ssId = CRM_Utils_Array::value('saved_search_id', $params);
//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
*
* @return array
* associated array of group list
- * -rp = rowcount
- * -page= offset
+ * -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);
}
}
- // 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");
+ // 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;
}
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);
}
}