r20409 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r20408‎ | r20409 | r20410 >
Date:21:48, 13 March 2007
Author:raymond
Status:old
Tags:
Comment:
* (bug 3984) Searching in logs by title%
Modified paths:
  • /trunk/phase3/RELEASE-NOTES (modified) (history)
  • /trunk/phase3/includes/SpecialLog.php (modified) (history)
  • /trunk/phase3/languages/messages/MessagesDe.php (modified) (history)
  • /trunk/phase3/languages/messages/MessagesEn.php (modified) (history)
  • /trunk/phase3/maintenance/language/messages.inc (modified) (history)

Diff [purge]

Index: trunk/phase3/RELEASE-NOTES
@@ -267,6 +267,7 @@
268268 * Make Special:Listusers caseinsensitive for first letter
269269 * Default tidy.conf has been moved from extensions module into includes.
270270 * Ignore lonely '''''
 271+* (bug 3984) Searching in logs by title%
271272
272273
273274 == Languages updated ==
Index: trunk/phase3/languages/messages/MessagesDe.php
@@ -880,7 +880,7 @@
881881 'grouppage-bureaucrat' => '{{ns:project}}:Bürokraten',
882882
883883 # User rights log
884 -'rightslog' => 'Benutzerrechte-Logbuch',
 884+'rightslog' => 'Rechte-Logbuch',
885885 'rightslogtext' => 'Dies ist das Logbuch der Änderungen der Benutzerrechte.',
886886 'rightslogentry' => 'änderte die Gruppenzugehörigkeit für „[[$1]]“ von „$2“ auf „$3“.',
887887 'rightsnone' => '(-)',
@@ -1178,10 +1178,18 @@
11791179 'isbn' => 'ISBN',
11801180 'alphaindexline' => '$1 bis $2',
11811181 'version' => 'Version',
1182 -'log' => 'Logbücher',
1183 -'alllogstext' => 'Kombinierte Anzeige der Datei-, Lösch-, Seitenschutz-, Benutzersperr- und Rechte-Logbücher.<br />Sie können die Anzeige durch die Auswahl des Logbuchtyps, des Benutzers oder des Seitentitels einschränken.',
1184 -'logempty' => 'Keine passenden Einträge.',
11851182
 1183+# Special:Logs
 1184+'specialloguserlabel' => 'Benutzer:',
 1185+'speciallogtitlelabel' => 'Titel:',
 1186+'log' => 'Logbücher',
 1187+'alllogstext' => "Dies ist die kombinierte Anzeige aller in {{SITENAME}} geführten Logbücher.
 1188+Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seitentitels eingeschränkt werden.
 1189+
 1190+Durch Markieren von „{{int:title-pattern}}“ wird nach Titeln gesucht, die mit diesem Begriff anfangen und beliebig enden. Es können keine Platzhalter ''(Wildcards)'' benutzt werden",
 1191+'logempty' => 'Keine passenden Einträge.',
 1192+'title-pattern' => 'Titel beginnt mit …',
 1193+
11861194 # Special:Allpages
11871195 'nextpage' => 'Nächste Seite ($1)',
11881196 'prevpage' => 'Vorherige Seite ($1)',
@@ -1809,10 +1817,6 @@
18101818 'variantname-kk-cn' => 'kk-cn',
18111819 'variantname-kk' => 'kk',
18121820
1813 -# Labels for User: and Title: on Special:Log pages
1814 -'specialloguserlabel' => 'Benutzer:',
1815 -'speciallogtitlelabel' => 'Titel:',
1816 -
18171821 'passwordtooshort' => 'Das Passwort ist zu kurz. Es muss mindestens $1 Zeichen lang sein.',
18181822
18191823 # Metadata
Index: trunk/phase3/languages/messages/MessagesEn.php
@@ -1575,12 +1575,16 @@
15761576 'pubmedurl' => 'http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=$1',
15771577 'alphaindexline' => "$1 to $2",
15781578 'version' => 'Version',
1579 -'log' => 'Logs',
1580 -'alllogstext' => 'Combined display of upload, deletion, protection, blocking, and sysop logs.
 1579+
 1580+# Special:Logs
 1581+'specialloguserlabel' => 'Benutzer:',
 1582+'speciallogtitlelabel' => 'Titel:',
 1583+'log' => 'Logs',
 1584+'alllogstext' => 'Combined display of all available logs of {{SITENAME}}.
15811585 You can narrow down the view by selecting a log type, the user name, or the affected page.',
1582 -'logempty' => 'No matching items in log.',
 1586+'logempty' => 'No matching items in log.',
 1587+'title-pattern' => 'Title starts with �',
15831588
1584 -
15851589 # Special:Allpages
15861590 'nextpage' => 'Next page ($1)',
15871591 'prevpage' => 'Previous page ($1)',
@@ -2327,10 +2331,6 @@
23282332 'variantname-kk-cn' => 'kk-cn',
23292333 'variantname-kk' => 'kk',
23302334
2331 -# labels for User: and Title: on Special:Log pages
2332 -'specialloguserlabel' => 'User:',
2333 -'speciallogtitlelabel' => 'Title:',
2334 -
23352335 'passwordtooshort' => 'Your password is too short. It must have at least $1 characters.',
23362336
23372337 # Metadata
Index: trunk/phase3/includes/SpecialLog.php
@@ -66,7 +66,7 @@
6767
6868 $this->limitType( $request->getVal( 'type' ) );
6969 $this->limitUser( $request->getText( 'user' ) );
70 - $this->limitTitle( $request->getText( 'page' ) );
 70+ $this->limitTitle( $request->getText( 'page' ) , $request->getBool( 'pattern' ) );
7171 $this->limitTime( $request->getVal( 'from' ), '>=' );
7272 $this->limitTime( $request->getVal( 'until' ), '<=' );
7373
@@ -116,15 +116,21 @@
117117 * @param string $page Title name as text
118118 * @private
119119 */
120 - function limitTitle( $page ) {
 120+ function limitTitle( $page , $pattern ) {
121121 $title = Title::newFromText( $page );
122122 if( empty( $page ) || is_null( $title ) ) {
123123 return false;
124124 }
125125 $this->title =& $title;
126 - $safetitle = $this->db->strencode( $title->getDBkey() );
 126+ $this->pattern = $pattern;
127127 $ns = $title->getNamespace();
128 - $this->whereClauses[] = "log_namespace=$ns AND log_title='$safetitle'";
 128+ if ( $pattern ) {
 129+ $safetitle = $this->db->escapeLike( $title->getDBkey() ); // use escapeLike to avoid expensive search patterns like 't%st%'
 130+ $this->whereClauses[] = "log_namespace=$ns AND log_title LIKE '$safetitle%'";
 131+ } else {
 132+ $safetitle = $this->db->strencode( $title->getDBkey() );
 133+ $this->whereClauses[] = "log_namespace=$ns AND log_title = '$safetitle'";
 134+ }
129135 }
130136
131137 /**
@@ -188,6 +194,13 @@
189195 }
190196
191197 /**
 198+ * @return boolean The checkbox, if titles should be searched by a pattern too
 199+ */
 200+ function queryPattern() {
 201+ return $this->pattern;
 202+ }
 203+
 204+ /**
192205 * @return string The text of the title that this LogReader has been limited to.
193206 */
194207 function queryTitle() {
@@ -227,9 +240,13 @@
228241 $this->showHeader( $wgOut );
229242 $this->showOptions( $wgOut );
230243 $result = $this->getLogRows();
231 - $this->showPrevNext( $wgOut );
232 - $this->doShowList( $wgOut, $result );
233 - $this->showPrevNext( $wgOut );
 244+ if ( $this->numResults > 0 ) {
 245+ $this->showPrevNext( $wgOut );
 246+ $this->doShowList( $wgOut, $result );
 247+ $this->showPrevNext( $wgOut );
 248+ } else {
 249+ $this->showError( $wgOut );
 250+ }
234251 }
235252
236253 /**
@@ -278,20 +295,20 @@
279296
280297 function doShowList( &$out, $result ) {
281298 // Rewind result pointer and go through it again, making the HTML
282 - if ($this->numResults > 0) {
283 - $html = "\n<ul>\n";
284 - $result->seek( 0 );
285 - while( $s = $result->fetchObject() ) {
286 - $html .= $this->logLine( $s );
287 - }
288 - $html .= "\n</ul>\n";
289 - $out->addHTML( $html );
290 - } else {
291 - $out->addWikiText( wfMsg( 'logempty' ) );
 299+ $html = "\n<ul>\n";
 300+ $result->seek( 0 );
 301+ while( $s = $result->fetchObject() ) {
 302+ $html .= $this->logLine( $s );
292303 }
 304+ $html .= "\n</ul>\n";
 305+ $out->addHTML( $html );
293306 $result->free();
294307 }
295308
 309+ function showError( &$out ) {
 310+ $out->addWikiText( wfMsg( 'logempty' ) );
 311+ }
 312+
296313 /**
297314 * @param Object $s a single row from the result set
298315 * @return string Formatted HTML list item
@@ -372,12 +389,15 @@
373390 $title = SpecialPage::getTitleFor( 'Log' );
374391 $special = htmlspecialchars( $title->getPrefixedDBkey() );
375392 $out->addHTML( "<form action=\"$action\" method=\"get\">\n" .
 393+ '<fieldset>' .
 394+ Xml::element( 'legend', array(), wfMsg( 'log' ) ) .
376395 Xml::hidden( 'title', $special ) . "\n" .
377396 $this->getTypeMenu() . "\n" .
378397 $this->getUserInput() . "\n" .
379398 $this->getTitleInput() . "\n" .
 399+ $this->getTitlePattern() . "\n" .
380400 Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
381 - "</form>" );
 401+ "</fieldset></form>" );
382402 }
383403
384404 /**
@@ -428,6 +448,15 @@
429449 }
430450
431451 /**
 452+ * @return boolean Checkbox
 453+ * @private
 454+ */
 455+ function getTitlePattern() {
 456+ $pattern = $this->reader->queryPattern();
 457+ return Xml::checkLabel( wfMsg( 'title-pattern' ), 'pattern', 'pattern', $pattern );
 458+ }
 459+
 460+ /**
432461 * @param OutputPage &$out where to send output
433462 * @private
434463 */
@@ -437,6 +466,7 @@
438467 $pieces[] = 'type=' . urlencode( $this->reader->queryType() );
439468 $pieces[] = 'user=' . urlencode( $this->reader->queryUser() );
440469 $pieces[] = 'page=' . urlencode( $this->reader->queryTitle() );
 470+ $pieces[] = 'pattern=' . urlencode( $this->reader->queryPattern() );
441471 $bits = implode( '&', $pieces );
442472 list( $limit, $offset ) = $wgRequest->getLimitOffset();
443473
Index: trunk/phase3/maintenance/language/messages.inc
@@ -976,9 +976,14 @@
977977 'pubmedurl',
978978 'alphaindexline',
979979 'version',
 980+ ),
 981+ 'logpages' => array(
980982 'log',
981983 'alllogstext',
982984 'logempty',
 985+ 'specialloguserlabel',
 986+ 'speciallogtitlelabel',
 987+ 'title-pattern',
983988 ),
984989 'allpages' => array(
985990 'nextpage',
@@ -1597,10 +1602,6 @@
15981603 'variantname-kk-cn',
15991604 'variantname-kk',
16001605 ),
1601 - 'specialloglabels' => array(
1602 - 'specialloguserlabel',
1603 - 'speciallogtitlelabel',
1604 - ),
16051606 'passwordtooshort' => array(
16061607 'passwordtooshort',
16071608 ),
@@ -2099,6 +2100,7 @@
21002101 'specialpages' => 'Miscellaneous special pages',
21012102 'booksources' => 'Book sources',
21022103 'specialpages2' => '',
 2104+ 'logpages' => 'Special:Logs',
21032105 'allpages' => 'Special:Allpages',
21042106 'listusers' => 'Special:Listusers',
21052107 'emailuser' => 'E-mail user',
@@ -2142,7 +2144,6 @@
21432145 Variants for Chinese language",
21442146 'variantname-sr' => 'Variants for Serbian language',
21452147 'variantname-kk' => 'Variants for Kazakh language',
2146 - 'specialloglabels' => 'Labels for User: and Title: on Special:Log pages',
21472148 'passwordtooshort' => '',
21482149 'media-info' => 'Media information',
21492150 'metadata' => 'Metadata',

Follow-up revisions

RevisionCommit summaryAuthorDate
r20419fix for r20409. Thanks to VoA.raymond00:04, 14 March 2007