Merge pull request #23561 from eileenmcnaughton/import_catcher_
[civicrm-core.git] / CRM / Activity / Task.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/**
6a488035 13 * @package CRM
ca5cec67 14 * @copyright CiviCRM LLC https://civicrm.org/licensing
6a488035
TO
15 */
16
17/**
3819f101 18 * Class to represent the actions that can be performed on a group of contacts used by the search forms.
6a488035 19 */
be509c11 20class CRM_Activity_Task extends CRM_Core_Task {
6a488035 21
62d3ee27 22 public static $objectType = 'activity';
6a488035
TO
23
24 /**
7808aae6
SB
25 * These tasks are the core set of tasks that the user can perform
26 * on a contact / group of contacts.
6a488035 27 *
a6c01b45
CW
28 * @return array
29 * the set of tasks for a group of contacts
6a488035 30 */
be509c11 31 public static function tasks() {
6a488035 32 if (!(self::$_tasks)) {
be2fb01f
CW
33 self::$_tasks = [
34 self::TASK_DELETE => [
7f82e636 35 'title' => ts('Delete activities'),
6a488035
TO
36 'class' => 'CRM_Activity_Form_Task_Delete',
37 'result' => FALSE,
be2fb01f
CW
38 ],
39 self::TASK_PRINT => [
7f82e636 40 'title' => ts('Print selected rows'),
6a488035
TO
41 'class' => 'CRM_Activity_Form_Task_Print',
42 'result' => FALSE,
be2fb01f
CW
43 ],
44 self::TASK_EXPORT => [
7f82e636 45 'title' => ts('Export activities'),
be2fb01f 46 'class' => [
0a595a2e 47 'CRM_Activity_Export_Form_Select',
48 'CRM_Activity_Export_Form_Map',
be2fb01f 49 ],
6a488035 50 'result' => FALSE,
be2fb01f
CW
51 ],
52 self::BATCH_UPDATE => [
b581842f 53 'title' => ts('Update multiple activities'),
be2fb01f 54 'class' => [
6a488035
TO
55 'CRM_Activity_Form_Task_PickProfile',
56 'CRM_Activity_Form_Task_Batch',
be2fb01f 57 ],
6a488035 58 'result' => FALSE,
be2fb01f
CW
59 ],
60 self::TASK_EMAIL => [
61 'title' => ts('Email - send now (to %1 or less)', [
21d01648
MW
62 1 => Civi::settings()
63 ->get('simple_mail_limit'),
be2fb01f
CW
64 ]),
65 'class' => [
6a488035
TO
66 'CRM_Activity_Form_Task_PickOption',
67 'CRM_Activity_Form_Task_Email',
be2fb01f 68 ],
6a488035 69 'result' => FALSE,
be2fb01f 70 ],
da9977bd
AS
71 self::PDF_LETTER => [
72 'title' => ts('Print/merge Document'),
73 'class' => 'CRM_Activity_Form_Task_PDF',
74 'result' => FALSE,
75 ],
be2fb01f 76 self::TASK_SMS => [
7f82e636 77 'title' => ts('SMS - send reply'),
6a488035
TO
78 'class' => 'CRM_Activity_Form_Task_SMS',
79 'result' => FALSE,
be2fb01f
CW
80 ],
81 self::TAG_ADD => [
7f82e636 82 'title' => ts('Tag - add to activities'),
f70ca446
PN
83 'class' => 'CRM_Activity_Form_Task_AddToTag',
84 'result' => FALSE,
be2fb01f
CW
85 ],
86 self::TAG_REMOVE => [
7f82e636 87 'title' => ts('Tag - remove from activities'),
f70ca446
PN
88 'class' => 'CRM_Activity_Form_Task_RemoveFromTag',
89 'result' => FALSE,
be2fb01f
CW
90 ],
91 ];
6a488035 92
e46f73c7 93 if (CRM_Core_Component::isEnabled('CiviCase')) {
481a74f4 94 if (CRM_Core_Permission::check('access all cases and activities') ||
353ffa53
TO
95 CRM_Core_Permission::check('access my cases and activities')
96 ) {
be2fb01f 97 self::$_tasks[self::TASK_SMS] = [
7f82e636 98 'title' => ts('File on case'),
bbfeec41
BS
99 'class' => 'CRM_Activity_Form_Task_FileOnCase',
100 'result' => FALSE,
be2fb01f 101 ];
bbfeec41 102 }
6a488035
TO
103 }
104
7808aae6 105 // CRM-4418, check for delete
6a488035 106 if (!CRM_Core_Permission::check('delete activities')) {
be509c11 107 unset(self::$_tasks[self::TASK_DELETE]);
6a488035 108 }
4d73a5a7 109
be509c11 110 parent::tasks();
6a488035 111 }
4d73a5a7 112
6a488035
TO
113 return self::$_tasks;
114 }
115
6a488035 116 /**
7808aae6 117 * Show tasks selectively based on the permission level of the user.
6a488035
TO
118 *
119 * @param int $permission
be509c11 120 * @param array $params
6a488035 121 *
a6c01b45
CW
122 * @return array
123 * set of tasks that are valid for the user
6a488035 124 */
be2fb01f 125 public static function permissionedTaskTitles($permission, $params = []) {
6a488035
TO
126 if ($permission == CRM_Core_Permission::EDIT) {
127 $tasks = self::taskTitles();
128 }
129 else {
be2fb01f 130 $tasks = [
be509c11 131 self::TASK_EXPORT => self::$_tasks[self::TASK_EXPORT]['title'],
be2fb01f 132 ];
6a488035
TO
133
134 //CRM-4418,
135 if (CRM_Core_Permission::check('delete activities')) {
be509c11 136 $tasks[self::TASK_DELETE] = self::$_tasks[self::TASK_DELETE]['title'];
6a488035
TO
137 }
138 }
be509c11
MW
139
140 $tasks = parent::corePermissionedTaskTitles($tasks, $permission, $params);
6a488035
TO
141 return $tasks;
142 }
143
144 /**
7808aae6 145 * These tasks are the core set of tasks that the user can perform on activity.
6a488035
TO
146 *
147 * @param int $value
148 *
a6c01b45
CW
149 * @return array
150 * the set of tasks for a group of activity
6a488035 151 */
00be9182 152 public static function getTask($value) {
6a488035 153 self::tasks();
b99f3e96 154 if (!$value || empty(self::$_tasks[$value])) {
6a488035 155 // make the print task by default
be509c11 156 $value = self::TASK_PRINT;
6a488035 157 }
20eb1cf7 158 if (isset(self::$_tasks[$value])) {
c8f3c0f5 159 return [(array) self::$_tasks[$value]['class'], self::$_tasks[$value]['result']];
20eb1cf7
EM
160 }
161 return [[], NULL];
6a488035 162 }
96025800 163
6a488035 164}