Merge pull request #1786 from totten/4.4-smarty-ts
[civicrm-core.git] / CRM / Activity / BAO / ActivityContact.php
index ec9bc9200fbcfef2a79dcde747a9890129e6c2df..fd575852525c9701e113233cace6424d27db2968 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -59,6 +59,87 @@ class CRM_Activity_BAO_ActivityContact extends CRM_Activity_DAO_ActivityContact
     $activityContact = new CRM_Activity_DAO_ActivityContact();
 
     $activityContact->copyValues($params);
-    return $activityContact->save();
+    if (!$activityContact->find(TRUE)) {
+      return $activityContact->save();
+    }
+    return $activityContact;
   }
+
+  /**
+   * function to retrieve names of contact by activity_id
+   *
+   * @param int    $id   ID of the activity
+   * @param string $type type of interaction
+   *
+   * @return array
+   *
+   * @access public
+   *
+   */
+  static function getNames($activityID, $recordTypeID, $alsoIDs = FALSE) {
+    $names = array();
+    $ids   = array();
+
+    if (empty($activityID)) {
+      return $alsoIDs ? array($names, $ids) : $names;
+    }
+
+    $query = "
+SELECT     contact_a.id, contact_a.sort_name
+FROM       civicrm_contact contact_a
+INNER JOIN civicrm_activity_contact ON civicrm_activity_contact.contact_id = contact_a.id
+WHERE      civicrm_activity_contact.activity_id = %1
+AND        civicrm_activity_contact.record_type_id = %2
+AND        contact_a.is_deleted = 0
+";
+    $params = array(
+      1 => array($activityID, 'Integer'),
+      2 => array($recordTypeID, 'Integer')
+    );
+
+    $dao = CRM_Core_DAO::executeQuery($query, $params);
+    while ($dao->fetch()) {
+      $names[$dao->id] = $dao->sort_name;
+      $ids[] = $dao->id;
+    }
+
+    return $alsoIDs ? array($names, $ids) : $names;
+  }
+
+  /**
+   * function to retrieve id of target contact by activity_id
+   *
+   * @param int    $id  ID of the activity
+   *
+   * @return mixed
+   *
+   * @access public
+   *
+   */
+  static function retrieveContactIdsByActivityId($activityID, $recordTypeID) {
+    $activityContact = array();
+    if (!CRM_Utils_Rule::positiveInteger($activityID) ||
+        !CRM_Utils_Rule::positiveInteger($recordTypeID)) {
+      return $activityContact;
+    }
+
+    $sql = "                                                                                                                                                                                             SELECT     contact_id
+FROM       civicrm_activity_contact
+INNER JOIN civicrm_contact ON contact_id = civicrm_contact.id
+WHERE      activity_id = %1
+AND        record_type_id = %2
+AND        civicrm_contact.is_deleted = 0
+";
+    $params = array(
+      1 => array($activityID, 'Integer'),
+      2 => array($recordTypeID, 'Integer')
+    );
+
+    $dao = CRM_Core_DAO::executeQuery($sql, $params);
+    while ($dao->fetch()) {
+      $activityContact[] = $dao->contact_id;
+    }
+    return $activityContact;
+  }
+
 }