exit( 1 );
}
-if ( function_exists( 'mb_strtoupper' ) ) {
- mb_internal_encoding( 'UTF-8' );
-}
+mb_internal_encoding( 'UTF-8' );
use CLDRPluralRuleParser\Evaluator;
return $text;
}
- // callback functions for uc(), lc(), ucwords(), ucwordbreaks()
+ // callback functions for ucwords(), ucwordbreaks()
/**
* @param array $matches
return mb_strtoupper( $matches[0] );
}
- /**
- * @param array $matches
- * @return string
- */
- function ucCallback( $matches ) {
- list( $wikiUpperChars ) = self::getCaseMaps();
- return strtr( $matches[1], $wikiUpperChars );
- }
-
- /**
- * @param array $matches
- * @return string
- */
- function lcCallback( $matches ) {
- list( , $wikiLowerChars ) = self::getCaseMaps();
- return strtr( $matches[1], $wikiLowerChars );
- }
-
/**
* @param array $matches
* @return string
return mb_strtoupper( $matches[0] );
}
- /**
- * @param array $matches
- * @return string
- */
- function ucwordsCallbackWiki( $matches ) {
- list( $wikiUpperChars ) = self::getCaseMaps();
- return strtr( $matches[0], $wikiUpperChars );
- }
-
/**
* Make a string's first character uppercase
*
* @return string
*/
function uc( $str, $first = false ) {
- if ( function_exists( 'mb_strtoupper' ) ) {
- if ( $first ) {
- if ( $this->isMultibyte( $str ) ) {
- return mb_strtoupper( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
- } else {
- return ucfirst( $str );
- }
- } else {
- return $this->isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str );
- }
- } else {
+ if ( $first ) {
if ( $this->isMultibyte( $str ) ) {
- $x = $first ? '^' : '';
- return preg_replace_callback(
- "/$x([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/",
- [ $this, 'ucCallback' ],
- $str
- );
+ return mb_strtoupper( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
} else {
- return $first ? ucfirst( $str ) : strtoupper( $str );
+ return ucfirst( $str );
}
+ } else {
+ return $this->isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str );
}
}
* @return mixed|string
*/
function lc( $str, $first = false ) {
- if ( function_exists( 'mb_strtolower' ) ) {
- if ( $first ) {
- if ( $this->isMultibyte( $str ) ) {
- return mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
- } else {
- return strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 );
- }
- } else {
- return $this->isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str );
- }
- } else {
+ if ( $first ) {
if ( $this->isMultibyte( $str ) ) {
- $x = $first ? '^' : '';
- return preg_replace_callback(
- "/$x([A-Z]|[\\xc0-\\xff][\\x80-\\xbf]*)/",
- [ $this, 'lcCallback' ],
- $str
- );
+ return mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
} else {
- return $first ? strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 ) : strtolower( $str );
+ return strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 );
}
+ } else {
+ return $this->isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str );
}
}
$replaceRegexp = "/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)| ([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/";
// function to use to capitalize a single char
- if ( function_exists( 'mb_strtoupper' ) ) {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordsCallbackMB' ],
- $str
- );
- } else {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordsCallbackWiki' ],
- $str
- );
- }
+ return preg_replace_callback(
+ $replaceRegexp,
+ [ $this, 'ucwordsCallbackMB' ],
+ $str
+ );
} else {
return ucwords( strtolower( $str ) );
}
$replaceRegexp = "/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)|" .
"$breaks([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/";
- if ( function_exists( 'mb_strtoupper' ) ) {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordbreaksCallbackMB' ],
- $str
- );
- } else {
- return preg_replace_callback(
- $replaceRegexp,
- [ $this, 'ucwordsCallbackWiki' ],
- $str
- );
- }
+ return preg_replace_callback(
+ $replaceRegexp,
+ [ $this, 'ucwordbreaksCallbackMB' ],
+ $str
+ );
} else {
return preg_replace_callback(
'/\b([\w\x80-\xff]+)\b/',
* match up with it.
*
* @param string $str The validated block duration in English
+ * @param User $user User object to use timezone from or null for $wgUser
* @return string Somehow translated block duration
* @see LanguageFi.php for example implementation
*/
- function translateBlockExpiry( $str ) {
+ function translateBlockExpiry( $str, User $user = null ) {
$duration = SpecialBlock::getSuggestedDurations( $this );
foreach ( $duration as $show => $value ) {
if ( strcmp( $str, $value ) == 0 ) {
} else { // It's an absolute timestamp.
if ( $time === 0 ) {
// wfTimestamp() handles 0 as current time instead of epoch.
- return $this->timeanddate( '19700101000000' );
- } else {
- return $this->timeanddate( $time );
+ $time = '19700101000000';
+ }
+ if ( $user ) {
+ return $this->userTimeAndDate( $time, $user );
}
+ return $this->timeanddate( $time );
}
}
return $this->convertGrammar( trim( $m[2] ), trim( $m[1] ) );
}
- /**
- * @throws MWException
- * @return array
- */
- static function getCaseMaps() {
- static $wikiUpperChars, $wikiLowerChars;
- if ( isset( $wikiUpperChars ) ) {
- return [ $wikiUpperChars, $wikiLowerChars ];
- }
-
- $arr = wfGetPrecompiledData( 'Utf8Case.ser' );
- if ( $arr === false ) {
- throw new MWException(
- "Utf8Case.ser is missing, please run \"make\" in the serialized directory\n" );
- }
- $wikiUpperChars = $arr['wikiUpperChars'];
- $wikiLowerChars = $arr['wikiLowerChars'];
- return [ $wikiUpperChars, $wikiLowerChars ];
- }
-
/**
* Decode an expiry (block, protection, etc) which has come from the DB
*