- 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
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
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
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
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
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
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
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
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
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
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
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
This avoids muliple cache calls to explicitly defined tags by
calling the showTagEditUI of ChangeTags only once in logs and
histories.
Change-Id: I2e36dbd96d3fcca06de0bf418bc6dc294d8d18d3
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
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
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
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
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
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
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
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
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
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
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
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
Centralize the serialize and unserialize call in the new logging system
into two functions to allow reuse by tests.
Change-Id: Ibedca39558cbd566661b20e7ebb9d2b6537e4f24
* This ends up being more complex than its worth
and even more so for multi-DC support
Bug: T93006
Change-Id: Iaa774fe69061e42955b11dc82d30dba93208e606
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
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
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