diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2013-12-08 09:55:49 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2013-12-08 09:55:49 +0100 |
commit | 4ac9fa081a7c045f6a9f1cfc529d82423f485b2e (patch) | |
tree | af68743f2f4a47d13f2b0eb05f5c4aaf86d8ea37 /includes/specials/SpecialLinkSearch.php | |
parent | af4da56f1ad4d3ef7b06557bae365da2ea27a897 (diff) |
Update to MediaWiki 1.22.0
Diffstat (limited to 'includes/specials/SpecialLinkSearch.php')
-rw-r--r-- | includes/specials/SpecialLinkSearch.php | 71 |
1 files changed, 50 insertions, 21 deletions
diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php index 030416fb..5b0c56e5 100644 --- a/includes/specials/SpecialLinkSearch.php +++ b/includes/specials/SpecialLinkSearch.php @@ -55,7 +55,7 @@ class LinkSearchPage extends QueryPage { $namespace = $request->getIntorNull( 'namespace', null ); $protocols_list = array(); - foreach( $wgUrlProtocols as $prot ) { + foreach ( $wgUrlProtocols as $prot ) { if ( $prot !== '//' ) { $protocols_list[] = $prot; } @@ -72,7 +72,7 @@ class LinkSearchPage extends QueryPage { } elseif ( !$pr_sl && $pr_cl ) { // For protocols without '//' like 'mailto:' $protocol = substr( $target2, 0, $pr_cl + 1 ); - $target2 = substr( $target2, $pr_cl+1 ); + $target2 = substr( $target2, $pr_cl + 1 ); } elseif ( $protocol == '' && $target2 != '' ) { // default $protocol = 'http://'; @@ -88,11 +88,21 @@ class LinkSearchPage extends QueryPage { '<nowiki>' . $this->getLanguage()->commaList( $protocols_list ) . '</nowiki>', count( $protocols_list ) ); - $s = Html::openElement( 'form', array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $wgScript ) ) . "\n" . + $s = Html::openElement( + 'form', + array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $wgScript ) + ) . "\n" . Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" . Html::openElement( 'fieldset' ) . "\n" . Html::element( 'legend', array(), $this->msg( 'linksearch' )->text() ) . "\n" . - Xml::inputLabel( $this->msg( 'linksearch-pat' )->text(), 'target', 'target', 50, $target ) . "\n"; + Xml::inputLabel( + $this->msg( 'linksearch-pat' )->text(), + 'target', + 'target', + 50, + $target + ) . "\n"; + if ( !$wgMiserMode ) { $s .= Html::namespaceSelector( array( @@ -100,25 +110,27 @@ class LinkSearchPage extends QueryPage { 'all' => '', 'label' => $this->msg( 'linksearch-ns' )->text() ), array( - 'name' => 'namespace', - 'id' => 'namespace', + 'name' => 'namespace', + 'id' => 'namespace', 'class' => 'namespaceselector', ) ); } + $s .= Xml::submitButton( $this->msg( 'linksearch-ok' )->text() ) . "\n" . Html::closeElement( 'fieldset' ) . "\n" . Html::closeElement( 'form' ) . "\n"; $out->addHTML( $s ); - if( $target != '' ) { + if ( $target != '' ) { $this->setParams( array( 'query' => $target2, 'namespace' => $namespace, 'protocol' => $protocol ) ); parent::execute( $par ); - if( $this->mMungedQuery === false ) + if ( $this->mMungedQuery === false ) { $out->addWikiMsg( 'linksearch-error' ); + } } } @@ -133,6 +145,8 @@ class LinkSearchPage extends QueryPage { /** * Return an appropriately formatted LIKE query and the clause * + * @param string $query + * @param string $prot * @return array */ static function mungeQuery( $query, $prot ) { @@ -140,12 +154,14 @@ class LinkSearchPage extends QueryPage { $rv = LinkFilter::makeLikeArray( $query, $prot ); if ( $rv === false ) { // LinkFilter doesn't handle wildcard in IP, so we'll have to munge here. - if ( preg_match( '/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/', $query ) ) { + $pattern = '/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/'; + if ( preg_match( $pattern, $query ) ) { $dbr = wfGetDB( DB_SLAVE ); $rv = array( $prot . rtrim( $query, " \t*" ), $dbr->anyString() ); $field = 'el_to'; } } + return array( $rv, $field ); } @@ -153,9 +169,10 @@ class LinkSearchPage extends QueryPage { global $wgMiserMode; $params = array(); $params['target'] = $this->mProt . $this->mQuery; - if( isset( $this->mNs ) && !$wgMiserMode ) { + if ( isset( $this->mNs ) && !$wgMiserMode ) { $params['namespace'] = $this->mNs; } + return $params; } @@ -164,29 +181,41 @@ class LinkSearchPage extends QueryPage { $dbr = wfGetDB( DB_SLAVE ); // strip everything past first wildcard, so that // index-based-only lookup would be done - list( $this->mMungedQuery, $clause ) = self::mungeQuery( - $this->mQuery, $this->mProt ); - if( $this->mMungedQuery === false ) + list( $this->mMungedQuery, $clause ) = self::mungeQuery( $this->mQuery, $this->mProt ); + if ( $this->mMungedQuery === false ) { // Invalid query; return no results return array( 'tables' => 'page', 'fields' => 'page_id', 'conds' => '0=1' ); + } $stripped = LinkFilter::keepOneWildcard( $this->mMungedQuery ); $like = $dbr->buildLike( $stripped ); - $retval = array ( - 'tables' => array ( 'page', 'externallinks' ), - 'fields' => array ( 'namespace' => 'page_namespace', - 'title' => 'page_title', - 'value' => 'el_index', 'url' => 'el_to' ), - 'conds' => array ( 'page_id = el_from', - "$clause $like" ), + $retval = array( + 'tables' => array( 'page', 'externallinks' ), + 'fields' => array( + 'namespace' => 'page_namespace', + 'title' => 'page_title', + 'value' => 'el_index', + 'url' => 'el_to' + ), + 'conds' => array( + 'page_id = el_from', + "$clause $like" + ), 'options' => array( 'USE INDEX' => $clause ) ); + if ( isset( $this->mNs ) && !$wgMiserMode ) { $retval['conds']['page_namespace'] = $this->mNs; } + return $retval; } + /** + * @param Skin $skin + * @param object $result Result row + * @return string + */ function formatResult( $skin, $result ) { $title = Title::makeTitle( $result->namespace, $result->title ); $url = $result->url; @@ -201,7 +230,7 @@ class LinkSearchPage extends QueryPage { */ function doQuery( $offset = false, $limit = false ) { list( $this->mMungedQuery, ) = LinkSearchPage::mungeQuery( $this->mQuery, $this->mProt ); - if( $this->mMungedQuery === false ) { + if ( $this->mMungedQuery === false ) { $this->getOutput()->addWikiMsg( 'linksearch-error' ); } else { // For debugging |