CRM-11925 - Extract Drupal::filterPermissions from Drupal::getModulePermissions
authorTim Otten <totten@civicrm.org>
Thu, 7 Mar 2013 08:55:50 +0000 (03:55 -0500)
committerTim Otten <totten@civicrm.org>
Fri, 8 Mar 2013 01:16:26 +0000 (20:16 -0500)
Permission-enumeration is only being used with Civi ext-modules, so the
hook-invocation can be done in another (more portable) spot. However,
the string-length-limit appears to be specific to D7's permission-store,
so it'll need to stay in this class (as "filterPermissions").

CRM/Core/Permission/Drupal.php

index 4511000211a63ef66a27f32f2b750044044cfb1a..d9dcd6ffb65e447f40d90c491c93248549102627 100644 (file)
@@ -131,16 +131,23 @@ class CRM_Core_Permission_Drupal extends CRM_Core_Permission_DrupalBase{
     if (function_exists($fn_name)) {
       $module_permissions = array();
       $fn_name($module_permissions);
-      foreach ($module_permissions as $key => $label) {
-        // Prepend the module name to the key.
-        $new_key = "$module|$key";
-        // Limit key length to maintain compatilibility with Drupal, which
-        // accepts permission keys no longer than 128 characters.
-        if (strlen($new_key) > 128) {
-          $new_key = "$module|". md5($key);
-        }
-        $return_permissions[$new_key] = $label;
+
+      $return_permissions = self::filterPermissions($module_permissions, $module);
+    }
+    return $return_permissions;
+  }
+
+  public static function filterPermissions($module_permissions, $module) {
+    $return_permissions = array();
+    foreach ($module_permissions as $key => $label) {
+      // Prepend the module name to the key.
+      $new_key = "$module|$key";
+      // Limit key length to maintain compatilibility with Drupal, which
+      // accepts permission keys no longer than 128 characters.
+      if (strlen($new_key) > 128) {
+        $new_key = "$module|" . md5($key);
       }
+      $return_permissions[$new_key] = $label;
     }
     return $return_permissions;
   }