Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
bc77d7c0 | 4 | | Copyright CiviCRM LLC. All rights reserved. | |
6a488035 | 5 | | | |
bc77d7c0 TO |
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 | | |
6a488035 | 9 | +--------------------------------------------------------------------+ |
d25dd0ee | 10 | */ |
6a488035 TO |
11 | |
12 | /** | |
13 | * | |
14 | * @package CRM | |
ca5cec67 | 15 | * @copyright CiviCRM LLC https://civicrm.org/licensing |
6a488035 TO |
16 | */ |
17 | ||
18 | /** | |
3819f101 | 19 | * This class is for activity assignment functions. |
6a488035 | 20 | */ |
91da6cd5 | 21 | class CRM_Activity_BAO_ActivityTarget extends CRM_Activity_DAO_ActivityContact { |
6a488035 TO |
22 | |
23 | /** | |
fe482240 | 24 | * Class constructor. |
6a488035 | 25 | */ |
00be9182 | 26 | public function __construct() { |
6a488035 TO |
27 | parent::__construct(); |
28 | } | |
29 | ||
30 | /** | |
fe482240 | 31 | * Add activity target. |
6a488035 | 32 | * |
c490a46a | 33 | * @param array $params |
6a488035 | 34 | * |
a6c01b45 CW |
35 | * @return object |
36 | * activity type of object that is added | |
6a488035 TO |
37 | */ |
38 | public static function create(&$params) { | |
91da6cd5 | 39 | $target = new CRM_Activity_BAO_ActivityContact(); |
44f817d4 | 40 | $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); |
a24b3694 | 41 | $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); |
f813f78e | 42 | |
6a488035 | 43 | $target->copyValues($params); |
33421d01 | 44 | $target->record_type_id = $targetID; |
6a488035 TO |
45 | return $target->save(); |
46 | } | |
47 | ||
48 | /** | |
fe482240 | 49 | * Retrieve id of target contact by activity_id. |
6c8f6e67 | 50 | * |
c490a46a | 51 | * @param int $activity_id |
6a488035 TO |
52 | * |
53 | * @return mixed | |
6a488035 | 54 | */ |
00be9182 | 55 | public static function retrieveTargetIdsByActivityId($activity_id) { |
96f94695 | 56 | $targetArray = []; |
6a488035 TO |
57 | if (!CRM_Utils_Rule::positiveInteger($activity_id)) { |
58 | return $targetArray; | |
59 | } | |
60 | ||
44f817d4 | 61 | $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); |
a24b3694 | 62 | $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); |
63 | ||
91da6cd5 DL |
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 | |
a24b3694 | 69 | AND record_type_id = $targetID |
91da6cd5 DL |
70 | AND civicrm_contact.is_deleted = 0 |
71 | "; | |
96f94695 | 72 | $target = CRM_Core_DAO::executeQuery($sql, [ |
73 | 1 => [ | |
74 | $activity_id, | |
75 | 'Integer', | |
76 | ], | |
77 | ]); | |
6a488035 | 78 | while ($target->fetch()) { |
91da6cd5 | 79 | $targetArray[] = $target->contact_id; |
6a488035 TO |
80 | } |
81 | return $targetArray; | |
82 | } | |
83 | ||
84 | /** | |
fe482240 | 85 | * Retrieve names of target contact by activity_id. |
fd31fa4c | 86 | * |
c490a46a | 87 | * @param int $activityID |
6a488035 TO |
88 | * |
89 | * @return array | |
6a488035 | 90 | */ |
00be9182 | 91 | public static function getTargetNames($activityID) { |
96f94695 | 92 | $targetNames = []; |
6a488035 TO |
93 | |
94 | if (empty($activityID)) { | |
95 | return $targetNames; | |
96 | } | |
44f817d4 | 97 | $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); |
a24b3694 | 98 | $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); |
6a488035 | 99 | |
91da6cd5 DL |
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 | |
a24b3694 | 105 | AND civicrm_activity_contact.record_type_id = $targetID |
91da6cd5 DL |
106 | AND contact_a.is_deleted = 0 |
107 | "; | |
96f94695 | 108 | $queryParam = [1 => [$activityID, 'Integer']]; |
6a488035 TO |
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 | } | |
96025800 | 117 | |
6a488035 | 118 | } |