Merge pull request #3208 from eileenmcnaughton/comments
[civicrm-core.git] / CRM / Core / Permission.php
index 5eafcda6aee07c8bdb60d10902a192833d1951d0..3c30ad036be60a368e2dbc31aa62e6b864b14400 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.4                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -28,7 +28,7 @@
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * $Id$
  *
  */
@@ -471,6 +471,7 @@ class CRM_Core_Permission {
     static $permissions = NULL;
 
     if (!$permissions) {
+      $config = CRM_Core_Config::singleton();
       $prefix = ts('CiviCRM') . ': ';
       $permissions = self::getCorePermissions();
 
@@ -478,8 +479,6 @@ class CRM_Core_Permission {
         $permissions['administer Multiple Organizations'] = $prefix . ts('administer Multiple Organizations');
       }
 
-      $config = CRM_Core_Config::singleton();
-
       if (!$all) {
         $components = CRM_Core_Component::getEnabledComponents();
       }
@@ -498,7 +497,6 @@ class CRM_Core_Permission {
       }
 
       // Add any permissions defined in hook_civicrm_permission implementations.
-      $config = CRM_Core_Config::singleton();
       $module_permissions = $config->userPermissionClass->getAllModulePermissions();
       $permissions = array_merge($permissions, $module_permissions);
     }
@@ -506,6 +504,27 @@ class CRM_Core_Permission {
     return $permissions;
   }
 
+  static function getAnonymousPermissionsWarnings() {
+    static $permissions = array();
+    if (empty($permissions)) {
+      $permissions = array(
+        'administer CiviCRM'
+      );
+      $components = CRM_Core_Component::getComponents();
+      foreach ($components as $comp) {
+        if (!method_exists($comp, 'getAnonymousPermissionWarnings')) {
+          continue;
+        }
+        $permissions = array_merge($permissions, $comp->getAnonymousPermissionWarnings());
+      }
+    }
+    return $permissions;
+  }
+
+  static function validateForPermissionWarnings($anonymous_perms) {
+    return array_intersect($anonymous_perms, self::getAnonymousPermissionsWarnings());
+  }
+
   static function getCorePermissions() {
     $prefix = ts('CiviCRM') . ': ';
     $permissions = array(
@@ -550,6 +569,7 @@ class CRM_Core_Permission {
       'delete all manual batches' => $prefix . ts('delete all manual batches'),
       'export own manual batches' => $prefix . ts('export own manual batches'),
       'export all manual batches' => $prefix . ts('export all manual batches'),
+      'administer payment processors' => $prefix . ts('administer payment processors'),
     );
 
     return $permissions;