Commit graph

466 commits

Author SHA1 Message Date
Max Semenik
bdf7e3f5bd Set constant visibility, part 1
Change-Id: I3dad26b1a0bd469fa84fee5c15d9b581765ceb94
2019-10-18 02:19:24 +00:00
Daimona Eaytoy
bd5b6f98ba Fix new phan errors, part 3
These are almost only doc changes, with two exceptions:
1-In LinkHolderArray, int-alike array keys are now cast to int, to be uniform with what we do in other code paths
2-In ExtensionRegistration, changed a line to throw an Exception
immediately, instead of an ExtensionDependencyError. This is because the
latter takes an array with msg and type, but we were passing it a plain
string (and in fact the code was bugged).

Bug: T231636
Change-Id: I8b0ef50d279c2a87490dde6a467a4e22c0710afd
2019-10-12 10:35:22 +00:00
jenkins-bot
05ce3b7740 Merge "Title: make newFromText, isValid, and canExist behave consistently." 2019-10-08 13:54:57 +00:00
daniel
9171cbe4ca Title: make newFromText, isValid, and canExist behave consistently.
This patch fixes the documentation of newFromText and makeTitleSafe to
no longer state incorrectly that any Title they return is guaranteed to
be valid. That has never been true.

It also makes canExist() checks a lot stricter, to match the assumptions
of current callers, namely that the title can exist as a wiki page.

Finally, it replaces several existing calls to isValid() with calls to
canExist().

Bug: T229705
Change-Id: I2a483136ec6acca49afb5eb32cb94616672b8fb2
2019-10-08 11:16:11 +02:00
Umherirrender
8752df6592 Use varargs for MessageLocalizer::msg and similar
Bug: T191666
Change-Id: I59f2ae1a96af392026fc106e57d23553003c16b8
2019-10-05 17:47:49 +00:00
jenkins-bot
ffa4bdd616 Merge "Add .warningbox to .mw-warning-with-logexcerpt container to standardize" 2019-10-03 19:00:19 +00:00
Volker E
6fd6651c17 Add .warningbox to .mw-warning-with-logexcerpt container to standardize
Standardizing system warning message by using general `.warningbox` class.

Bug: T234509
Change-Id: If814916af9b9a095cb038d64d859339e0f290c72
2019-10-03 11:19:45 -07:00
Ammar
1d59041fc8 Fix permission check on protection log
*I2341e6f inverted the permission check, such that now the link is only shown to unprivileged users

Bug: T234017
Change-Id: I0977f1ab1a72840303aeca2367a30546d83117d4
2019-09-27 09:58:41 -07:00
Brad Jorsch
c0ea9c285d LogPager: Add IGNORE INDEX to avoid MariaDB optimizer bug
This is basically the same thing we fixed for ApiQueryLogEvents in
I16dba2158.

Bug: T223151
Change-Id: I53a7ed59de3eed2b0b4f1b1fb7f6d302b1de276c
2019-09-24 13:58:22 +00:00
jenkins-bot
02210976ab Merge "LogPager: separate getter from query filter" 2019-09-19 19:07:34 +00:00
Matěj Suchánek
15cc583cb6 LogPager: separate getter from query filter
The method LogPager::getFilterParams combines data aggregation and query
modification which is problematic: it starts with "get" and is public
but has a side-effect. Instead, make a dedicated private method for
building the query and remove the side-effect.

The new private method is now dedicated to building the query, and so
it can also make sure whether selection by log id is requested. If it's
the case, it won't filter the log types out (fix for T220834).

Also remove redundant comment: it's irrelevant to require callers to
call a private method.

Bug: T220834
Change-Id: I0fb6e6ee30ac626192cdf4ef920a731c03b2732f
2019-09-19 18:32:09 +00:00
Umherirrender
f74400487f phan: Disable enable_class_alias_support
It is enabled for b/c in extensions, but not needed in core

Change-Id: I51dca12be9c77049f77563d9bf0edd07928c2300
2019-09-15 08:26:52 +00:00
jenkins-bot
2b29ca0fbb Merge "deleteLogFormatter: explicitly declare parsedParametersDeleteLog" 2019-09-13 21:56:35 +00:00
jenkins-bot
d2f799f103 Merge "Declare dynamic properties" 2019-09-13 21:49:14 +00:00
Daimona Eaytoy
52a3335087 deleteLogFormatter: explicitly declare parsedParametersDeleteLog
Instead of having a dynamic property checked via isset().

