X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FuserOptions.inc;h=cbe6b057b4a9d0b9c9c0855d0e05ca92c22030db;hb=6f1bede668b26494ed1717036720f962d28f4c8b;hp=98150617a0a369533954e5732af61ece59982897;hpb=c037214dac9bb990de6f2be2a818aba4c75c240d;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/userOptions.inc b/maintenance/userOptions.inc index 98150617a0..cbe6b057b4 100644 --- a/maintenance/userOptions.inc +++ b/maintenance/userOptions.inc @@ -1,10 +1,35 @@ checkOpts( $opts, $args ) ) { + if ( !$this->checkOpts( $opts, $args ) ) { userOptions::showUsageAndExit(); } else { $this->mReady = $this->initializeOpts( $opts, $args ); @@ -25,20 +50,34 @@ class userOptions { } - /** This is used to check options. Only needed on construction */ + /** + * This is used to check options. Only needed on construction + * + * @param $opts array + * @param $args array + * + * @return bool + */ private function checkOpts( $opts, $args ) { // The three possible ways to run the script: $list = isset( $opts['list'] ); - $usage = isset( $opts['usage'] ) && (count($args) <= 1); - $change = isset( $opts['old']) && isset($opts['new']) && (count($args) <= 1) ; + $usage = isset( $opts['usage'] ) && ( count( $args ) <= 1 ); + $change = isset( $opts['old'] ) && isset( $opts['new'] ) && ( count( $args ) <= 1 ) ; // We want only one of them - $isValid = (($list + $usage + $change) == 1); + $isValid = ( ( $list + $usage + $change ) == 1 ); return $isValid; } - /** load script options in the object */ + /** + * load script options in the object + * + * @param $opts array + * @param $args array + * + * @return bool + */ private function initializeOpts( $opts, $args ) { $this->mQuick = isset( $opts['nowarn'] ); @@ -46,18 +85,18 @@ class userOptions { $this->mDry = isset( $opts['dry'] ); // Set object properties, specially 'mMode' used by run() - if( isset($opts['list']) ) { + if ( isset( $opts['list'] ) ) { $this->mMode = 'LISTER' ; - } elseif( isset($opts['usage']) ) { + } elseif ( isset( $opts['usage'] ) ) { $this->mMode = 'USAGER' ; - $this->mAnOption = isset($args[0]) ? $args[0] : false ; - } elseif( isset($opts['old']) && isset($opts['new']) ) { + $this->mAnOption = isset( $args[0] ) ? $args[0] : false ; + } elseif ( isset( $opts['old'] ) && isset( $opts['new'] ) ) { $this->mMode = 'CHANGER' ; $this->mOldValue = $opts['old'] ; $this->mNewValue = $opts['new'] ; $this->mAnOption = $args[0]; } else { - die("There is a bug in the software, this should never happen\n"); + die( "There is a bug in the software, this should never happen\n" ); } return true; @@ -65,33 +104,33 @@ class userOptions { // Dumb stuff to run a mode. public function run() { - if(!$this->mReady ) { + if ( !$this->mReady ) { return false; } - $this->{$this->mMode}( ); - + $this->{ $this->mMode } (); + return true; } # # Modes. - # + # /** List default options and their value */ - private function LISTER( ) { + private function LISTER() { $def = User::getDefaultOptions(); - ksort($def); + ksort( $def ); $maxOpt = 0; - foreach( $def as $opt => $value ) { - $maxOpt = max( $maxOpt, strlen($opt) ); + foreach ( $def as $opt => $value ) { + $maxOpt = max( $maxOpt, strlen( $opt ) ); } - foreach( $def as $opt => $value ) { + foreach ( $def as $opt => $value ) { printf( "%-{$maxOpt}s: %s\n", $opt, $value ); } } /** List options usage */ - private function USAGER( ) { + private function USAGER() { $ret = array(); $defaultOptions = User::getDefaultOptions(); @@ -103,22 +142,37 @@ class userOptions { __METHOD__ ); - while( $id = $dbr->fetchObject( $result ) ) { + foreach ( $result as $id ) { $user = User::newFromId( $id->user_id ); // Get the options and update stats - foreach( $defaultOptions as $name => $defaultValue ) { - $userValue = $user->getOption( $name ); - if( $userValue <> $defaultValue ) { - @$ret[$name][$userValue]++; + if ( $this->mAnOption ) { + + if ( !array_key_exists( $this->mAnOption, $defaultOptions ) ) { + print "Invalid user option. Use --list to see valid choices\n"; + exit; + } + + $userValue = $user->getOption( $this->mAnOption ); + if ( $userValue <> $defaultOptions[$this->mAnOption] ) { + @$ret[$this->mAnOption][$userValue]++; + } + + } else { + + foreach ( $defaultOptions as $name => $defaultValue ) { + $userValue = $user->getOption( $name ); + if ( $userValue <> $defaultValue ) { + @$ret[$name][$userValue]++; + } } } } - foreach( $ret as $optionName => $usageStats ) { + foreach ( $ret as $optionName => $usageStats ) { print "Usage for <$optionName> (default: '{$defaultOptions[$optionName]}'):\n"; - foreach( $usageStats as $value => $count ) { + foreach ( $usageStats as $value => $count ) { print " $count user(s): '$value'\n"; } print "\n"; @@ -127,7 +181,7 @@ class userOptions { /** Change our users options */ - private function CHANGER( ) { + private function CHANGER() { $this->warn(); // We list user by user_id from one of the slave database @@ -138,46 +192,47 @@ class userOptions { __METHOD__ ); - while( $id = $dbr->fetchObject( $result ) ) { + foreach ( $result as $id ) { $user = User::newFromId( $id->user_id ); $curValue = $user->getOption( $this->mAnOption ); $username = $user->getName(); - if( $curValue == $this->mOldValue ) { + if ( $curValue == $this->mOldValue ) { - if(!$this->mQuiet) { + if ( !$this->mQuiet ) { print "Setting {$this->mAnOption} for $username from '{$this->mOldValue}' to '{$this->mNewValue}'): "; } - // Change value + // Change value $user->setOption( $this->mAnOption, $this->mNewValue ); // Will not save the settings if run with --dry - if(!$this->mDry) { + if ( !$this->mDry ) { $user->saveSettings(); } - if( !$this->mQuiet) { print " OK\n"; } + if ( !$this->mQuiet ) { print " OK\n"; } - } elseif( !$this->mQuiet ) { + } elseif ( !$this->mQuiet ) { print "Not changing '$username' using <{$this->mAnOption}> = '$curValue'\n"; } } } - - /** Return an array of option names */ + /** + * Return an array of option names + * @return array + */ public static function getDefaultOptionsNames() { $def = User::getDefaultOptions(); $ret = array(); - foreach( $def as $optname => $defaultValue) { + foreach ( $def as $optname => $defaultValue ) { array_push( $ret, $optname ); } return $ret; } - # # Helper methods # @@ -189,31 +244,34 @@ This script pass through all users and change one of their options. The new option is NOT validated. Usage: - php userOptions.php --list - php userOptions.php [user option] --usage - php userOptions.php [options]  --old --new + php userOptions.php --list + php userOptions.php [user option] --usage + php userOptions.php [options]  --old --new Switchs: - --list : list available user options and their default value + --list : list available user options and their default value - --usage : report all options statistics or just one if you specify it. + --usage : report all options statistics or just one if you specify it. - --old : the value to look for - --new : new value to update users with + --old : the value to look for + --new : new value to update users with Options: - --nowarn: hides the 5 seconds warning - --quiet : do not print what is happening - --dry : do not save user settings back to database + --nowarn: hides the 5 seconds warning + --quiet : do not print what is happening + --dry : do not save user settings back to database USAGE; - exit(0); + exit( 0 ); } - /** The warning message and countdown */ + /** + * The warning message and countdown + * @return bool + */ public function warn() { - if( $this->mQuick ) { + if ( $this->mQuick ) { return true; } @@ -223,15 +281,8 @@ Users with option <$this->mAnOption> = '$this->mOldValue' will be made to use '$ Abort with control-c in the next five seconds.... WARN; - require('counter.php'); - for ($i=6;$i>=1;) { - print_c($i, --$i); - sleep(1); - } - print "\n"; - + wfCountDown( 5 ); return true; } } -?>