Commit graph

271 commits

Author SHA1 Message Date
Geoffrey Mon
e70c4eb664 Add tags support to patrol, protect, unblock, and undelete
- Add 'tags' parameters to appropriate API modules
- Add tag-adding logic to appropriate functions that carry out
  relevant functions
- ManualLogEntry::{set,get}Tags to handle adding tags to log
  entries in a cleaner fashion
- Use ManualLogEntry::setTags in LocalFile::recordUpload2

Bug: T97720
Change-Id: I98c52da7985623bfdafda2dc2dae937b39b72419
2016-02-29 16:59:31 -05:00
umherirrender
f51f5614a3 Add used messages to LogFormatter::getMessageKey overrides
Change-Id: I55e943ab2788e7fee022d40cc3d74ed479788f3b
2016-02-22 19:11:18 +01:00
Kunal Mehta
6e9b4f0e9c Convert all array() syntax to []
Per wikitech-l consensus:
 https://lists.wikimedia.org/pipermail/wikitech-l/2016-February/084821.html

Notes:
* Disabled CallTimePassByReference due to false positives (T127163)

Change-Id: I2c8ce713ce6600a0bb7bf67537c87044c7a45c4b
2016-02-17 01:33:00 -08:00
jenkins-bot
592637225a Merge "Add IContextSource as parameter to ChangeTags::formatSummaryRow" 2016-02-12 22:39:02 +00:00
Aashaka Shah
124026a712 Add IContextSource as parameter to ChangeTags::formatSummaryRow
Using IContextSource avoids the use of $wgLang and wfMessage which make
use of global $wgTtle.

Add IContextSource as parameter to ChangeTags::formatSummaryRow to avoid
globals. Define an IContextSource instance in all functions which
reference ChangeTags::formatSummaryRow and pass it in ChangeTags::formatSummaryRow
function call.

Also make the default value of IContextSource $context as null in
parameter, to avoid breaking changes for old callers in extensions.

Document default null value of IContextSource and add a @note to prefer
IContextSource over null value.

Remove trailing whitespace, and make code order according to parameter
order.

Bug: T105648
Change-Id: Ib54a6a96b73f6cd8fcdf8e520db2448a1e811cfa
2016-02-04 23:32:24 +05:30
jenkins-bot
9df4c26c4b Merge "Fix doc of LogFormatter::newFromRow" 2016-01-30 12:24:49 +00:00
Max Semenik
796711e0c4 Kill vestiges of SVN times
Change-Id: Ib80c71ea93479eb326ac5afea295d4608f92babe
2016-01-30 01:32:36 -08:00
addshore
1159454506 Fix doc of LogFormatter::newFromRow
DatabaseLogEntry::newFromRow can take both
objects and arrays (arrays are cast to objects).

An array is passed into this method in the
CheckUser extension.

Fixing this phpdoc will mean static analysis
tools will no longer detect that as an error

Change-Id: I84f35c21f8b4e3be0f5b5bd2051f566bda6544fc
2016-01-29 15:41:32 +01:00
jenkins-bot
a8aee26f92 Merge "TagLogFormatter: For log entries changing both revid and logid tags, prefer revid" 2016-01-28 06:00:32 +00:00
Bartosz Dziewoński
61c7852049 Make it possible to tag new file uploads without messy queries
UploadBase::performUpload() now takes a $tags parameter and passes it
to LocalFile::upload() and LocalFile::recordUpload2(), which
eventually adds the requested tags to the log_id, rev_id and rc_id
that are created for the file upload.

Previously you'd have to query the database for the latest rev_id and
log_id for the page title under which the title is being uploaded, as
performUpload() is unable to return them to you because it's all
deferred in funny ways.

Bug: T121874
Change-Id: I99a8fd67c84219d2715d3d88cc21500614431179
2016-01-25 20:06:53 +01:00
Bartosz Dziewoński
d691e02022 TagLogFormatter: For log entries changing both revid and logid tags, prefer revid
After 68cc94540d, it's possible for a
single user action to add/remove tags to both a log entry and an
associated page revision (for example for file uploads). I think we
should consider the revision to be the "primary" source of information.

