executeLBFromResultWrapper( $res ); } /** * Should formatResult() always check page existence, even if * the results are fresh? This is a (hopefully temporary) * kluge for Special:WantedFiles, which may contain false * positives for files that exist e.g. in a shared repo (bug * 6220). * @return bool */ function forceExistenceCheck() { return false; } /** * Format an individual result * * @param Skin $skin Skin to use for UI elements * @param object $result Result row * @return string */ public function formatResult( $skin, $result ) { $linkRenderer = $this->getLinkRenderer(); $title = Title::makeTitleSafe( $result->namespace, $result->title ); if ( $title instanceof Title ) { if ( $this->isCached() || $this->forceExistenceCheck() ) { $pageLink = $this->existenceCheck( $title ) ? '' . $linkRenderer->makeLink( $title ) . '' : $linkRenderer->makeLink( $title ); } else { $pageLink = $linkRenderer->makeLink( $title, null, [], [], [ 'broken' ] ); } return $this->getLanguage()->specialList( $pageLink, $this->makeWlhLink( $title, $result ) ); } else { return $this->msg( 'wantedpages-badtitle', $result->title )->escaped(); } } /** * Does the Title currently exists * * This method allows a subclass to override this check * (For example, wantedfiles, would want to check if the file exists * not just that a page in the file namespace exists). * * This will only control if the link is crossed out. Whether or not the link * is blue vs red is controlled by if the title exists. * * @note This will only be run if the page is cached (ie $wgMiserMode = true) * unless forceExistenceCheck() is true. * @since 1.24 * @param Title $title * @return bool */ protected function existenceCheck( Title $title ) { return $title->isKnown(); } /** * Make a "what links here" link for a given title * * @param Title $title Title to make the link for * @param object $result Result row * @return string */ private function makeWlhLink( $title, $result ) { $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedText() ); $label = $this->msg( 'nlinks' )->numParams( $result->value )->text(); return $this->getLinkRenderer()->makeLink( $wlh, $label ); } /** * Order by title for pages with the same number of links to them * * @return array * @since 1.29 */ function getOrderFields() { return [ 'value DESC', 'namespace', 'title' ]; } /** * Do not order descending for all order fields. We will use DESC only on one field, see * getOrderFields above. This overwrites sortDescending from QueryPage::getOrderFields(). * Do NOT change this to true unless you remove the phrase DESC in getOrderFiels above. * If you do a database error will be thrown due to double adding DESC to query! * * @return bool * @since 1.29 */ function sortDescending() { return false; } /** * Also use the order fields returned by getOrderFields when fetching from the cache. * @return array * @since 1.29 */ function getCacheOrderFields() { return $this->getOrderFields(); } }