Another set of PHPdoc corrections
[civicrm-core.git] / CRM / Contribute / 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/**
13 *
14 * @package CRM
ca5cec67 15 * @copyright CiviCRM LLC https://civicrm.org/licensing
6a488035
TO
16 */
17
18/**
347e061b 19 * Class to represent the actions that can be performed on a group of contacts.
6a488035 20 *
347e061b 21 * Used by the search forms.
6a488035 22 */
1a72712d 23class CRM_Contribute_Task extends CRM_Core_Task {
6a488035 24
1330f57a
SL
25 /**
26 * Contribution tasks
27 */
1a72712d 28 const
1a72712d
MW
29 UPDATE_STATUS = 401,
30 PDF_RECEIPT = 402,
31 PDF_THANKYOU = 403,
32 PDF_INVOICE = 404;
6a488035 33
1330f57a
SL
34 /**
35 * @var string
36 */
37 public static $objectType = 'contribution';
6a488035
TO
38
39 /**
40 * These tasks are the core set of tasks that the user can perform
41 * on a contact / group of contacts
42 *
a6c01b45
CW
43 * @return array
44 * the set of tasks for a group of contacts
6a488035 45 */
42e8b05c 46 public static function tasks() {
6a488035 47 if (!(self::$_tasks)) {
be2fb01f
CW
48 self::$_tasks = [
49 self::TASK_DELETE => [
7f82e636 50 'title' => ts('Delete contributions'),
6a488035
TO
51 'class' => 'CRM_Contribute_Form_Task_Delete',
52 'result' => FALSE,
be2fb01f
CW
53 ],
54 self::TASK_PRINT => [
7f82e636 55 'title' => ts('Print selected rows'),
6a488035
TO
56 'class' => 'CRM_Contribute_Form_Task_Print',
57 'result' => FALSE,
be2fb01f
CW
58 ],
59 self::TASK_EXPORT => [
7f82e636 60 'title' => ts('Export contributions'),
be2fb01f 61 'class' => [
0a595a2e 62 'CRM_Contribute_Export_Form_Select',
63 'CRM_Contribute_Export_Form_Map',
be2fb01f 64 ],
6a488035 65 'result' => FALSE,
be2fb01f
CW
66 ],
67 self::BATCH_UPDATE => [
b581842f 68 'title' => ts('Update multiple contributions'),
be2fb01f 69 'class' => [
6a488035
TO
70 'CRM_Contribute_Form_Task_PickProfile',
71 'CRM_Contribute_Form_Task_Batch',
be2fb01f 72 ],
6a488035 73 'result' => TRUE,
be2fb01f
CW
74 ],
75 self::TASK_EMAIL => [
76 'title' => ts('Email - send now (to %1 or less)', [
21d01648
MW
77 1 => Civi::settings()
78 ->get('simple_mail_limit'),
be2fb01f 79 ]),
6a488035
TO
80 'class' => 'CRM_Contribute_Form_Task_Email',
81 'result' => TRUE,
be2fb01f
CW
82 ],
83 self::UPDATE_STATUS => [
fd7525a8 84 'title' => ts('Record payments for contributions'),
6a488035
TO
85 'class' => 'CRM_Contribute_Form_Task_Status',
86 'result' => TRUE,
be2fb01f
CW
87 ],
88 self::PDF_RECEIPT => [
79e4c2ad 89 'title' => ts('Receipts - print or email'),
6a488035
TO
90 'class' => 'CRM_Contribute_Form_Task_PDF',
91 'result' => FALSE,
813e32ef 92 'title_single_mode' => ts('Send Receipt'),
93 'name' => ts('Send Receipt'),
6cedc657 94 'url' => 'civicrm/contribute/task?reset=1&task_item=receipt',
813e32ef 95 'key' => 'receipt',
dd874785 96 'icon' => 'fa-envelope-o',
813e32ef 97 'filters' => ['contribution_status_id' => [CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')]],
98 'is_single_mode' => TRUE,
be2fb01f
CW
99 ],
100 self::PDF_THANKYOU => [
79e4c2ad 101 'title' => ts('Thank-you letters - print or email'),
6a488035
TO
102 'class' => 'CRM_Contribute_Form_Task_PDFLetter',
103 'result' => FALSE,
6cedc657 104 'url' => 'civicrm/contribute/task?reset=1&task_item=letter',
2c2cf700 105 'key' => 'letter',
106 'name' => ts('Send Letter'),
107 'is_single_mode' => TRUE,
108 'title_single_mode' => ts('Thank-you letter - print or email'),
be2fb01f
CW
109 ],
110 self::PDF_INVOICE => [
79e4c2ad 111 'title' => ts('Invoices - print or email'),
9849720e
RK
112 'class' => 'CRM_Contribute_Form_Task_Invoice',
113 'result' => FALSE,
be2fb01f
CW
114 ],
115 ];
6a488035
TO
116
117 //CRM-4418, check for delete
118 if (!CRM_Core_Permission::check('delete in CiviContribute')) {
1a72712d 119 unset(self::$_tasks[self::TASK_DELETE]);
6a488035 120 }
447c72b5 121 //CRM-12920 - check for edit permission
481a74f4 122 if (!CRM_Core_Permission::check('edit contributions')) {
1a72712d 123 unset(self::$_tasks[self::BATCH_UPDATE], self::$_tasks[self::UPDATE_STATUS]);
447c72b5 124 }
6a488035 125
79e4c2ad 126 // remove action "Invoices - print or email"
8ab8dfbf 127 $invoicing = CRM_Invoicing_Utils::isInvoicingEnabled();
e0d683cf 128 if (!$invoicing) {
1a72712d 129 unset(self::$_tasks[self::PDF_INVOICE]);
e0d683cf 130 }
4d73a5a7 131
1a72712d 132 parent::tasks();
6a488035
TO
133 }
134
135 return self::$_tasks;
136 }
137
813e32ef 138 /**
139 * Get links appropriate to the context of the row.
140 *
fa3fdebc 141 * @param array $row
813e32ef 142 *
143 * @return array
144 */
145 public static function getContextualLinks($row) {
146 $tasks = self::tasks();
147 foreach ($tasks as $key => $task) {
148 if (empty($task['is_single_mode'])) {
149 unset($tasks[$key]);
150 continue;
151 }
152 if (!empty($task['filters'])) {
153 foreach ($task['filters'] as $filter => $values) {
154 if (!in_array($row[$filter], $values, FALSE)) {
155 unset($tasks[$key]);
156 continue 2;
157 }
158 }
159 }
dd874785
CW
160 $tasks[$key]['url'] = $task['url'];
161 $tasks[$key]['qs'] = ['id' => $row['contribution_id']];
813e32ef 162 $tasks[$key]['title'] = $task['title_single_mode'] ?? $task['title'];
163 }
164 return $tasks;
165 }
166
6a488035 167 /**
100fef9d 168 * Show tasks selectively based on the permission level
6a488035
TO
169 * of the user
170 *
171 * @param int $permission
172 *
1a72712d
MW
173 * @param array $params
174 * bool softCreditFiltering: derived from CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled
dd244018 175 *
a6c01b45
CW
176 * @return array
177 * set of tasks that are valid for the user
6a488035 178 */
be2fb01f 179 public static function permissionedTaskTitles($permission, $params = []) {
1a72712d
MW
180 if (!isset($params['softCreditFiltering'])) {
181 $params['softCreditFiltering'] = FALSE;
182 }
6a488035
TO
183 if (($permission == CRM_Core_Permission::EDIT)
184 || CRM_Core_Permission::check('edit contributions')
185 ) {
186 $tasks = self::taskTitles();
187 }
188 else {
be2fb01f 189 $tasks = [
1a72712d
MW
190 self::TASK_EXPORT => self::$_tasks[self::TASK_EXPORT]['title'],
191 self::TASK_EMAIL => self::$_tasks[self::TASK_EMAIL]['title'],
192 self::PDF_RECEIPT => self::$_tasks[self::PDF_RECEIPT]['title'],
be2fb01f 193 ];
6a488035
TO
194
195 //CRM-4418,
196 if (CRM_Core_Permission::check('delete in CiviContribute')) {
1a72712d 197 $tasks[self::TASK_DELETE] = self::$_tasks[self::TASK_DELETE]['title'];
6a488035
TO
198 }
199 }
1a72712d
MW
200 if ($params['softCreditFiltering']) {
201 unset($tasks[self::BATCH_UPDATE], $tasks[self::PDF_RECEIPT]);
c410490a 202 }
1a72712d
MW
203
204 $tasks = parent::corePermissionedTaskTitles($tasks, $permission, $params);
6a488035
TO
205 return $tasks;
206 }
207
208 /**
209 * These tasks are the core set of tasks that the user can perform
210 * on contributors
211 *
212 * @param int $value
213 *
a6c01b45
CW
214 * @return array
215 * the set of tasks for a group of contributors
6a488035 216 */
00be9182 217 public static function getTask($value) {
6a488035 218 self::tasks();
b99f3e96 219 if (!$value || empty(self::$_tasks[$value])) {
6a488035 220 // make the print task by default
1a72712d 221 $value = self::TASK_PRINT;
3c247800 222 }
1a72712d 223 return parent::getTask($value);
6a488035 224 }
96025800 225
6a488035 226}