Change-Id: I64e3a3135b898b65e789aa8307ab9e3ffa0e9f4a
2019-09-13 17:55:34 +00:00
Daimona Eaytoy
9699158f74 Declare dynamic properties
This is for all classes with 2 or more undeclared properties.

Change-Id: I1d80deb31f331bcc277b33f9e9f74857ba825637
2019-09-13 17:54:37 +00:00
Petr Pchelko
7b4eafda0d Replace usages of deprecated User::isAllowed. Step 2.
Bug: T220191
Depends-On: I509cd88355cfd0cc074f4135ec86399b4075f89f
Change-Id: I2341e6f1d108c92924620fba3c64ec090cb09918
2019-09-11 16:00:03 -07:00
Brad Jorsch
c29909e59f Mostly drop old pre-actor user schemas
This removes most of the pre-actor user and user_text columns, and the
$wgActorTableSchemaMigrationStage setting that used to determine
whether the columns were used.

rev_user and rev_user_text remain in the code, as on Wikimedia wikis the
revision table is too large to alter at this time. A future change will
combine that with the removal of rev_comment, rev_content_model, and
rev_content_format (and the addition of rev_comment_id and rev_actor).

ActorMigration's constructor continues to take a $stage parameter, and
continues to have the logic for handling it, for the benefit of
extensions that might need their own migration process. Code using
ActorMigration for accessing the core fields should be updated to use
the new actor fields directly. That will be done for in a followup.

Bug: T188327
Change-Id: Id35544b879af1cd708f3efd303fce8d9a1b9eb02
2019-09-09 11:38:36 -04:00
Daimona Eaytoy
23daef5c18 Remove dead properties
*LogPage::timestamp was introduced with r4919 back in 2004, and is unused
since then.
*ApiMain::mCommit was introduced in r33133, then removed in r33381 but that
line was forgotten.
*SpecialRecentChangesLinked::mResultEmpty was introduced in r36682, then 
removed at some point with this leftover.
*SpecialStatistics::hook, introduced in r54511 and unused since then.
*MergeMessageFileList::hasError introduced in Id4b16083435ef7f4fce31861c72889e664d07236
and removed in I3d9cf1d614dacaa91fb2092019ccf1d14d61ccab with a leftover

Change-Id: Ie15c148a3217ee8da62874840f3ef7739893f69e
2019-09-07 16:34:55 +00:00
jenkins-bot
75f1fe04a8 Merge "Avoid usage of deprecated setTags() method, use addTags() instead" 2019-09-01 15:25:02 +00:00
Derick Alangi
89cd937798 Avoid usage of deprecated setTags() method, use addTags() instead
$tags can be `null` as seen in most cases and this causes failures,
so, the safer path is to make sure if $tags is a null, do nothing.

Change-Id: I5b7e39adba5d08fdcd42c437a72a391be98c8695
2019-09-01 14:54:03 +00:00
Daimona Eaytoy
327e8ea416 Unsuppress phan issues part 6
Bug: T231636
Depends-On: I50377746f01749b058c39fd8229f9d566224cc43
Change-Id: I2cd24e73726394e3200a570c45d5e86b6849bfa9
2019-09-01 09:48:45 +00:00
Umherirrender
54190757bb Unpack arrays on variadic arguments
This avoids extra handling in the function to unpack an array

Change-Id: I93277599bc8125e23fca53d43a728fb7e9e39aad
2019-08-31 23:23:50 +00:00
Daimona Eaytoy
5eac6d131c Unsuppress more phan issues (part 3)
Bug: T231636
Depends-On: I78354bf5f0c831108c8f606e50c87cf6bc00d8bd
Change-Id: I58e67c2b38389df874438deada4239510d21654f
2019-08-31 16:38:55 +00:00
Derick Alangi
e5f1f622b9 logging: Deprecate LogEventsList::$mDefaultQuery member
This is a follow up on follow-up-I91003a9a3f2a56114de5b

Change-Id: If670ed959bcbc3149b0979541c641ada63377b7f
2019-08-29 22:18:50 +01:00
Derick Alangi
fb6e0ec767 mime,logging: Remove unused private methods
These methods are defined but not used.

Change-Id: I91003a9a3f2a56114de5baede6a1034ee4ed8d80
2019-08-29 17:46:44 +00:00
Petr Pchelko
fd130247c2 Deprecate and replace usages of User:isAllowed{All,Any}
Bug: T220191
Change-Id: I197b8fadaa93e7b320fc19c10e3e09387fe09ad2
2019-08-21 18:36:16 -07:00
Derick Alangi
c7e1f3c0ed logging: Fix typo for getPerformer() interface method declaration
Not sure but the previous wording didn't make much sense or is it
correct that way?

