X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FMember%2FTask.php;h=dd04d9e062f8875a7eb847ab42b673db9b793711;hb=3ad759fb650b43561fa65f60e6bf6b15f7b60b2a;hp=ade20080e17c79286165606a058ba640f90489fa;hpb=e2710fee5aba1d6e3d65392f066d8bb559605e1b;p=civicrm-core.git diff --git a/CRM/Member/Task.php b/CRM/Member/Task.php index ade20080e1..dd04d9e062 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_Member_Export_Form_Select', - 'CRM_Member_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); } /** @@ -167,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; }