+ /**
+ * @return array
+ */
+ public 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;
+ }
+
+ /**
+ * @param $anonymous_perms
+ *
+ * @return array
+ */
+ public static function validateForPermissionWarnings($anonymous_perms) {
+ return array_intersect($anonymous_perms, self::getAnonymousPermissionsWarnings());
+ }
+
+ /**
+ * @return array
+ */
+ public static function getCorePermissions() {