Merge pull request #22484 from civicrm/5.46
[civicrm-core.git] / CRM / Admin / Form / Navigation.php
index 0b21a818d970c1838ee40b4c32d2161e36a0aff9..e54643d164bc37d1a7f40801e6e0aef157b35060 100644 (file)
@@ -26,6 +26,11 @@ class CRM_Admin_Form_Navigation extends CRM_Admin_Form {
    */
   protected $_currentParentID = NULL;
 
+  /**
+   * @var bool
+   */
+  public $submitOnce = TRUE;
+
   /**
    * Build the form object.
    */
@@ -55,9 +60,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(['title' => '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]