X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FBAO%2FGroupContact.php;h=8a4bb40b9e98b669c862d26caa0e2ea13fc9b118;hb=9fc1ccdb2385d351d821b4295ddd6f74c73cca66;hp=bfadfc54b8d8d70a4b6f3a3bf6b0c8fe1e24363f;hpb=ad314df7cc28a13a58caee38ccf30750572c5f11;p=civicrm-core.git diff --git a/CRM/Contact/BAO/GroupContact.php b/CRM/Contact/BAO/GroupContact.php index bfadfc54b8..8a4bb40b9e 100644 --- a/CRM/Contact/BAO/GroupContact.php +++ b/CRM/Contact/BAO/GroupContact.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.6 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2014 | + | Copyright CiviCRM LLC (c) 2004-2015 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -23,26 +23,26 @@ | GNU Affero General Public License or the licensing of CiviCRM, | | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ -*/ + */ /** * * @package CRM - * @copyright CiviCRM LLC (c) 2004-2014 + * @copyright CiviCRM LLC (c) 2004-2015 * $Id$ * */ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { /** - * Class constructor + * Class constructor. */ public function __construct() { parent::__construct(); } /** - * Takes an associative array and creates a groupContact object + * Takes an associative array and creates a groupContact object. * * the function extract all the params it needs to initialize the create a * group object. the params array could contain additional unused name/value @@ -68,12 +68,12 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { } /** - * Check if there is data to create the object + * Check if there is data to create the object. * * @param array $params * (reference ) an assoc array of name/value pairs. * - * @return boolean + * @return bool */ public static function dataExists(&$params) { // return if no data present @@ -129,7 +129,7 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { * @return array * (total, added, notAdded) count of contacts added to group */ - static function addContactsToGroup( + public static function addContactsToGroup( $contactIds, $groupId, $method = 'Admin', @@ -137,17 +137,10 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { $tracking = NULL ) { - CRM_Utils_Hook::pre('create', 'GroupContact', $groupId, $contactIds); - list($numContactsAdded, - $numContactsNotAdded - ) = self::bulkAddContactsToGroup($contactIds, - $groupId, - $method, - $status, - $tracking - ); + list($numContactsAdded, $numContactsNotAdded) + = self::bulkAddContactsToGroup($contactIds, $groupId, $method, $status, $tracking); // also reset the acl cache $config = CRM_Core_Config::singleton(); @@ -179,7 +172,7 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { * @return array * (total, removed, notRemoved) count of contacts removed to group */ - static function removeContactsFromGroup( + public static function removeContactsFromGroup( &$contactIds, $groupId, $method = 'Admin', @@ -267,7 +260,7 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { } /** - * Get list of all the groups and groups for a contact + * Get list of all the groups and groups for a contact. * * @param int $contactId * Contact id. @@ -310,7 +303,7 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { } /** - * Get the list of groups for contact based on status of group membership + * Get the list of groups for contact based on status of group membership. * * @param int $contactId * Contact id. @@ -329,13 +322,11 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { * * @param bool $excludeHidden * - * @return array - * (reference )|int $values the relevant data object values for the contact or - * the total count when $count is TRUE - * - * $access public + * @return array (reference)|int $values + * the relevant data object values for the contact or + * the total count when $count is TRUE */ - static function &getContactGroup( + public static function &getContactGroup( $contactId, $status = NULL, $numGroupContact = NULL, @@ -360,7 +351,7 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { civicrm_subscription_history.method as method'; } - $where = " WHERE contact_a.id = %1 AND civicrm_group.is_active = 1 "; + $where = " WHERE contact_a.id = %1 AND civicrm_group.is_active = 1"; if ($excludeHidden) { $where .= " AND civicrm_group.is_hidden = 0 "; @@ -390,6 +381,10 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { $from = CRM_Contact_BAO_Query::fromClause($tables); + //CRM-16945: seems hackish but as per CRM-16483 of using group criteria for Search Builder it is mandatory + //to include group_contact_cache clause when group table is present, so following code remove duplicacy + $from = str_replace("OR civicrm_group.id = civicrm_group_contact_cache.group_id", 'AND civicrm_group.saved_search_id IS NULL', $from); + $where .= " AND $permission "; if ($onlyPublicGroups) { @@ -448,7 +443,7 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { } /** - * Returns membership details of a contact for a group + * Returns membership details of a contact for a group. * * @param int $contactId * Id of the contact. @@ -492,7 +487,7 @@ SELECT * } /** - * Method to get Group Id + * Method to get Group Id. * * @param int $groupContactID * Id of a perticuler group. @@ -596,7 +591,7 @@ SELECT * } /** - * Function merges the groups from otherContactID to mainContactID + * Function merges the groups from otherContactID to mainContactID. * along with subscription history * * @param int $mainContactId @@ -720,7 +715,7 @@ AND group_id IN ( $groupIDString ) * @return array * (total, added, notAdded) count of contacts added to group */ - static function bulkAddContactsToGroup( + public static function bulkAddContactsToGroup( $contactIDs, $groupID, $method = 'Admin', @@ -797,11 +792,11 @@ AND contact_id IN ( $contactStr ) * * @param string $fieldName * @param string $context - * @see CRM_Core_DAO::buildOptionsContext. + * @see CRM_Core_DAO::buildOptionsContext * @param array $props * whatever is known about this dao object. * - * @return Array|bool + * @return array|bool */ public static function buildOptions($fieldName, $context = NULL, $props = array()) { $params = array(); @@ -816,4 +811,5 @@ AND contact_id IN ( $contactStr ) return $options; } + }