Merge pull request #18538 from eileenmcnaughton/name
[civicrm-core.git] / CRM / Activity / BAO / ActivityAssignment.php
CommitLineData
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 21class 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
67SELECT contact_id
68FROM civicrm_activity_contact
91da6cd5
DL
69INNER JOIN civicrm_contact ON contact_id = civicrm_contact.id
70WHERE activity_id = %1
a24b3694 71AND record_type_id = $assigneeID
91da6cd5
DL
72AND 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
114SELECT contact_a.id, contact_a.sort_name, contact_a.display_name, ce.email,
115 civicrm_activity_contact.activity_id
91da6cd5 116FROM civicrm_contact contact_a
1d85d241 117INNER JOIN civicrm_activity_contact ON civicrm_activity_contact.contact_id = contact_a.id
91da6cd5 118LEFT JOIN civicrm_email ce ON ce.contact_id = contact_a.id
90b05581 119WHERE civicrm_activity_contact.activity_id IN ( $inClause )
91da6cd5 120AND contact_a.is_deleted = 0
f813f78e 121AND 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}