Change-Id: Ia5bea91fb426bb2fe742e656e5a826b8c07d88ee
2019-08-19 17:22:24 +01:00
Umherirrender
2664eeb632 Clean up spacing of doc comments
Align the doc stars and normalize start and end tokens

Change-Id: Ib0d92e128e7b882bb5b838bd00c74fc16ef14303
2019-08-05 22:29:50 +00:00
rxy
0b91327754 Add permission check for user is permitted to view the log type
Note: formatter patch only

Note: cherry-picked I064f563cb here as well

Bug: T222038
Change-Id: I1c4e57a513e3a0e616b862a5b9d684f463ad9981
2019-07-25 20:32:37 +00:00
Derick Alangi
339211a1ea Avoid usage of deprecated Revision::* constants, use RevisionRecord
Change-Id: I872fc89e5c02dd6a3ae9cd7e76640b95dc33f514
2019-07-21 15:03:03 +01:00
daniel
20717fd031 LogFormatter::formatParameterValue: handle bad user names
This makes LogFormatter more robust against bad user names coming from
broken log records.

Bug: T224368
Change-Id: Ifce9e86bddba274182253cd25338766e8093d6ad
2019-07-03 18:49:58 +02:00
jenkins-bot
67d01c452d Merge "Tolerate invalid titles in some ChangesFeed and LogFormatter code" 2019-06-24 23:29:11 +00:00
daniel
7271ac0dcd Tolerate invalid titles in some ChangesFeed and LogFormatter code
Bug: T224811
Change-Id: If134e20cc14d80f9186611606df0b860889bd2cf
2019-06-24 23:15:06 +00:00
Brad Jorsch
144ebd06c7 DeleteLogFormatter: Handle missing ofield/nfield
ofield and nfield may be missing from old log entries. Take that into
account when processing.

Bug: T224815
Change-Id: I06dda3106bab9980f6fa7d515542e94a91c17f64
2019-06-12 23:33:45 +00:00
Umherirrender
5f43b1706c Pass options as array to IDatabase::insert
The documentation only allows arrays there

Change-Id: I00c6e47a817a70bed9a443aebc675ef4c3d6b1e5
2019-06-07 19:12:35 +02:00
rxy
5de4402b59 SECURITY: Add permission check for user is permitted to view the log type
Bug: T222038
Change-Id: I92ec2adfd9c514b3be1c07b7d22b9f9722d24a82
2019-06-06 19:06:24 +00:00
Brad Jorsch
77ca1430e4
SECURITY: LogPager: Don't STRAIGHT_JOIN when using log_search
We'll hope MariaDB doesn't trigger T221458 in that situation.

Bug: T222324
Signed-off-by: Scott Bassett <sbassett@deploy1001.eqiad.wmnet>
Signed-off-by: James D. Forrester <jforrester@wikimedia.org>
Change-Id: I06364e9d0bce45bd97b2ec837d1f479feff76699
2019-05-02 10:54:42 -07:00
Brad Jorsch
3d1fb0c044 Add STRAIGHT_JOIN to ApiQueryLogEvents and LogPager to avoid planner oddness
For some unknown reason, when the `actor` table has few enough rows (or
few enough compared to `logging`) MariaDB 10.1.37 decides it makes more
sense to fetch everything from `actor` + `logging` and filesort rather than
fetching the limited number of rows from `logging`.

We can work around it by telling it to not reorder the query.

