X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMember%2FTask.php;h=f9f7589ae8f3a25dc8425bca468b20d828ad0685;hb=ae9e7f7277b7931d6c4d41189897c4652b7a3605;hp=661f2a72fc00f3b1a29b7519b331edbdc245f1d2;hpb=eb13bcb96bf6b45256d496c4b40fe6456762e85b;p=civicrm-core.git diff --git a/CRM/Member/Task.php b/CRM/Member/Task.php index 661f2a72fc..f9f7589ae8 100644 --- a/CRM/Member/Task.php +++ b/CRM/Member/Task.php @@ -40,78 +40,92 @@ class CRM_Member_Task extends CRM_Core_Task { * 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; } @@ -137,24 +151,8 @@ class CRM_Member_Task extends CRM_Core_Task { * 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); } /**