(Even better, we could display both. But that seems like a bit more
work and I'm not sure if it'd be helpful.)

Change-Id: I3c1770346bc559b96c39d0ec40b2375954681d15
2016-01-20 14:59:13 +01:00
Bartosz Dziewoński
f66ff60244 LogEntry: Make associated rev id persistent (store in logging and log_search)
The implementation from 0160b410bd only
stored the associated rev id in the `recentchanges` table, which was
sufficient for its purpose of allowing patrol of these log entries and
provided some change tagging improvements, but ephemeral.

Now we also store it in `logging` and `log_search` tables, which makes
it possible to find a revision for the log entry and vice versa.

* For `log_search` we just add a row with 'associated_rev_id' as key,
  it was designed for exactly this purpose.
* For `logging` we store it in log_params field in ManualLogEntry, and
  transparently remove it from there when building a DatabaseLogEntry.

Bug: T122089
Change-Id: I559587ff77b3c94b31a6c5951287b6f9c1e167ce
2016-01-07 02:19:51 +00:00
Bartosz Dziewoński
c34682d3e9 LogEntry: Boring whitespace and comment changes, some documentation too
Change-Id: If501a3c276c3dc341ef73d5ffdb255f68cbe0ab7
2016-01-07 02:19:07 +00:00
jenkins-bot
bee82be112 Merge "Option to associate a rev id to a RC log entry, allowing unpatrolled status" 2016-01-06 22:04:10 +00:00
Reedy
c1d5750074 LogPage::logName() and logHeader() were removed
Change-Id: Ib8ab894e01b5125207a6f1ac7377c8287b0a8fce
2016-01-02 21:16:58 +00:00
cenarium
0160b410bd Option to associate a rev id to a RC log entry, allowing unpatrolled status
This provides a mechanism to associate a revision id to an action.
For example in core, it makes sense for moves and uploads, which both
generate null revisions (also protections, but it isn't interesting if one
has patrolling in mind).

Crucially, in that case an unpatrolled status is allowed for the RC item.
So if the performer of the action is not autopatrolled, it will be displayed
as unpatrolled, and if the performer is autopatrolled, it will record an
autopatrol action.

When one associates a rev id to a type of action, one should also implement
a mechanism to patrol said action, since getting the diff for the associated
revision is not user friendly and works only if RC patrol is enabled.
This is done for uploads in If71af58719a4461f12d125455b7bef07164525ca (with
a new file patrol) and for moves in Ie0fa417feaf930c096b69521fc54d57aecd6cd51
(within RC patrol).

Extensions might possess other such actions that could benefit from patrolling.

Bug: T122089
Change-Id: I694424eca32b69e277f89d4c15183870983d0993
2015-12-21 22:14:00 +00:00
Albert221
ed69044f80 Localization: Gave each special page its own message
Bug: T45502
Change-Id: I847c8b294d7e4596b229ad6180764c43c42af1e2
2015-12-13 16:16:25 +01:00
jenkins-bot
aa5e579028 Merge "Move details of import logs into log params" 2015-11-24 08:52:12 +00:00
Bartosz Dziewoński
60e8b55856 Reduce usage of inline <span style="white-space: nowrap">
Inspired by T119055.

Change-Id: I6829a67fb77c00e87772983f35b884bf03fad7e3
2015-11-19 21:38:23 +01:00
umherirrender
dc78d4d12c Move details of import logs into log params
The detail information about the count of revision and the interwiki
title get moved into log params. To show the new information an
ImportLogFormatter was written, which changes the key for new log items.

This allows to show the detail information in the user language.
It also decouple the user supplied data from detail information

Change-Id: Iaa57da0fc3e20c33c94fd850cd02db96fdb32dac
2015-11-11 18:34:18 +01:00
umherirrender
5cf7db33fa Skip user namespace prefix for rights log entry
The target of the right log entry is shown with namespace prefix, but it
is always a user, so skip the namespace prefix.

