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; }