r40866 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r40865‎ | r40866 | r40867 >
Date:18:53, 15 September 2008
Author:aaron
Status:old
Tags:
Comment:
Cleanup for r40830. Don't die for sites that still have the extension on.
Modified paths:
  • /trunk/extensions/LinkSearch/LinkSearch.php (modified) (history)
  • /trunk/extensions/LinkSearch/LinkSearchPage.php (added) (history)
  • /trunk/extensions/LinkSearch/LinkSearch_body.php (modified) (history)

Diff [purge]

Index: trunk/extensions/LinkSearch/LinkSearchPage.php
@@ -0,0 +1,113 @@
 2+<?php
 3+
 4+class LinkSearchPage extends QueryPage {
 5+
 6+ function __construct( $query, $ns, $prot ) {
 7+ $this->mQuery = $query;
 8+ $this->mNs = $ns;
 9+ $this->mProt = $prot;
 10+ }
 11+
 12+ function getName() {
 13+ return 'LinkSearch';
 14+ }
 15+
 16+ /**
 17+ * Disable RSS/Atom feeds
 18+ */
 19+ function isSyndicated() {
 20+ return false;
 21+ }
 22+
 23+ /**
 24+ * Return an appropriately formatted LIKE query and the clause
 25+ */
 26+ static function mungeQuery( $query , $prot ) {
 27+ $field = 'el_index';
 28+ $rv = LinkFilter::makeLike( $query , $prot );
 29+ if ($rv === false) {
 30+ //makeLike doesn't handle wildcard in IP, so we'll have to munge here.
 31+ if (preg_match('/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/', $query)) {
 32+ $rv = $prot . rtrim($query, " \t*") . '%';
 33+ $field = 'el_to';
 34+ }
 35+ }
 36+ return array( $rv, $field );
 37+ }
 38+
 39+ function linkParameters() {
 40+ global $wgMiserMode;
 41+ $params = array();
 42+ $params['target'] = $this->mProt . $this->mQuery;
 43+ if( isset( $this->mNs ) && !$wgMiserMode ) {
 44+ $params['namespace'] = $this->mNs;
 45+ }
 46+ return $params;
 47+ }
 48+
 49+ function getSQL() {
 50+ global $wgMiserMode;
 51+ $dbr = wfGetDB( DB_SLAVE );
 52+ $page = $dbr->tableName( 'page' );
 53+ $externallinks = $dbr->tableName( 'externallinks' );
 54+
 55+ /* strip everything past first wildcard, so that index-based-only lookup would be done */
 56+ list( $munged, $clause ) = self::mungeQuery( $this->mQuery, $this->mProt );
 57+ $stripped = substr($munged,0,strpos($munged,'%')+1);
 58+ $encSearch = $dbr->addQuotes( $stripped );
 59+
 60+ $encSQL = '';
 61+ if ( isset ($this->mNs) && !$wgMiserMode )
 62+ $encSQL = 'AND page_namespace=' . $dbr->addQuotes( $this->mNs );
 63+
 64+ $use_index = $dbr->useIndexClause( $clause );
 65+ return
 66+ "SELECT
 67+ page_namespace AS namespace,
 68+ page_title AS title,
 69+ el_index AS value,
 70+ el_to AS url
 71+ FROM
 72+ $page,
 73+ $externallinks $use_index
 74+ WHERE
 75+ page_id=el_from
 76+ AND $clause LIKE $encSearch
 77+ $encSQL";
 78+ }
 79+
 80+ function formatResult( $skin, $result ) {
 81+ $title = Title::makeTitle( $result->namespace, $result->title );
 82+ $url = $result->url;
 83+ $pageLink = $skin->makeKnownLinkObj( $title );
 84+ $urlLink = $skin->makeExternalLink( $url, $url );
 85+
 86+ return wfMsgHtml( 'linksearch-line', $urlLink, $pageLink );
 87+ }
 88+
 89+ /**
 90+ * Override to check query validity.
 91+ */
 92+ function doQuery( $offset, $limit, $shownavigation=true ) {
 93+ global $wgOut;
 94+ list( $this->mMungedQuery, $clause ) = LinkSearchPage::mungeQuery( $this->mQuery, $this->mProt );
 95+ if( $this->mMungedQuery === false ) {
 96+ $wgOut->addWikiText( wfMsg( 'linksearch-error' ) );
 97+ } else {
 98+ // For debugging
 99+ // Generates invalid xhtml with patterns that contain --
 100+ //$wgOut->addHtml( "\n<!-- " . htmlspecialchars( $this->mMungedQuery ) . " -->\n" );
 101+ parent::doQuery( $offset, $limit, $shownavigation );
 102+ }
 103+ }
 104+
 105+ /**
 106+ * Override to squash the ORDER BY.
 107+ * We do a truncated index search, so the optimizer won't trust
 108+ * it as good enough for optimizing sort. The implicit ordering
 109+ * from the scan will usually do well enough for our needs.
 110+ */
 111+ function getOrder() {
 112+ return '';
 113+ }
 114+}