Change-Id: Ibe6005cc70ff3933836166d97c544267fb7d9951
2015-10-10 07:38:10 +02:00
Aaron Schulz
0f7893f877 Update various @params from DatabaseBase to IDatabase
Change-Id: I98e44cdffb0fc0d729f69f702799139afb988c20
2015-10-05 05:24:29 +00:00
Siebrand Mazeland
21b0801a2c Fix PHP CS warning in LogPager.php
Change-Id: I31f074ad77309bf02163810eb6689dc0bb56460e
2015-09-28 13:44:39 +02:00
Vivek Ghaisas
c54766586a Fix issues identified by SpaceBeforeSingleLineComment sniff
Change-Id: I048ccb1fa260e4b7152ca5f09b053defdd72d8f9
2015-09-26 23:06:52 +00:00
umherirrender
d6961552b3 Migrate protect log to new log system
This localize the protect type, level and expiry on Special:Log/protect.
To allow i18n there are some details stored in the log params of new log
items, these details also shown on API output.
The details cannot get from the old existing data, because there are
containing L10n strings therefore i18n works only for new items.
In the api and for IRC the old description text is still stored in the
log params for backward compatibility.

This allows use of gender on Special:Log. Old messages are kept for use
in IRC. Tests already exists to ensure an unchanged IRC message.

Bug: T47988
Change-Id: I3bb85c61b857972e66c99c499d7d785c88cafb25
2015-09-25 17:07:50 +02:00
umherirrender
3964b4cc05 Migrate move protect log to new log system
Migrate the move protect log as first sub type of the protection log,
because it does not have complex log parameter, which needs some way of
handling/migration.
It also keeps the gerrit change smaller and hopefully makes review
easier.
The other sub types of the protection log will be migrated in a later
patch set.

This allows use of gender on Special:Log. Old message is kept for use
in IRC. A test was added to ensure an unchanged IRC message.

Bug: T47988
Change-Id: I57b3bd8a7dc823acdbb56520d2364f5542283373
2015-08-18 22:20:35 +00:00
Kunal Mehta
fa31bf1675 Add Special:ChangeContentModel
Special:ChangeContentModel allows for users with the 'editcontentmodel'
right to change the content model of a page.

Visiting Special:ChangeContentModel will contain an input field for a
page title. The user will then be sent to
Special:ChangeContentModel?pagetitle=<input> where the page title is
read only, with a content model selector and optional reason field.

The special page only allows converting between content models that
extend TextContent for simplicity. Advanced conversions should be done
via the API.

All content model changes via the special page or API generate a null
revision in the page history and a log entry at
Special:Log/contentmodel. The log entry has a revert link for
convenience (like the move log).

Bug: T72592
Co-Authored-By: Lewis Cawte <lewis@lewiscawte.me>
Change-Id: I296a67c09fcbc880c8c3a648eb5086580725ea46
2015-06-30 13:14:50 -07:00
cenarium
f827d5a261 Avoid muliple cache calls to explicitly defined tags
This avoids muliple cache calls to explicitly defined tags by
calling the showTagEditUI of ChangeTags only once in logs and
histories.

Change-Id: I2e36dbd96d3fcca06de0bf418bc6dc294d8d18d3
2015-06-14 20:02:30 +02:00
Kunal Mehta
f6e5079a69 Use mediawiki/at-ease library for suppressing warnings
wfSuppressWarnings() and wfRestoreWarnings() were split out into a
separate library. All usages in core were replaced with the new
functions, and the wf* global functions are marked as deprecated.

Additionally, some uses of @ were replaced due to composer's autoloader
being loaded even earlier.

Ie1234f8c12693408de9b94bf6f84480a90bd4f8e adds the library to
mediawiki/vendor.

Bug: T100923
Change-Id: I5c35079a0a656180852be0ae6b1262d40f6534c4
2015-06-11 18:49:29 +00:00
Glaisher
519f901c2f Allow users with 'viewsuppressed' to view when limitTitle()d
This was probably missed when 'suppressrevision' was split into
'suppressrevision' and 'viewsuppressed'.

It was properly separated in limitPerformer() but not in limitTitle().

Bug: T101982
Change-Id: I9c62599124cbb74d2004b416f6e490c231dbd7b2
2015-06-11 17:59:33 +05:00
umherirrender
f087bcb620 Use assertSame in LogFormatterTestCase
Using assertSame also checks for internal types to be correct.

