Nav Menu Editor - Use API for listing/searching available permissions
authorTim Otten <totten@civicrm.org>
Thu, 4 Feb 2021 22:14:35 +0000 (14:14 -0800)
committerTim Otten <totten@civicrm.org>
Fri, 5 Feb 2021 01:33:27 +0000 (17:33 -0800)
CRM/Admin/Form/Navigation.php

index 0b21a818d970c1838ee40b4c32d2161e36a0aff9..3249beed8b08fa9f41b7d6367108264a3d19769d 100644 (file)
@@ -55,9 +55,13 @@ class CRM_Admin_Form_Navigation extends CRM_Admin_Form {
 
     $this->add('text', 'icon', ts('Icon'), ['class' => 'crm-icon-picker', 'title' => ts('Choose Icon'), 'allowClear' => TRUE]);
 
+    $getPerms = (array) \Civi\Api4\Permission::get(0)
+      ->addWhere('group', 'IN', ['civicrm', 'cms', 'const'])
+      ->setOrderBy(['group' => 'ASC', 'name' => 'ASC'])
+      ->execute();
     $permissions = [];
-    foreach (CRM_Core_Permission::basicPermissions(TRUE, TRUE) as $id => $vals) {
-      $permissions[] = ['id' => $id, 'text' => $vals[0], 'description' => (array) CRM_Utils_Array::value(1, $vals)];
+    foreach ($getPerms as $perm) {
+      $permissions[] = ['id' => $perm['name'], 'text' => $perm['title'], 'description' => $perm['description'] ?? ''];
     }
     $this->add('select2', 'permission', ts('Permission'), $permissions, FALSE,
       ['placeholder' => ts('Unrestricted'), 'class' => 'huge', 'multiple' => TRUE]