X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialWhatlinkshere.php;h=28be790911519aa84ed65309aa469db3b67e6558;hb=75301351cf8c7258c1d8ed374474606ec5158226;hp=e373cfffb615771fd9032dc3d9d3bfc43649a76e;hpb=40022d6cbc784049222e5590ba7b85d617213457;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialWhatlinkshere.php b/includes/specials/SpecialWhatlinkshere.php index e373cfffb6..28be790911 100644 --- a/includes/specials/SpecialWhatlinkshere.php +++ b/includes/specials/SpecialWhatlinkshere.php @@ -58,6 +58,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $opts->add( 'hidetrans', false ); $opts->add( 'hidelinks', false ); $opts->add( 'hideimages', false ); + $opts->add( 'invert', false ); $opts->fetchValuesFromRequest( $this->getRequest() ); $opts->validateIntBounds( 'limit', 0, 5000 ); @@ -125,15 +126,17 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $useLinkNamespaceDBFields = $this->getConfig()->get( 'UseLinkNamespaceDBFields' ); $namespace = $this->opts->getValue( 'namespace' ); + $invert = $this->opts->getValue( 'invert' ); + $nsComparison = ( $invert ? '!= ' : '= ' ) . $dbr->addQuotes( $namespace ); if ( is_int( $namespace ) ) { if ( $useLinkNamespaceDBFields ) { - $conds['pagelinks']['pl_from_namespace'] = $namespace; - $conds['templatelinks']['tl_from_namespace'] = $namespace; - $conds['imagelinks']['il_from_namespace'] = $namespace; + $conds['pagelinks'][] = "pl_from_namespace $nsComparison"; + $conds['templatelinks'][] = "tl_from_namespace $nsComparison"; + $conds['imagelinks'][] = "il_from_namespace $nsComparison"; } else { - $conds['pagelinks']['page_namespace'] = $namespace; - $conds['templatelinks']['page_namespace'] = $namespace; - $conds['imagelinks']['page_namespace'] = $namespace; + $conds['pagelinks'][] = "page_namespace $nsComparison"; + $conds['templatelinks'][] = "page_namespace $nsComparison"; + $conds['imagelinks'][] = "page_namespace $nsComparison"; } } @@ -174,7 +177,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { ); return $dbr->select( array( 'page', 'temp_backlink_range' => "($subQuery)" ), - array( 'page_id', 'page_namespace', 'page_title', 'rd_from' ), + array( 'page_id', 'page_namespace', 'page_title', 'rd_from', 'page_is_redirect' ), array(), __CLASS__ . '::showIndirectLinks', array( 'ORDER BY' => 'page_id', 'LIMIT' => $queryLimit ), @@ -318,7 +321,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $link = Linker::linkKnown( $nt, null, - array(), + $row->page_is_redirect ? array( 'class' => 'mw-redirect' ) : array(), $query ); @@ -335,7 +338,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $props[] = $msgcache['isimage']; } - wfRunHooks( 'WhatLinksHereProps', array( $row, $nt, $target, &$props ) ); + Hooks::run( 'WhatLinksHereProps', array( $row, $nt, $target, &$props ) ); if ( count( $props ) ) { $propsText = $this->msg( 'parentheses' ) @@ -419,6 +422,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { $target = $this->target ? $this->target->getPrefixedText() : ''; $namespace = $this->opts->consumeValue( 'namespace' ); + $nsinvert = $this->opts->consumeValue( 'invert' ); # Build up the form $f = Xml::openElement( 'form', array( 'action' => wfScript() ) ); @@ -450,6 +454,15 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { ) ); + $f .= ' ' . + Xml::checkLabel( + $this->msg( 'invert' )->text(), + 'invert', + 'nsinvert', + $nsinvert, + array( 'title' => $this->msg( 'tooltip-whatlinkshere-invert' )->text() ) + ); + $f .= ' '; # Submit @@ -496,6 +509,24 @@ class SpecialWhatLinksHere extends IncludableSpecialPage { ); } + /** + * Return an array of subpages beginning with $search that this special page will accept. + * + * @param string $search Prefix to search for + * @param int $limit Maximum number of results to return (usually 10) + * @param int $offset Number of results to skip (usually 0) + * @return string[] Matching subpages + */ + public function prefixSearchSubpages( $search, $limit, $offset ) { + if ( $search === '' ) { + return array(); + } + // Autocomplete subpage the same as a normal search + $prefixSearcher = new StringPrefixSearch; + $result = $prefixSearcher->search( $search, $limit, array(), $offset ); + return $result; + } + protected function getGroupName() { return 'pagetools'; }