Needs the following fixes:
- MergeLogFormatterTest: Use correct array key order
- NewUsersLogFormatterTest: Input user id as integer
- PatrolLogFormatter: Ensure in LogFormatter that
  integer is not casted to float

Change-Id: I2cab5335d6654f6cda15fc4e9fbae2c1ca1b27ff
2015-06-06 20:55:03 +02:00
Brad Jorsch
1dc97335ae PatrolLogFormatter: Tag curid and previd as numbers for API
In the database the values might be strings, depending on the source of
the RecentChanges object when the log entry was created. In
getParametersForApi(), tag the vars as 'number' so they'll always be
output as actual integers.

Bug: T101603
Change-Id: I6d3e8fd2653ce810eec59b94bf75063e5fb6bcab
2015-06-06 18:28:06 +00:00
Kevin Israel
272843a55d Move some global statements to top of function
These were flagged by mediawiki/tools/code-utils/check-vars.php
because they were located inside a switch statement, or inside an
if statement and used outside the statement. All other warnings
from that script are bogus, mostly because the script has no
support for PHP 5.3 namespaces.

Change-Id: If93bae4434b5c28845125095f6a22d6788a76efc
2015-05-06 20:19:32 +00:00
Brad Jorsch
a2415baa1a ChangeTags: Don't show UI when no editable tags exist
Bug: T97773
Change-Id: I001f15ca6f58bc9318eed84aa8ace2bddcb1b315
2015-05-01 11:12:31 -04:00
Brad Jorsch
4812913936 ChangeTags: Show checkbox on Special:Log when user lacks RevDel rights
The actual production of checkboxes in LogEventsList didn't get updated
to show checkboxes when the user can edit change tags but cannot use
RevDel on log entries.

This also renames LogEventsList::USE_REVDEL_CHECKBOXES to
LogEventsList::USE_CHECKBOXES to be accurate with the change here; no
extensions in Gerrit use this constant, so we should be safe.

Bug: T97501
Change-Id: I72ca7371fe73b650d5ef32d18da19788084f9aeb
2015-04-29 13:36:48 -04:00
umherirrender
fbc870b249 Fix very old log params of log type rights for new api logparam style
After I9109a27f416b002e5c562a1454d8c373dcf98fb4 list=logevents also
called the log formatter for empty params, which than result in a
undefined index warning, because log entry without log params can exists
for the rights log type.

Follow-Up: I4762743b3f43e6ebd806d3ae516507ae66478e96
Change-Id: I169a00f0e39fe88d23111b62f18a9f5cf60866dc
2015-04-18 11:25:54 +02:00
jenkins-bot
4e8eb78d94 Merge "Always set duration/flags of type block for new api logparam style" 2015-04-17 18:45:06 +00:00
jenkins-bot
84c27fb022 Merge "Fix old log params of log type rights for new api logparam style" 2015-04-17 18:33:15 +00:00
umherirrender
8756987e27 Fix old log params of log type rights for new api logparam style
The log param of right changes can also just be a string. The new api
logparam style does not recognize this and shows an error:
Argument 1 passed to ApiResult::setIndexedTagName() must be an instance of array, string given

Centralize the code in a new helper function and use it also for the gui
part.

Follow-Up: I6846ce09322eb404c506b5a51780a44ce9279fe2
Change-Id: I4762743b3f43e6ebd806d3ae516507ae66478e96
2015-04-17 18:03:52 +00:00
umherirrender
9a504d18fb Always set duration/flags of type block for new api logparam style
Old and very old log params may omit a duration or flags. Always adds
these parameters to the output.
Also simplify the infinity check (see also
I5eb68c1fb6029da8289276ecf7c81330575029ef) and check the return of
strtotime.

Bug: T92902
Follow-Up: I6846ce09322eb404c506b5a51780a44ce9279fe2
Change-Id: I9109a27f416b002e5c562a1454d8c373dcf98fb4
2015-04-17 19:57:18 +02:00
umherirrender
589258a733 Always set suppressredirect of type move for new api logparam style
Old log params for moves may omit the suppressredirect indicator, just
add it as false when missing.

