* @param string $action action that permission needs to be checked for
* @param bool $doExpensiveQueries Set this to false to avoid doing unnecessary queries.
* @return array Array of arrays of the arguments to wfMsg to explain permissions problems.
- */
+ */
public function getUserPermissionsErrors( $action, $user, $doExpensiveQueries = true ) {
$errors = $this->getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries );
$errors = array();
+ // Use getUserPermissionsErrors instead
if ( !wfRunHooks( 'userCan', array( &$this, &$user, $action, &$result ) ) ) {
return $result ? array() : array( array( 'badaccess-group0' ) );
}
+ if (!wfRunHooks( 'getUserPermissionsErrors', array( &$this, &$user, $action, &$result ) ) ) {
+ if ($result != array() && is_array($result) && !is_array($result[0]))
+ $errors[] = $result; # A single array representing an error
+ else if (is_array($result) && is_array($result[0]))
+ $errors = array_merge( $errors, $result ); # A nested array representing multiple errors
+ else if ($result != '' && $result != null && $result !== true && $result !== false)
+ $errors[] = array($result); # A string representing a message-id
+ else if ($result === false )
+ $errors[] = array('badaccess-group0'); # a generic "We don't want them to do that"
+ }
+
if( NS_SPECIAL == $this->mNamespace ) {
$errors[] = array('ns-specialprotected');
}
$groupName = User::getGroupName( $key );
$groupPage = User::getGroupPage( $key );
if( $groupPage ) {
- $skin = $user->getSkin();
$groups[] = '[['.$groupPage->getPrefixedText().'|'.$groupName.']]';
} else {
$groups[] = $groupName;
if( $this->isSpecial( 'Userlogin' ) || $this->isSpecial( 'Resetpass' ) ) {
return true;
}
+
+ /**
+ * Bail out if there isn't whitelist
+ */
+ if( !is_array($wgWhitelistRead) ) {
+ return false;
+ }
/**
* Check for explicit whitelisting
*/
$name = $this->getPrefixedText();
- if( $wgWhitelistRead && in_array( $name, $wgWhitelistRead, true ) )
+ if( in_array( $name, $wgWhitelistRead, true ) )
return true;
/**
* Old settings might have the title prefixed with
* a colon for main-namespace pages
*/
- if( $wgWhitelistRead && $this->getNamespace() == NS_MAIN ) {
+ if( $this->getNamespace() == NS_MAIN ) {
if( in_array( ':' . $name, $wgWhitelistRead ) )
return true;
}
/**
* Get an array of Title objects referring to non-existent articles linked from this page
*
+ * @todo check if needed (used only in SpecialBrokenRedirects.php, and should use redirect table in this case)
* @param string $options may be FOR UPDATE
* @return array the Title objects
*/
public function getBrokenLinksFrom( $options = '' ) {
+ if ( $this->getArticleId() == 0 ) {
+ # All links from article ID 0 are false positives
+ return array();
+ }
+
if ( $options ) {
$db = wfGetDB( DB_MASTER );
} else {
$data[$wgContLang->getNSText ( NS_CATEGORY ).':'.$x->cl_to] = $this->getFullText();
$dbr->freeResult ( $res ) ;
} else {
- $data = '';
+ $data = array();
}
return $data;
}