X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fchangetags%2FChangeTags.php;h=12f738fedbba177e3be48be9cc5a03ed1a0cac54;hb=f1a890c34cebd8744bf3a6277734275fb975575a;hp=95f48161d9950eca01d1d010575c173f68e4381a;hpb=f873b499650ef5d27570f9cb96d01d1477f9e089;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/changetags/ChangeTags.php b/includes/changetags/ChangeTags.php index 95f48161d9..12f738fedb 100644 --- a/includes/changetags/ChangeTags.php +++ b/includes/changetags/ChangeTags.php @@ -153,8 +153,10 @@ class ChangeTags { * * @since 1.25 */ - public static function updateTags( $tagsToAdd, $tagsToRemove, &$rc_id = null, - &$rev_id = null, &$log_id = null, $params = null ) { + public static function updateTags( + $tagsToAdd, $tagsToRemove, + &$rc_id = null, &$rev_id = null, &$log_id = null, $params = null + ) { $tagsToAdd = array_filter( (array)$tagsToAdd ); // Make sure we're submitting all tags... $tagsToRemove = array_filter( (array)$tagsToRemove ); @@ -169,18 +171,28 @@ class ChangeTags { // Might as well look for rcids and so on. if ( !$rc_id ) { // Info might be out of date, somewhat fractionally, on slave. + // LogEntry/LogPage and WikiPage match rev/log/rc timestamps, + // so use that relation to avoid full table scans. if ( $log_id ) { $rc_id = $dbw->selectField( - 'recentchanges', + array( 'logging', 'recentchanges' ), 'rc_id', - array( 'rc_logid' => $log_id ), + array( + 'log_id' => $log_id, + 'rc_timestamp = log_timestamp', + 'rc_logid = log_id' + ), __METHOD__ ); } elseif ( $rev_id ) { $rc_id = $dbw->selectField( - 'recentchanges', + array( 'revision', 'recentchanges' ), 'rc_id', - array( 'rc_this_oldid' => $rev_id ), + array( + 'rev_id' => $rev_id, + 'rc_timestamp = rev_timestamp', + 'rc_this_oldid = rev_id' + ), __METHOD__ ); } @@ -611,17 +623,16 @@ class ChangeTags { * Build a text box to select a change tag * * @param string $selected Tag to select by default - * @param bool $fullForm - * - if false, then it returns an array of (label, form). - * - if true, it returns an entire form around the selector. - * @param Title $title Title object to send the form to. - * Used when, and only when $fullForm is true. + * @param bool $fullForm Affects return value, see below + * @param Title $title Title object to send the form to. Used only if $fullForm is true. + * @param bool $ooui Use an OOUI TextInputWidget as selector instead of a non-OOUI input field + * You need to call OutputPage::enableOOUI() yourself. * @return string|array - * - if $fullForm is false: Array with - * - if $fullForm is true: String, html fragment + * - if $fullForm is false: an array of (label, selector). + * - if $fullForm is true: HTML of entire form built around the selector. */ public static function buildTagFilterSelector( $selected = '', - $fullForm = false, Title $title = null + $fullForm = false, Title $title = null, $ooui = false ) { global $wgUseTagFilter; @@ -634,14 +645,24 @@ class ChangeTags { 'label', array( 'for' => 'tagfilter' ), wfMessage( 'tag-filter' )->parse() - ), - Xml::input( + ) + ); + + if ( $ooui ) { + $data[] = new OOUI\TextInputWidget( array( + 'id' => 'tagfilter', + 'name' => 'tagfilter', + 'value' => $selected, + 'classes' => 'mw-tagfilter-input', + ) ); + } else { + $data[] = Xml::input( 'tagfilter', 20, $selected, array( 'class' => 'mw-tagfilter-input mw-ui-input mw-ui-input-inline', 'id' => 'tagfilter' ) - ) - ); + ); + } if ( !$fullForm ) { return $data;