Make good-faith effort to run BrokenLink hook in Linker::link(). No parser-test...
authorAryeh Gregor <simetrical@users.mediawiki.org>
Mon, 4 Aug 2008 19:36:20 +0000 (19:36 +0000)
committerAryeh Gregor <simetrical@users.mediawiki.org>
Mon, 4 Aug 2008 19:36:20 +0000 (19:36 +0000)
includes/Linker.php
includes/Xml.php

index b913ebf..476245c 100644 (file)
@@ -205,8 +205,24 @@ class Linker {
                        $text = $this->linkText( $target );
                }
 
+               # Compat cruft :(
+               if( in_array( 'broken', $options ) ) {
+                       $hookQuery = wfArrayToCGI( $query );
+                       $hookUrl = $attribs['href'];
+                       $hookAttribs = $attribs;
+                       unset( $hookAttribs['href'] );
+                       $hookAttribs = Xml::expandAttributes( $hookAttribs );
+                       $hookPrefix = $hookInside = $hookTrail = '';
+                       wfRunHooks( 'BrokenLink', array( $this, $target, $hookQuery,
+                               &$hookUrl, &$hookAttribs, &$hookPrefix, &$text, &$hookInside,
+                               &$hookTrail ) );
+                       $attribs = Sanitizer::decodeTagAttributes( $hookAttribs );
+                       $attribs['href'] = $hookUrl;
+                       $text = "$hookPrefix$text$hookInside";
+               }
+
                $ret = Xml::openElement( 'a', $attribs )
-                       . $text
+                       . $text . ( isset( $hookTrail ) ? $hookTrail : '' )
                        . Xml::closeElement( 'a' );
 
                wfProfileOut( __METHOD__ );
index 7db9ee8..1551878 100644 (file)
@@ -41,7 +41,7 @@ class Xml {
         * Return null if no attributes given.
         * @param $attribs Array of attributes for an XML element
         */
-       private static function expandAttributes( $attribs ) {
+       public static function expandAttributes( $attribs ) {
                $out = '';
                if( is_null( $attribs ) ) {
                        return null;
@@ -682,4 +682,4 @@ class XmlSelect {
                return Xml::tags( 'select', $this->attributes, implode( "\n", $this->options ) );
        }
 
-}
\ No newline at end of file
+}