+--------------------------------------------------------------------+
| CiviCRM version 4.6 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2014 |
+ | Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| 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
* @param array $params
* (reference ) an assoc array of name/value pairs.
*
- * @return CRM_Contact_BAO_Group object
- * @static
+ * @return CRM_Contact_BAO_Group
*/
public static function add(&$params) {
}
/**
- * 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
- * @static
+ * @return bool
*/
public static function dataExists(&$params) {
// return if no data present
* @param array $values
* Output values of the object.
*
- * @return array (reference) the values that could be potentially assigned to smarty
- * @static
+ * @return array
+ * (reference) the values that could be potentially assigned to smarty
*/
public static function getValues(&$params, &$values) {
if (empty($params)) {
* @param string $status
* @param int $tracking
*
- * @return array (total, added, notAdded) count of contacts added to group
- * @static
+ * @return array
+ * (total, added, notAdded) count of contacts added to group
*/
- static function addContactsToGroup(
+ public static function addContactsToGroup(
$contactIds,
$groupId,
- $method = 'Admin',
- $status = 'Added',
+ $method = 'Admin',
+ $status = 'Added',
$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();
* @param string $status
* @param NULL $tracking
*
- * @return array (total, removed, notRemoved) count of contacts removed to group
- * @static
+ * @return array
+ * (total, removed, notRemoved) count of contacts removed to group
*/
- static function removeContactsFromGroup(
+ public static function removeContactsFromGroup(
&$contactIds,
$groupId,
- $method = 'Admin',
- $status = 'Removed',
+ $method = 'Admin',
+ $status = 'Removed',
$tracking = NULL
) {
if (!is_array($contactIds)) {
foreach ($contactIds as $contactId) {
if ($status == 'Deleted') {
- $query = "DELETE FROM civicrm_group_contact WHERE contact_id=$contactId AND group_id=$groupId";
- $dao = CRM_Core_DAO::executeQuery($query);
+ $query = "DELETE FROM civicrm_group_contact WHERE contact_id=$contactId AND group_id=$groupId";
+ $dao = CRM_Core_DAO::executeQuery($query);
$historyParams = array(
'group_id' => $groupId,
'contact_id' => $contactId,
}
/**
- * 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.
* @param bool $visibility
*
*
- * @return array $values this array has key-> group id and value group title
- * @static
+ * @return array
+ * this array has key-> group id and value group title
*/
public static function getGroupList($contactId = 0, $visibility = FALSE) {
$group = new CRM_Contact_DAO_Group();
$select = $from = $where = '';
$select = 'SELECT DISTINCT civicrm_group.id, civicrm_group.title ';
- $from = ' FROM civicrm_group ';
- $where = " WHERE civicrm_group.is_active = 1 ";
+ $from = ' FROM civicrm_group ';
+ $where = " WHERE civicrm_group.is_active = 1 ";
if ($contactId) {
$from .= ' , civicrm_group_contact ';
$where .= " AND civicrm_group.id = civicrm_group_contact.group_id
}
/**
- * 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.
*
* @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,
- $count = FALSE,
+ $status = NULL,
+ $numGroupContact = NULL,
+ $count = FALSE,
$ignorePermission = FALSE,
$onlyPublicGroups = FALSE,
- $excludeHidden = TRUE,
- $groupId = NULL
+ $excludeHidden = TRUE,
+ $groupId = NULL
) {
if ($count) {
$select = 'SELECT count(DISTINCT civicrm_group_contact.id)';
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 ";
$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) {
}
/**
- * 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.
* @param string $method
* If we want the subscription history details for a specific method.
*
- * @return object of group contact
- * @static
+ * @return object
+ * of group contact
*/
public static function getMembershipDetail($contactId, $groupID, $method = 'Email') {
$leftJoin = $where = $orderBy = NULL;
}
/**
- * Method to get Group Id
+ * Method to get Group Id.
*
* @param int $groupContactID
* Id of a perticuler group.
*
*
* @return groupID
- * @static
*/
public static function getGroupId($groupContactID) {
$dao = new CRM_Contact_DAO_GroupContact();
* @param string $method
*
* @return void
- * @static
*/
public static function create(&$params, $contactId, $visibility = FALSE, $method = 'Admin') {
$contactIds = array();
}
/**
- * Function merges the groups from otherContactID to mainContactID
+ * Function merges the groups from otherContactID to mainContactID.
* along with subscription history
*
* @param int $mainContactId
*
* TODO: use the 3rd $sqls param to append sql statements rather than executing them here
*
- * @return void.
- * @static
+ * @return void
+ *
*/
public static function mergeGroupContact($mainContactId, $otherContactId) {
- $params = array(1 => array($mainContactId, 'Integer'),
+ $params = array(
+ 1 => array($mainContactId, 'Integer'),
2 => array($otherContactId, 'Integer'),
);
* @param string $status
* @param NULL $tracking
*
- * @return array (total, added, notAdded) count of contacts added to group
- * @static
+ * @return array
+ * (total, added, notAdded) count of contacts added to group
*/
- static function bulkAddContactsToGroup(
+ public static function bulkAddContactsToGroup(
$contactIDs,
$groupID,
- $method = 'Admin',
- $status = 'Added',
+ $method = 'Admin',
+ $status = 'Added',
$tracking = NULL
) {
AND status = %2
AND contact_id IN ( $contactStr )
";
- $params = array(1 => array($groupID, 'Integer'),
+ $params = array(
+ 1 => array($groupID, 'Integer'),
2 => array($status, 'String'),
);
*
* @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.
+ * whatever is known about this dao object.
*
- * @return Array|bool
+ * @return array|bool
*/
public static function buildOptions($fieldName, $context = NULL, $props = array()) {
$params = array();
return $options;
}
+
}