X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMember%2FTask.php;h=dd04d9e062f8875a7eb847ab42b673db9b793711;hb=07c7b62cde3d8c6daf1d72b32ecde0a0b0c9c27d;hp=5b298c1d1c843732cbe4f05eb5cac8074b59dbf9;hpb=3e428367c1c1b99f23a467c73f5fcfcc02238514;p=civicrm-core.git diff --git a/CRM/Member/Task.php b/CRM/Member/Task.php index 5b298c1d1c..dd04d9e062 100644 --- a/CRM/Member/Task.php +++ b/CRM/Member/Task.php @@ -44,12 +44,18 @@ class CRM_Member_Task extends CRM_Core_Task { 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'), @@ -57,6 +63,9 @@ class CRM_Member_Task extends CRM_Core_Task { 'CRM_Member_Export_Form_Select', 'CRM_Member_Export_Form_Map', ], + 'permissions' => [['view memberships', 'edit memberships']], + // Transitional key. May change. + 'requires_edit_contact_permission' => FALSE, 'result' => FALSE, ], self::TASK_EMAIL => [ @@ -66,6 +75,9 @@ class CRM_Member_Task extends CRM_Core_Task { ]), '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'), @@ -73,6 +85,9 @@ class CRM_Member_Task extends CRM_Core_Task { 'CRM_Member_Form_Task_PickProfile', 'CRM_Member_Form_Task_Batch', ], + 'permissions' => ['edit memberships'], + // Transitional key. May change. + 'requires_edit_contact_permission' => TRUE, 'result' => TRUE, ], self::LABEL_MEMBERS => [ @@ -80,36 +95,37 @@ class CRM_Member_Task extends CRM_Core_Task { 'class' => [ 'CRM_Member_Form_Task_Label', ], + '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, ], ]; - - //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(); - return self::$_tasks; } @@ -135,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); } /** @@ -165,8 +165,7 @@ class CRM_Member_Task extends CRM_Core_Task { * the set of tasks for a group of members */ public static function getTask($value) { - self::tasks(); - if (!$value || empty(self::$_tasks[$value])) { + if (!$value || empty(self::tasks()[$value])) { // Make the print task the default $value = self::TASK_PRINT; }