public static function userCanApprove($title, $user = false)
 {
     // set title and user for permissions checks
     self::$currentTitle = $title;
     if (!$user) {
         global $wgUser;
         self::$currentUser = $wgUser;
     } else {
         self::$currentUser = $user;
     }
     // $mUserCanApprove is a static variable used for "caching" the result
     // of this function, so the logic only has to be executed once.
     if (isset(self::$mUserCanApprove)) {
         return self::$mUserCanApprove;
     }
     $pageNamespace = self::$currentTitle->getNamespace();
     $pageCategories = self::getCategoryList(self::$currentTitle);
     $pageFullName = self::$currentTitle->getText();
     $permissions = self::getPermissions();
     if (self::checkIfUserInPerms($permissions['All Pages'])) {
         return self::$mUserCanApprove;
     }
     foreach ($permissions['Namespace Permissions'] as $namespace => $whoCanApprove) {
         if ($namespace === $pageNamespace) {
             self::checkIfUserInPerms($whoCanApprove);
         }
     }
     foreach ($permissions['Category Permissions'] as $category => $whoCanApprove) {
         if (in_array($category, $pageCategories)) {
             self::checkIfUserInPerms($whoCanApprove);
         }
     }
     foreach ($permissions['Page Permissions'] as $page => $whoCanApprove) {
         if ($page == $pageFullName) {
             self::checkIfUserInPerms($whoCanApprove);
         }
     }
     if (self::usernameIsBasePageName(self::$currentUser, self::$currentTitle)) {
         self::$mUserCanApprove = true;
     }
     return self::$mUserCanApprove;
 }