This has no visible change for the old json or xml format, but it will
be useful, when using the new json format, which also output bool=false

Follow-Up: I6846ce09322eb404c506b5a51780a44ce9279fe2
Change-Id: I74981bf064a0b94707b5cc7ff7e5bb8fcdfe2123
2015-04-17 18:32:48 +02:00
Brad Jorsch
61233fc847 API: Move parameter formatting into LogFormatter
This allows for extensions to format their log entry parameters, and
keeps the code for formatting API log entry parameters in the same place
as for other formatting.

This also takes the opportunity to rearrange the output format slightly
to avoid conflicts like what's happening in T73020.

Bug: T35235
Bug: T73020
Bug: T91466
Change-Id: I6846ce09322eb404c506b5a51780a44ce9279fe2
2015-04-17 04:59:41 +00:00
This, that and the other
ae3ab9eef0 Allow users to add, remove and apply change tags using the API
You can add tags at the same time as performing action=edit, as long as you
have the "applychangetags" right. Also, you can add or remove tags after
the fact from revisions and log entries using the API action=tags.

No UI is provided for either of these changes. The target audience is user
scripts, gadgets and similar tools.

Includes a new log parameter format type: "list", for a comma-separated
list of values.

Logging of change tag events is limited to those that do not accompany an
edit (i.e. those done after the fact), and is hidden from Special:Log by
default, similar to the patrol log.

Bug: T20670
Change-Id: I37275e0f73fa3127f55da0c320b892551b61ee80
2015-04-15 18:30:45 +00:00
Alex Monk
a577708080 Fix link to Special:RevisionDelete in newer log revdel logs
Bug: T96049
Change-Id: I6817ac13e776a3e6fa766c3996173b5da02f54de
Follows-up: Ic149960f797d05fd088fa014390d791e3ae08687
2015-04-14 20:51:07 +01:00
umherirrender
fd9feb907b Added LogEntryBase::extractParams/makeParamBlob
Centralize the serialize and unserialize call in the new logging system
into two functions to allow reuse by tests.

Change-Id: Ibedca39558cbd566661b20e7ebb9d2b6537e4f24
2015-04-07 23:23:45 +02:00
Aaron Schulz
4bdbfe6c1b Removed BloomFilter classes
* This ends up being more complex than its worth
  and even more so for multi-DC support

Bug: T93006
Change-Id: Iaa774fe69061e42955b11dc82d30dba93208e606
2015-04-03 09:10:04 +00:00
Timo Tijhof
15e8dc1ecf LogFormatter: Indent code to fix Doxygen parse error
This file was not being indexed due to a parse error.

> /includes/logging/LogFormatter.php:844:
>   warning: Reached end of file while still inside a (nested) comment.
>   Nesting level 2 (probable line reference: 48, 26)

Change-Id: Ie34ae644d06e705991b934d4389e8c41bb7f77a7
2015-04-02 19:51:56 +00:00
umherirrender
4f60a37d4e Migrate import log to new log system
There is no need for an extra formatter class, because at the moment
there is nothing extra to format.

This allows use of gender on Special:Log. Old messages are kept for use
in IRC. A test was added to ensure an unchanged IRC message.

The new log message for import-interwiki is used from
I3ca8b21bce49b41cac7109efb8056ca4469b88d7 to avoid "transwiki jargon".

Bug: T57404
Change-Id: I590075b203548c071a98c1eaa4b1bc9250f60e22
2015-03-18 13:21:52 +00:00
jenkins-bot
737a9d3f20 Merge "Fix log message for blocks without duration" 2015-03-16 21:21:42 +00:00
umherirrender
52bf90f41c Fix log message for blocks without duration
Very old blocks form 2004 have not any log_params and therefor enforce a
duration of infinite to be shown on Special:Log.

Follow-Up: Ibc7fcaa5a952ff90d42a6477da4baa429f3de64b
Change-Id: I4bdfab1ff865501a780ed0c7c50e2b1bab467a4b
2015-03-16 20:51:05 +01:00