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_ActivityAssignment 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 | /** | |
31 | * Add activity assignment. | |
32 | * | |
041ab3d1 TO |
33 | * @param array $params |
34 | * (reference ) an assoc array of name/value pairs. | |
fd31fa4c | 35 | * |
a6c01b45 CW |
36 | * @return object |
37 | * activity type of object that is added | |
6a488035 TO |
38 | */ |
39 | public static function create(&$params) { | |
cc1c86e9 | 40 | $assignment = new CRM_Activity_BAO_ActivityContact(); |
44f817d4 | 41 | $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); |
a24b3694 | 42 | $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); |
6a488035 TO |
43 | |
44 | $assignment->copyValues($params); | |
a24b3694 | 45 | $assignment->record_type_id = $assigneeID; |
cc1c86e9 | 46 | |
6a488035 TO |
47 | return $assignment->save(); |
48 | } | |
49 | ||
50 | /** | |
fe482240 | 51 | * Retrieve assignee_id by activity_id. |
6a488035 | 52 | * |
c490a46a | 53 | * @param int $activity_id |
6a488035 | 54 | * |
91d49cae | 55 | * @return array |
6a488035 | 56 | */ |
00be9182 | 57 | public static function retrieveAssigneeIdsByActivityId($activity_id) { |
96f94695 | 58 | $assigneeArray = []; |
6a488035 TO |
59 | if (!CRM_Utils_Rule::positiveInteger($activity_id)) { |
60 | return $assigneeArray; | |
61 | } | |
62 | ||
44f817d4 | 63 | $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); |
a24b3694 | 64 | $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); |
65 | ||
91da6cd5 | 66 | $sql = " |
1d85d241 DL |
67 | SELECT contact_id |
68 | FROM civicrm_activity_contact | |
91da6cd5 DL |
69 | INNER JOIN civicrm_contact ON contact_id = civicrm_contact.id |
70 | WHERE activity_id = %1 | |
a24b3694 | 71 | AND record_type_id = $assigneeID |
91da6cd5 DL |
72 | AND civicrm_contact.is_deleted = 0 |
73 | "; | |
96f94695 | 74 | $assignment = CRM_Core_DAO::executeQuery($sql, [ |
75 | 1 => [ | |
76 | $activity_id, | |
77 | 'Integer', | |
78 | ], | |
79 | ]); | |
6a488035 | 80 | while ($assignment->fetch()) { |
91da6cd5 | 81 | $assigneeArray[] = $assignment->contact_id; |
6a488035 TO |
82 | } |
83 | ||
84 | return $assigneeArray; | |
85 | } | |
86 | ||
87 | /** | |
fe482240 | 88 | * Retrieve assignee names by activity_id. |
6a488035 | 89 | * |
041ab3d1 TO |
90 | * @param array $activityIDs |
91 | * IDs of the activities. | |
92 | * @param bool $isDisplayName | |
93 | * If set returns display names of assignees. | |
94 | * @param bool $skipDetails | |
95 | * If false returns all details of assignee contact. | |
6a488035 TO |
96 | * |
97 | * @return array | |
6a488035 | 98 | */ |
00be9182 | 99 | public static function getAssigneeNames($activityIDs, $isDisplayName = FALSE, $skipDetails = TRUE) { |
96f94695 | 100 | $assigneeNames = []; |
90b05581 | 101 | if (empty($activityIDs)) { |
6a488035 TO |
102 | return $assigneeNames; |
103 | } | |
44f817d4 | 104 | $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); |
a24b3694 | 105 | $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); |
6a488035 TO |
106 | |
107 | $whereClause = ""; | |
108 | if (!$skipDetails) { | |
109 | $whereClause = " AND ce.is_primary= 1"; | |
110 | } | |
90b05581 | 111 | $inClause = implode(",", $activityIDs); |
6a488035 | 112 | |
91da6cd5 | 113 | $query = " |
90b05581 DG |
114 | SELECT contact_a.id, contact_a.sort_name, contact_a.display_name, ce.email, |
115 | civicrm_activity_contact.activity_id | |
91da6cd5 | 116 | FROM civicrm_contact contact_a |
1d85d241 | 117 | INNER JOIN civicrm_activity_contact ON civicrm_activity_contact.contact_id = contact_a.id |
91da6cd5 | 118 | LEFT JOIN civicrm_email ce ON ce.contact_id = contact_a.id |
90b05581 | 119 | WHERE civicrm_activity_contact.activity_id IN ( $inClause ) |
91da6cd5 | 120 | AND contact_a.is_deleted = 0 |
f813f78e | 121 | AND civicrm_activity_contact.record_type_id = $assigneeID |
91da6cd5 DL |
122 | {$whereClause} |
123 | "; | |
6a488035 | 124 | |
90b05581 | 125 | $dao = CRM_Core_DAO::executeQuery($query); |
6a488035 TO |
126 | while ($dao->fetch()) { |
127 | if (!$isDisplayName) { | |
128 | $assigneeNames[$dao->id] = $dao->sort_name; | |
129 | } | |
130 | else { | |
131 | if ($skipDetails) { | |
132 | $assigneeNames[$dao->id] = $dao->display_name; | |
133 | } | |
134 | else { | |
135 | $assigneeNames[$dao->id]['contact_id'] = $dao->id; | |
136 | $assigneeNames[$dao->id]['display_name'] = $dao->display_name; | |
137 | $assigneeNames[$dao->id]['sort_name'] = $dao->sort_name; | |
138 | $assigneeNames[$dao->id]['email'] = $dao->email; | |
139 | $assigneeNames[$dao->id]['role'] = ts('Activity Assignee'); | |
90b05581 | 140 | $assigneeNames[$dao->id]['activity_id'] = $dao->activity_id; |
6a488035 TO |
141 | } |
142 | } | |
143 | } | |
144 | return $assigneeNames; | |
145 | } | |
96025800 | 146 | |
6a488035 | 147 | } |