Add oldRev parameter to DiffRevisionTools hook
[lhc/web/wiklou.git] / includes / GlobalFunctions.php
index 1f23537..3250ec8 100644 (file)
@@ -965,8 +965,8 @@ function wfIsDebugRawPage() {
                || (
                        isset( $_SERVER['SCRIPT_NAME'] )
                        && substr( $_SERVER['SCRIPT_NAME'], -8 ) == 'load.php'
-               ) )
-       {
+               )
+       {
                $cache = true;
        } else {
                $cache = false;
@@ -1463,9 +1463,9 @@ function wfMsgForContent( $key ) {
        $args = func_get_args();
        array_shift( $args );
        $forcontent = true;
-       if ( is_array( $wgForceUIMsgAsContentMsg ) &&
-               in_array( $key, $wgForceUIMsgAsContentMsg ) )
-       {
+       if ( is_array( $wgForceUIMsgAsContentMsg )
+               && in_array( $key, $wgForceUIMsgAsContentMsg )
+       {
                $forcontent = false;
        }
        return wfMsgReal( $key, $args, true, $forcontent );
@@ -1486,9 +1486,9 @@ function wfMsgForContentNoTrans( $key ) {
        $args = func_get_args();
        array_shift( $args );
        $forcontent = true;
-       if ( is_array( $wgForceUIMsgAsContentMsg ) &&
-               in_array( $key, $wgForceUIMsgAsContentMsg ) )
-       {
+       if ( is_array( $wgForceUIMsgAsContentMsg )
+               && in_array( $key, $wgForceUIMsgAsContentMsg )
+       {
                $forcontent = false;
        }
        return wfMsgReal( $key, $args, true, $forcontent, false );
@@ -1622,18 +1622,19 @@ function wfMsgWikiHtml( $key ) {
  * @deprecated since 1.18
  *
  * @param string $key key of the message
- * @param array $options processing rules. Can take the following options:
- *   <i>parse</i>: parses wikitext to HTML
- *   <i>parseinline</i>: parses wikitext to HTML and removes the surrounding
+ * @param array $options processing rules.
+ *   Can take the following options:
+ *     parse: parses wikitext to HTML
+ *     parseinline: parses wikitext to HTML and removes the surrounding
  *       p's added by parser or tidy
- *   <i>escape</i>: filters message through htmlspecialchars
- *   <i>escapenoentities</i>: same, but allows entity references like &#160; through
- *   <i>replaceafter</i>: parameters are substituted after parsing or escaping
- *   <i>parsemag</i>: transform the message using magic phrases
- *   <i>content</i>: fetch message for content language instead of interface
- * Also can accept a single associative argument, of the form 'language' => 'xx':
- *   <i>language</i>: Language object or language code to fetch message for
- *       (overridden by <i>content</i>).
+ *     escape: filters message through htmlspecialchars
+ *     escapenoentities: same, but allows entity references like &#160; through
+ *     replaceafter: parameters are substituted after parsing or escaping
+ *     parsemag: transform the message using magic phrases
+ *     content: fetch message for content language instead of interface
+ *   Also can accept a single associative argument, of the form 'language' => 'xx':
+ *     language: Language object or language code to fetch message for
+ *       (overridden by content).
  * Behavior for conflicting options (e.g., parse+parseinline) is undefined.
  *
  * @return String
@@ -1993,11 +1994,11 @@ function wfClientAcceptsGzip( $force = false ) {
                        # @todo FIXME: We may want to blacklist some broken browsers
                        $m = array();
                        if ( preg_match(
-                               '/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/',
-                               $_SERVER['HTTP_ACCEPT_ENCODING'],
-                               $m )
-                       )
-                       {
+                                       '/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/',
+                                       $_SERVER['HTTP_ACCEPT_ENCODING'],
+                                       $m
+                               )
+                       {
                                if ( isset( $m[2] ) && ( $m[1] == 'q' ) && ( $m[2] == 0 ) ) {
                                        $result = false;
                                        return $result;
@@ -3240,7 +3241,7 @@ function wfUsePHP( $req_ver ) {
  * with releases
  *
  * Note: Due to the behavior of PHP's version_compare() which is used in this
- * fuction, if you want to allow the 'wmf' development versions add a 'c' (or
+ * function, if you want to allow the 'wmf' development versions add a 'c' (or
  * any single letter other than 'a', 'b' or 'p') as a post-fix to your
  * targeted version number. For example if you wanted to allow any variation
  * of 1.22 use `wfUseMW( '1.22c' )`. Using an 'a' or 'b' instead of 'c' will
@@ -3375,8 +3376,8 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1,
                28 => 's', 29 => 't', 30 => 'u', 31 => 'v', 32 => 'w', 33 => 'x',
                34 => 'y', 35 => 'z',
 
-               '0' => 0,  '1' => 1,  '2' => 2,  '3' => 3,  '4' => 4,  '5' => 5,
-               '6' => 6,  '7' => 7,  '8' => 8,  '9' => 9,  'a' => 10, 'b' => 11,
+               '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5,
+               '6' => 6, '7' => 7, '8' => 8, '9' => 9, 'a' => 10, 'b' => 11,
                'c' => 12, 'd' => 13, 'e' => 14, 'f' => 15, 'g' => 16, 'h' => 17,
                'i' => 18, 'j' => 19, 'k' => 20, 'l' => 21, 'm' => 22, 'n' => 23,
                'o' => 24, 'p' => 25, 'q' => 26, 'r' => 27, 's' => 28, 't' => 29,
@@ -4160,3 +4161,56 @@ function wfCanIPUseHTTPS( $ip ) {
        wfRunHooks( 'CanIPUseHTTPS', array( $ip, &$canDo ) );
        return !!$canDo;
 }
+
+/**
+ * Work out the IP address based on various globals
+ * For trusted proxies, use the XFF client IP (first of the chain)
+ *
+ * @deprecated in 1.19; call $wgRequest->getIP() directly.
+ * @return string
+ */
+function wfGetIP() {
+       wfDeprecated( __METHOD__, '1.19' );
+       global $wgRequest;
+       return $wgRequest->getIP();
+}
+
+/**
+ * Checks if an IP is a trusted proxy provider.
+ * Useful to tell if X-Forwarded-For data is possibly bogus.
+ * Squid cache servers for the site are whitelisted.
+ *
+ * @param $ip String
+ * @return bool
+ */
+function wfIsTrustedProxy( $ip ) {
+       $trusted = wfIsConfiguredProxy( $ip );
+       wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
+       return $trusted;
+}
+
+/**
+ * Checks if an IP matches a proxy we've configured.
+ * @param $ip String
+ * @return bool
+ * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge
+ */
+function wfIsConfiguredProxy( $ip ) {
+       global $wgSquidServers, $wgSquidServersNoPurge;
+
+       // quick check of known proxy servers
+       $trusted = in_array( $ip, $wgSquidServers )
+               || in_array( $ip, $wgSquidServersNoPurge );
+
+       if ( !$trusted ) {
+               // slightly slower check to see if the ip is listed directly or in a CIDR
+               // block in $wgSquidServersNoPurge
+               foreach ( $wgSquidServersNoPurge as $block ) {
+                       if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) {
+                               $trusted = true;
+                               break;
+                       }
+               }
+       }
+       return $trusted;
+}