dev/core#3719 fix inconistent handling of job_type:label
[civicrm-core.git] / CRM / Core / Permission / WordPress.php
index 3325d0fc117c3f23a4ba3dee0e04cf42b6f4ff6f..dfcc6c34a3f2bba7704feabf2365c6c1b3184b45 100644 (file)
@@ -60,14 +60,14 @@ class CRM_Core_Permission_WordPress extends CRM_Core_Permission_Base {
 
     $user = $userId ? get_userdata($userId) : wp_get_current_user();
 
-    if ($user->has_cap('super admin') || $user->has_cap('administrator')) {
+    if ($userId !== 0 && ($user->has_cap('super admin') || $user->has_cap('administrator'))) {
       return TRUE;
     }
 
     // Make string lowercase and convert spaces into underscore
     $str = CRM_Utils_String::munge(strtolower($str));
 
-    if ($user->exists()) {
+    if ($userId !== 0 && $user->exists()) {
       // Check whether the logged in user has the capabilitity
       if ($user->has_cap($str)) {
         return TRUE;
@@ -76,10 +76,8 @@ class CRM_Core_Permission_WordPress extends CRM_Core_Permission_Base {
     else {
       //check the capabilities of Anonymous user)
       $roleObj = new WP_Roles();
-      if (
-        $roleObj->get_role('anonymous_user') != NULL &&
-        array_key_exists($str, $roleObj->get_role('anonymous_user')->capabilities)
-      ) {
+      $anonObj = $roleObj->get_role('anonymous_user');
+      if (!empty($anonObj->capabilities) && array_key_exists($str, $anonObj->capabilities)) {
         return TRUE;
       }
     }