From 678b055f5221fece3b5893bc24763123de5b5af3 Mon Sep 17 00:00:00 2001 From: Parziphal Date: Sun, 12 Jan 2014 10:27:17 -0500 Subject: [PATCH] Fixed error regarding User::is_level_or_lower(). It was returning false for anonymous users, it now returns true. --- app/models/User.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/models/User.php b/app/models/User.php index 44edcd6..7a5e14d 100755 --- a/app/models/User.php +++ b/app/models/User.php @@ -831,11 +831,6 @@ class User extends Rails\ActiveRecord\Base private function parse_is_level_or($method) { - # For anonymous users - if (!$this->id) { - return false; - } - list($name, $operator) = explode('_or_', substr($method, 3)); $name = ucfirst($name); $levels = CONFIG()->user_levels; @@ -845,9 +840,19 @@ class User extends Rails\ActiveRecord\Base $level = $levels[$name]; if ($operator == 'higher') { - return $this->level >= $level; + # For anonymous users + if (!$this->id) { + return false; + } else { + return $this->level >= $level; + } } elseif ($operator == 'lower') { - return $this->level <= $level; + # For anonymous users + if (!$this->id) { + return true; + } else { + return $this->level <= $level; + } } else { throw new InvalidArgumentException("Invalid user level operator " . $operator); }