Merge in 5.20
[civicrm-core.git] / CRM / Activity / BAO / ActivityTarget.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
10 */
11
12 /**
13 *
14 * @package CRM
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
16 */
17
18 /**
19 * This class is for activity assignment functions.
20 */
21 class CRM_Activity_BAO_ActivityTarget extends CRM_Activity_DAO_ActivityContact {
22
23 /**
24 * Class constructor.
25 */
26 public function __construct() {
27 parent::__construct();
28 }
29
30 /**
31 * Add activity target.
32 *
33 * @param array $params
34 *
35 * @return object
36 * activity type of object that is added
37 */
38 public static function create(&$params) {
39 $target = new CRM_Activity_BAO_ActivityContact();
40 $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
41 $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
42
43 $target->copyValues($params);
44 $target->record_type_id = $targetID;
45 return $target->save();
46 }
47
48 /**
49 * Retrieve id of target contact by activity_id.
50 *
51 * @param int $activity_id
52 *
53 * @return mixed
54 */
55 public static function retrieveTargetIdsByActivityId($activity_id) {
56 $targetArray = [];
57 if (!CRM_Utils_Rule::positiveInteger($activity_id)) {
58 return $targetArray;
59 }
60
61 $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
62 $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
63
64 $sql = "
65 SELECT contact_id
66 FROM civicrm_activity_contact
67 INNER JOIN civicrm_contact ON contact_id = civicrm_contact.id
68 WHERE activity_id = %1
69 AND record_type_id = $targetID
70 AND civicrm_contact.is_deleted = 0
71 ";
72 $target = CRM_Core_DAO::executeQuery($sql, [
73 1 => [
74 $activity_id,
75 'Integer',
76 ],
77 ]);
78 while ($target->fetch()) {
79 $targetArray[] = $target->contact_id;
80 }
81 return $targetArray;
82 }
83
84 /**
85 * Retrieve names of target contact by activity_id.
86 *
87 * @param int $activityID
88 *
89 * @return array
90 */
91 public static function getTargetNames($activityID) {
92 $targetNames = [];
93
94 if (empty($activityID)) {
95 return $targetNames;
96 }
97 $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
98 $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts);
99
100 $query = "
101 SELECT contact_a.id, contact_a.sort_name
102 FROM civicrm_contact contact_a
103 INNER JOIN civicrm_activity_contact ON civicrm_activity_contact.contact_id = contact_a.id
104 WHERE civicrm_activity_contact.activity_id = %1
105 AND civicrm_activity_contact.record_type_id = $targetID
106 AND contact_a.is_deleted = 0
107 ";
108 $queryParam = [1 => [$activityID, 'Integer']];
109
110 $dao = CRM_Core_DAO::executeQuery($query, $queryParam);
111 while ($dao->fetch()) {
112 $targetNames[$dao->id] = $dao->sort_name;
113 }
114
115 return $targetNames;
116 }
117
118 }