Merge pull request #5654 from yourcelf/master
[civicrm-core.git] / CRM / Contact / BAO / GroupContact.php
index 505f92cf2379415b345cb124e6f60a781c337306..90609af0833a92a9afa8b60a31d02c270bc86dba 100644 (file)
@@ -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.                                    |
  |                                                                    |
  | 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
    * pairs
    *
-   * @param array  $params         (reference ) an assoc array of name/value pairs
+   * @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) {
 
@@ -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
+   * @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
@@ -88,11 +88,13 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact {
    * Given the list of params in the params array, fetch the object
    * and store the values in the values array
    *
-   * @param array $params input parameters to find object
-   * @param array $values output values of the object
+   * @param array $params
+   *   Input parameters to find object.
+   * @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)) {
@@ -116,34 +118,29 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact {
   /**
    * Given an array of contact ids, add all the contacts to the group
    *
-   * @param array $contactIds the array of contact ids to be added
-   * @param int $groupId the id of the group
+   * @param array $contactIds
+   *   The array of contact ids to be added.
+   * @param int $groupId
+   *   The id of the group.
    * @param string $method
    * @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();
@@ -163,21 +160,23 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact {
   /**
    * Given an array of contact ids, remove all the contacts from the group
    *
-   * @param array $contactIds (reference ) the array of contact ids to be removed
-   * @param int $groupId the id of the group
+   * @param array $contactIds
+   *   (reference ) the array of contact ids to be removed.
+   * @param int $groupId
+   *   The id of the group.
    *
    * @param string $method
    * @param string $status
-   * @param null $tracking
+   * @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)) {
@@ -203,8 +202,8 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact {
 
     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,
@@ -261,15 +260,16 @@ 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
+   * @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();
@@ -277,8 +277,8 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact {
     $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
@@ -303,33 +303,38 @@ 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
-   * @param string $status state of membership
-   * @param int $numGroupContact number of groups for a contact that should be shown
-   * @param boolean $count true if we are interested only in the count
-   * @param boolean $ignorePermission true if we should ignore permissions for the current user
+   * @param int $contactId
+   *   Contact id.
+   * @param string $status
+   *   State of membership.
+   * @param int $numGroupContact
+   *   Number of groups for a contact that should be shown.
+   * @param bool $count
+   *   True if we are interested only in the count.
+   * @param bool $ignorePermission
+   *   True if we should ignore permissions for the current user.
    *                                   useful in profile where permissions are limited for the user. If left
    *                                   at false only groups viewable by the current user are returned
-   * @param boolean $onlyPublicGroups true if we want to hide system groups
+   * @param bool $onlyPublicGroups
+   *   True if we want to hide system groups.
    *
    * @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)';
@@ -434,17 +439,20 @@ 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
-   * @param  int  $groupID   Id of a perticuler group
-   * @param  string $method    If we want the subscription history details for a specific method
+   * @param int $contactId
+   *   Id of the contact.
+   * @param int $groupID
+   *   Id of a perticuler group.
+   * @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;
+    $leftJoin = $where = $orderBy = NULL;
 
     if ($method) {
       //CRM-13341 add group_id clause
@@ -475,13 +483,13 @@ SELECT    *
   }
 
   /**
-   * Method to get Group Id
+   * Method to get Group Id.
    *
-   * @param  int  $groupContactID   Id of a perticuler group
+   * @param int $groupContactID
+   *   Id of a perticuler group.
    *
    *
    * @return groupID
-   * @static
    */
   public static function getGroupId($groupContactID) {
     $dao = new CRM_Contact_DAO_GroupContact();
@@ -495,14 +503,15 @@ SELECT    *
    * contacts from the groups
    *
    *
-   * @param array $params (reference ) an assoc array of name/value pairs
-   * @param array $contactId contact id
+   * @param array $params
+   *   (reference ) an assoc array of name/value pairs.
+   * @param array $contactId
+   *   Contact id.
    *
    * @param bool $visibility
    * @param string $method
    *
    * @return void
-   * @static
    */
   public static function create(&$params, $contactId, $visibility = FALSE, $method = 'Admin') {
     $contactIds = array();
@@ -578,21 +587,24 @@ SELECT    *
   }
 
   /**
-   * Function merges the groups from otherContactID to mainContactID
+   * Function merges the groups from otherContactID to mainContactID.
    * along with subscription history
    *
-   * @param int $mainContactId    contact id of main contact record.
-   * @param int $otherContactId   contact id of record which is going to merge.
+   * @param int $mainContactId
+   *   Contact id of main contact record.
+   * @param int $otherContactId
+   *   Contact id of record which is going to merge.
    *
    * @see CRM_Dedupe_Merger::cpTables()
    *
    * 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'),
     );
 
@@ -688,20 +700,22 @@ AND       group_id IN ( $groupIDString )
   /**
    * Given an array of contact ids, add all the contacts to the group
    *
-   * @param array $contactIDs the array of contact ids to be added
-   * @param int $groupID the id of the group
+   * @param array $contactIDs
+   *   The array of contact ids to be added.
+   * @param int $groupID
+   *   The id of the group.
    * @param string $method
    * @param string $status
-   * @param null $tracking
+   * @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
   ) {
 
@@ -732,7 +746,8 @@ WHERE  group_id = %1
 AND    status = %2
 AND    contact_id IN ( $contactStr )
 ";
-      $params = array(1 => array($groupID, 'Integer'),
+      $params = array(
+        1 => array($groupID, 'Integer'),
         2 => array($status, 'String'),
       );
 
@@ -771,11 +786,13 @@ AND    contact_id IN ( $contactStr )
    * Get options for a given field.
    * @see CRM_Core_DAO::buildOptions
    *
-   * @param String $fieldName
-   * @param String $context : @see CRM_Core_DAO::buildOptionsContext
-   * @param Array $props : whatever is known about this dao object
+   * @param string $fieldName
+   * @param string $context
+   * @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();
@@ -790,4 +807,5 @@ AND    contact_id IN ( $contactStr )
 
     return $options;
   }
+
 }