Property changes on: trunk/extensions/LinkSearch/LinkSearchPage.php
___________________________________________________________________
Added: svn:eol-style
1115 + native
Index: trunk/extensions/LinkSearch/LinkSearch_body.php
@@ -65,115 +65,3 @@
6666 }
6767 }
6868 }
69 -
70 -class LinkSearchPage extends QueryPage {
71 -
72 - function __construct( $query, $ns, $prot ) {
73 - $this->mQuery = $query;
74 - $this->mNs = $ns;
75 - $this->mProt = $prot;
76 - }
77 -
78 - function getName() {
79 - return 'LinkSearch';
80 - }
81 -
82 - /**
83 - * Disable RSS/Atom feeds
84 - */
85 - function isSyndicated() {
86 - return false;
87 - }
88 -
89 - /**
90 - * Return an appropriately formatted LIKE query and the clause
91 - */
92 - static function mungeQuery( $query , $prot ) {
93 - $field = 'el_index';
94 - $rv = LinkFilter::makeLike( $query , $prot );
95 - if ($rv === false) {
96 - //makeLike doesn't handle wildcard in IP, so we'll have to munge here.
97 - if (preg_match('/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/', $query)) {
98 - $rv = $prot . rtrim($query, " \t*") . '%';
99 - $field = 'el_to';
100 - }
101 - }
102 - return array( $rv, $field );
103 - }
104 -
105 - function linkParameters() {
106 - global $wgMiserMode;
107 - $params = array();
108 - $params['target'] = $this->mProt . $this->mQuery;
109 - if( isset( $this->mNs ) && !$wgMiserMode ) {
110 - $params['namespace'] = $this->mNs;
111 - }
112 - return $params;
113 - }
114 -
115 - function getSQL() {
116 - global $wgMiserMode;
117 - $dbr = wfGetDB( DB_SLAVE );
118 - $page = $dbr->tableName( 'page' );
119 - $externallinks = $dbr->tableName( 'externallinks' );
120 -
121 - /* strip everything past first wildcard, so that index-based-only lookup would be done */
122 - list( $munged, $clause ) = self::mungeQuery( $this->mQuery, $this->mProt );
123 - $stripped = substr($munged,0,strpos($munged,'%')+1);
124 - $encSearch = $dbr->addQuotes( $stripped );
125 -
126 - $encSQL = '';
127 - if ( isset ($this->mNs) && !$wgMiserMode )
128 - $encSQL = 'AND page_namespace=' . $dbr->addQuotes( $this->mNs );
129 -
130 - $use_index = $dbr->useIndexClause( $clause );
131 - return
132 - "SELECT
133 - page_namespace AS namespace,
134 - page_title AS title,
135 - el_index AS value,
136 - el_to AS url
137 - FROM
138 - $page,
139 - $externallinks $use_index
140 - WHERE
141 - page_id=el_from
142 - AND $clause LIKE $encSearch
143 - $encSQL";
144 - }
145 -
146 - function formatResult( $skin, $result ) {
147 - $title = Title::makeTitle( $result->namespace, $result->title );
148 - $url = $result->url;
149 - $pageLink = $skin->makeKnownLinkObj( $title );
150 - $urlLink = $skin->makeExternalLink( $url, $url );
151 -
152 - return wfMsgHtml( 'linksearch-line', $urlLink, $pageLink );
153 - }
154 -
155 - /**
156 - * Override to check query validity.
157 - */
158 - function doQuery( $offset, $limit, $shownavigation=true ) {
159 - global $wgOut;
160 - list( $this->mMungedQuery, $clause ) = LinkSearchPage::mungeQuery( $this->mQuery, $this->mProt );
161 - if( $this->mMungedQuery === false ) {
162 - $wgOut->addWikiText( wfMsg( 'linksearch-error' ) );
163 - } else {
164 - // For debugging
165 - // Generates invalid xhtml with patterns that contain --
166 - //$wgOut->addHtml( "\n<!-- " . htmlspecialchars( $this->mMungedQuery ) . " -->\n" );
167 - parent::doQuery( $offset, $limit, $shownavigation );
168 - }
169 - }
170 -
171 - /**
172 - * Override to squash the ORDER BY.
173 - * We do a truncated index search, so the optimizer won't trust
174 - * it as good enough for optimizing sort. The implicit ordering
175 - * from the scan will usually do well enough for our needs.
176 - */
177 - function getOrder() {
178 - return '';
179 - }
180 -}
Index: trunk/extensions/LinkSearch/LinkSearch.php
@@ -21,5 +21,5 @@
2222
2323 $wgSpecialPages['LinkSearch'] = 'LinkSearchSpecialPage';
2424 $wgSpecialPageGroups['LinkSearch'] = 'redirects';
25 -$wgAutoloadClasses['LinkSearchPage'] = $dir . 'LinkSearch_body.php';
 25+$wgAutoloadClasses['LinkSearchPage'] = $dir . 'LinkSearchPage.php';
2626 $wgAutoloadClasses['LinkSearchSpecialPage'] = $dir . 'LinkSearch_body.php';

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r40830* Add functionality of extension LinkSearch to core...siebrand19:51, 14 September 2008