From 370e83bb0dfd0c70de268c93bf07ad5ee0897192 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 15 Aug 2008 01:29:47 +0200 Subject: Update auf 1.13.0 --- includes/Autopromote.php | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'includes/Autopromote.php') diff --git a/includes/Autopromote.php b/includes/Autopromote.php index b5097423..68fe6636 100644 --- a/includes/Autopromote.php +++ b/includes/Autopromote.php @@ -8,7 +8,7 @@ class Autopromote { /** * Get the groups for the given user based on $wgAutopromote. * - * @param User $user The user to get the groups for + * @param $user The user to get the groups for * @return array Array of groups to promote to. */ public static function getAutopromoteGroups( User $user ) { @@ -18,6 +18,9 @@ class Autopromote { if( self::recCheckCondition( $cond, $user ) ) $promote[] = $group; } + + wfRunHooks( 'GetAutoPromoteGroups', array($user, &$promote) ); + return $promote; } @@ -33,12 +36,12 @@ class Autopromote { * This function evaluates the former type recursively, and passes off to * self::checkCondition for evaluation of the latter type. * - * @param mixed $cond A condition, possibly containing other conditions - * @param User $user The user to check the conditions against + * @param $cond Mixed: a condition, possibly containing other conditions + * @param $user The user to check the conditions against * @return bool Whether the condition is true */ private static function recCheckCondition( $cond, User $user ) { - $validOps = array( '&', '|', '^' ); + $validOps = array( '&', '|', '^', '!' ); if( is_array( $cond ) && count( $cond ) >= 2 && in_array( $cond[0], $validOps ) ) { # Recursive condition if( $cond[0] == '&' ) { @@ -47,7 +50,7 @@ class Autopromote { return false; return true; } elseif( $cond[0] == '|' ) { - foreach( array_slice( $cond, 1 ) as $subcond ) + foreach( array_slice( $cond, 1 ) as $subcond ) if( self::recCheckCondition( $subcond, $user ) ) return true; return false; @@ -60,6 +63,11 @@ class Autopromote { $res = ($res xor self::recCheckCondition( $subcond, $user )); } return $res; + } elseif ( $cond[0] = '!' ) { + foreach( array_slice( $cond, 1 ) as $subcond ) + if( self::recCheckCondition( $subcond, $user ) ) + return false; + return true; } } # If we got here, the array presumably does not contain other condi- @@ -75,8 +83,8 @@ class Autopromote { * APCOND_AGE. Other types will throw an exception if no extension evalu- * ates them. * - * @param array $cond A condition, which must not contain other conditions - * @param User $user The user to check the condition against + * @param $cond Array: A condition, which must not contain other conditions + * @param $user The user to check the condition against * @return bool Whether the condition is true for the user */ private static function checkCondition( $cond, User $user ) { @@ -87,7 +95,7 @@ class Autopromote { if( User::isValidEmailAddr( $user->getEmail() ) ) { global $wgEmailAuthentication; if( $wgEmailAuthentication ) { - return $user->getEmailAuthenticationTimestamp() ? true : false; + return (bool)$user->getEmailAuthenticationTimestamp(); } else { return true; } -- cgit v1.2.2