Bug: T220999
Bug: T221458
Change-Id: I9da981c09f18ba72efeeb8279aad99eb21af699a
2019-04-23 10:00:21 -04:00
Reedy
f032d27d0c Split logging classes to individual files
Change-Id: I3eaaf23612fe1aed65e49c06a9e5e565399af9ce
2019-04-14 02:13:47 +00:00
jenkins-bot
36d9784b15 Merge "logging: Replace deprecated use of CommentStore::getStore()" 2019-04-12 23:49:05 +00:00
Derick Alangi
1fdeaebbb7 logging: Replace deprecated use of CommentStore::getStore()
Change-Id: I5c34eda43d0d312bc53fc5e9ad618cb80284e34b
2019-04-12 23:27:34 +00:00
Kunal Mehta
5f8d76336d Fix misc phan errors by adjusting documentation (#8)
PhanTypeInvalidRightOperand was triggering on
ApiQueryBase::showHiddenUsersAddBlockInfo() on the line
`$actorQuery['tables'] + $commentQuery['tables']` (and the next one).
For whatever reason, phan was unable to automatically understand that
the right side was an array (though it was able to understand
$actorQuery, which has nearly identical code...), so I added more
specific hinting to CommentStore::getJoin() using phan's union types,
which resolved the issue.

And incorrect documentation on LogEntry::getDeleted() was triggering
PhanTypeMismatchBitwiseBinaryOperands since you can't do bitwise
operations on a string and an integer.

Change-Id: I13b791e4b754ffbc340b55cfb752e2d9226f1949
2019-04-05 23:31:16 -07:00
Stephane Bisson
99e3a646ba LogFormatter: ignore unrecoverable data
It is possible for the log_params column of the logging
table to contain serialized data that cannot be deserialized
anymore because the types it references are missing.

It is currently the case with old Flow log entries on enwiki.
The extension is uninstalled and the UUID class is not found.

This patch proposes to simply skip the params and log a
warning in that case.

Bug: T212742
Change-Id: I3226b8fb338dd2b81e087af5d798d8f35368282d
2019-04-03 08:50:15 -04:00
jenkins-bot
1a99d2c3bc Merge "RecentChanges updated to use pseudo elements for presentation" 2019-04-02 23:12:57 +00:00
jdlrobson
5040b3f680 RecentChanges updated to use pseudo elements for presentation
Bug: T219348
Change-Id: I6eeeaa3b58d37adb7fefb4cc6915022229b3b324
2019-04-02 14:52:50 -07:00
Matěj Suchánek
7cbdc97871 Style change tags correctly on log extracts
You can see them when you view a previously deleted page
and some of those events have been tagged.

Bug: T212613
Change-Id: I88e637a0ee688dd23c0ec90790e8189ecf1a8789
2019-04-02 22:06:34 +02:00
Piotr Miazga
2f30defc74 Supress ChangeTags::addTags() exceptions for ManualLogEntry objects
Looks like some parts of the code try to publish log event when
$newId is 0 or null. This cause ChangeTags::addTags to throw
an exception as at least one of rc_id, rev_id, or log_id must be
specified.

When ChangeTags::addTags() fails (because both $rev_id and $log_id
are not present), just ignore the exception and continue with
the execution.

Also, if one of those is set to 0, we need to pass null instead
(do not insert 0's in to DB as both log_id and rev_id are foreign
keys).

Additionally log all places where ManualLogEntry::publish() is
called with incorrect arguments so later we can fix all occurencie
and remove that try{}catch around ChangeTags::addTags() call.

Bug: T218940
Change-Id: I495f79f2b7a7ef1503d229a689babdc12deb353c
2019-03-26 18:00:12 +01:00
Piotr Miazga
384ab964cd Define ManualLogEntryBeforePublish hook
This hook is required by extensions like MobileFrontend to tag
log entries when actions are performed on the mobile web.

There is a possibility to tag log entries by using
'RecentChange_save' hook, but that works only when the log entry
is published to 'rc' or 'rcandudp'. This means, that tagged log
will appear also on the Special:RecentChanges page which is something
what extensions like 'Thanks' wants to avoid.

In the future we should avoid using 'RecentChange_save' as an
indirect way to tag log entries, and use the
'ManualLogEntryBeforePublish' hook instead.

To cover ourselves in the future, instead of passing &$tags only,
we pass the $this (the log entry object) so extensions can perform
additional checks before using setTags().

Bug: T215675
Change-Id: I747eded4bc5406cd5d4676fc93b0bb55c99f9a4d
2019-03-19 00:49:53 +01:00
Piotr Miazga
fd24be4fc5 Provide a Taggable interface
The Taggable interface defines how to tag objects in MediaWiki.
For now there are only two Taggable objects:
 - RecentChange
 - ManualLogEntries

This interface should be used in places where we want to optionally
tag things, for example:
 We want to tag all mobile web actions with 'web mobile edit'.

With that interface, we will be able to expect a Taggable object,
and call `addTags()` when we need to, without having a special check
to verify is it RecentChange, or is it ManualLogEntry. We will only
expect a Taggable object.

Additionally, added @deprecated note to ManualLogEntries::setTags()
as each call to this method will override all previous tags. This
action can be harmfull to parts of code that conditionally add tags.
If object was tagged in some way, we should preserve those tags.

If there are any special cases, where we want to override all tags,
we should provide `resetTags()` method.

Bug: T215675
Change-Id: Ia4c019db8ca6f37ce0f86bf7d134d6f1713daf56
2019-03-18 23:10:06 +01:00