*
* @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 );
// 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__
);
}
* 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;
'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;