CRM-11925 - Loosen coupling between permission enumeration (getModulePermissions...
authorTim Otten <totten@civicrm.org>
Thu, 7 Mar 2013 09:30:34 +0000 (04:30 -0500)
committerTim Otten <totten@civicrm.org>
Fri, 8 Mar 2013 01:16:26 +0000 (20:16 -0500)
CRM/Core/Config.php
CRM/Core/Permission/Base.php
CRM/Core/Permission/Drupal.php
CRM/Core/Permission/Drupal6.php

index ccea740ce2eb7fd6566a8cb538d68e3bb33351bf..875b67994b4d02eac9568ab2b90fcf84ba1367a7 100644 (file)
@@ -662,7 +662,10 @@ class CRM_Core_Config extends CRM_Core_Config_Variables {
     foreach ($module_files as $module_file) {
       // Clean up old module permissions that have been removed in the current
       // module version.
-      $this->userPermissionClass->upgradePermissions($module_file['prefix']);
+      $this->userPermissionClass->upgradePermissions(
+        $module_file['prefix'],
+        $this->userPermissionClass->getModulePermissions($module_file['prefix'])
+      );
     }
   }
 
index e606398ec1c1f9c3ebfb3231f7e0082b1dd34088..5f222a8f5a205c4fb24090684a1713f9aaabf020 100644 (file)
@@ -163,8 +163,12 @@ class CRM_Core_Permission_Base {
    * actually defined by that module. This is useful during module upgrade
    * when the newer module version has removed permission that were defined
    * in the older version.
+   *
+   * @param string $module short-name
+   * @param array $modulePermissions same format as CRM_Core_Permission::getCorePermissions().
+   * @see CRM_Core_Permission::getCorePermissions
    */
-  function upgradePermissions($module) {
+  function upgradePermissions($module, $modulePermissions) {
   }
 
   /**
index 74b25e3caf30ed2a62384fdee07872024c70209d..f2b9a0c65769ab4a8d517d7d7a428b34ec38110f 100644 (file)
@@ -95,15 +95,12 @@ class CRM_Core_Permission_Drupal extends CRM_Core_Permission_DrupalBase{
   }
 
   /**
-   * Ensure that all cached permissions associated with the given module are
-   * actually defined by that module. This is useful during module upgrade
-   * when the newer module version has removed permission that were defined
-   * in the older version.
+   * {@inheritdoc}
    */
-  function upgradePermissions($module) {
+  function upgradePermissions($module, $modulePermissions) {
     $config = CRM_Core_Config::singleton();
     // Get all permissions defined by the module.
-    $module_permissions = self::filterPermissions($config->userPermissionClass->getModulePermissions($module), $module);
+    $module_permissions = self::filterPermissions($modulePermissions, $module);
     // Construct a delete query to remove permissions for this module.
     $query = db_delete('role_permission')
       ->condition('permission', "$module|%", 'LIKE')
index cc7dbaca1c150cb8107ecb05d57db392bdba5bd3..353da32ad0e7aa167f1b70668154b3881d1a77ed 100644 (file)
@@ -158,14 +158,11 @@ class CRM_Core_Permission_Drupal6 extends CRM_Core_Permission_DrupalBase {
   }
 
   /**
-   * Ensure that all cached permissions associated with the given module are
-   * actually defined by that module. This is useful during module upgrade
-   * when the newer module version has removed permission that were defined
-   * in the older version.
+   * {@inheritdoc}
    *
    * Does nothing in Drupal 6.
    */
-  function upgradePermissions($module) {
+  function upgradePermissions($module, $modulePermissions) {
   }
 
   /**