* the set of tasks for a group of contacts
*/
public static function tasks() {
- if (!self::$_tasks) {
- self::$_tasks = [
- self::TASK_DELETE => [
- 'title' => ts('Delete memberships'),
- 'class' => 'CRM_Member_Form_Task_Delete',
- 'result' => FALSE,
+ self::$_tasks = [
+ self::TASK_DELETE => [
+ 'title' => ts('Delete memberships'),
+ 'class' => 'CRM_Member_Form_Task_Delete',
+ 'permissions' => ['delete in CiviMember'],
+ 'result' => FALSE,
+ // Hopefully transitional key - if permission to edit the contact also required.
+ 'requires_edit_contact_permission' => FALSE,
+ ],
+ self::TASK_PRINT => [
+ 'title' => ts('Print selected rows'),
+ 'class' => 'CRM_Member_Form_Task_Print',
+ 'result' => FALSE,
+ 'permissions' => [['view memberships', 'edit memberships']],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => FALSE,
+ ],
+ self::TASK_EXPORT => [
+ 'title' => ts('Export members'),
+ 'class' => [
+ 'CRM_Member_Export_Form_Select',
+ 'CRM_Member_Export_Form_Map',
],
- self::TASK_PRINT => [
- 'title' => ts('Print selected rows'),
- 'class' => 'CRM_Member_Form_Task_Print',
- 'result' => FALSE,
+ 'permissions' => [['view memberships', 'edit memberships']],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => FALSE,
+ 'result' => FALSE,
+ ],
+ self::TASK_EMAIL => [
+ 'title' => ts('Email - send now (to %1 or less)', [
+ 1 => Civi::settings()
+ ->get('simple_mail_limit'),
+ ]),
+ 'class' => 'CRM_Member_Form_Task_Email',
+ 'result' => TRUE,
+ 'permissions' => ['edit memberships'],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => TRUE,
+ ],
+ self::BATCH_UPDATE => [
+ 'title' => ts('Update multiple memberships'),
+ 'class' => [
+ 'CRM_Member_Form_Task_PickProfile',
+ 'CRM_Member_Form_Task_Batch',
],
- self::TASK_EXPORT => [
- 'title' => ts('Export members'),
- 'class' => [
- 'CRM_Export_Form_Select',
- 'CRM_Export_Form_Map',
- ],
- 'result' => FALSE,
+ 'permissions' => ['edit memberships'],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => TRUE,
+ 'result' => TRUE,
+ ],
+ self::LABEL_MEMBERS => [
+ 'title' => ts('Mailing labels - print'),
+ 'class' => [
+ 'CRM_Member_Form_Task_Label',
],
- self::TASK_EMAIL => [
- 'title' => ts('Email - send now (to %1 or less)', [
- 1 => Civi::settings()
- ->get('simple_mail_limit'),
- ]),
- 'class' => 'CRM_Member_Form_Task_Email',
- 'result' => TRUE,
- ],
- self::BATCH_UPDATE => [
- 'title' => ts('Update multiple memberships'),
- 'class' => [
- 'CRM_Member_Form_Task_PickProfile',
- 'CRM_Member_Form_Task_Batch',
- ],
- 'result' => TRUE,
- ],
- self::LABEL_MEMBERS => [
- 'title' => ts('Mailing labels - print'),
- 'class' => [
- 'CRM_Member_Form_Task_Label',
- ],
- 'result' => TRUE,
- ],
- self::PDF_LETTER => [
- 'title' => ts('Print/merge document for memberships'),
- 'class' => 'CRM_Member_Form_Task_PDFLetter',
- 'result' => FALSE,
- ],
- self::SAVE_SEARCH => [
- 'title' => ts('Group - create smart group'),
- 'class' => 'CRM_Contact_Form_Task_SaveSearch',
- 'result' => TRUE,
- ],
- self::SAVE_SEARCH_UPDATE => [
- 'title' => ts('Group - update smart group'),
- 'class' => 'CRM_Contact_Form_Task_SaveSearch_Update',
- 'result' => TRUE,
- ],
- ];
-
- //CRM-4418, check for delete
- if (!CRM_Core_Permission::check('delete in CiviMember')) {
- unset(self::$_tasks[self::TASK_DELETE]);
- }
- //CRM-12920 - check for edit permission
- if (!CRM_Core_Permission::check('edit memberships')) {
- unset(self::$_tasks[self::BATCH_UPDATE]);
- }
-
- parent::tasks();
- }
-
+ 'permissions' => ['edit memberships'],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => TRUE,
+ 'result' => TRUE,
+ ],
+ self::PDF_LETTER => [
+ 'title' => ts('Print/merge document for memberships'),
+ 'class' => 'CRM_Member_Form_Task_PDFLetter',
+ 'result' => FALSE,
+ 'permissions' => ['edit memberships'],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => TRUE,
+ ],
+ self::SAVE_SEARCH => [
+ 'title' => ts('Group - create smart group'),
+ 'class' => 'CRM_Contact_Form_Task_SaveSearch',
+ 'result' => TRUE,
+ 'permissions' => ['edit groups'],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => FALSE,
+ ],
+ self::SAVE_SEARCH_UPDATE => [
+ 'title' => ts('Group - update smart group'),
+ 'class' => 'CRM_Contact_Form_Task_SaveSearch_Update',
+ 'result' => TRUE,
+ 'permissions' => ['edit groups'],
+ // Transitional key. May change.
+ 'requires_edit_contact_permission' => FALSE,
+ ],
+ ];
+ parent::tasks();
return self::$_tasks;
}
* set of tasks that are valid for the user
*/
public static function permissionedTaskTitles($permission, $params = []) {
- if (($permission == CRM_Core_Permission::EDIT)
- || CRM_Core_Permission::check('edit memberships')
- ) {
- $tasks = self::taskTitles();
- }
- else {
- $tasks = [
- self::TASK_EXPORT => self::$_tasks[self::TASK_EXPORT]['title'],
- self::TASK_EMAIL => self::$_tasks[self::TASK_EMAIL]['title'],
- ];
- //CRM-4418,
- if (CRM_Core_Permission::check('delete in CiviMember')) {
- $tasks[self::TASK_DELETE] = self::$_tasks[self::TASK_DELETE]['title'];
- }
- }
-
- $tasks = parent::corePermissionedTaskTitles($tasks, $permission, $params);
- return $tasks;
+ $tasks = self::getTitlesFilteredByPermission(self::$_tasks, $permission === CRM_Core_Permission::EDIT);
+ return parent::corePermissionedTaskTitles($tasks, $permission, $params);
}
/**