Commit graph

205 commits

Author SHA1 Message Date
James D. Forrester
2ae7d6b580 Add protection for User: JSON pages in the same manner as JS & CSS ones
Also recognise MediaWiki: JSON pages (with the existing protection of
the editinterface right).

Bug: T76554
Change-Id: Idba166d82ee6dd507d7345c9bdbefc8ca78ed7b4
2018-03-29 14:33:46 +00:00
Aaron Schulz
4f31afd21b Move most User::clearAllNotifications() logic to WatchedItemStore
Change-Id: Ib1b0c40e408f6fad6fc8257c5073fa1c3c264c3a
2018-03-23 10:26:13 +00:00
jenkins-bot
17e8f7d62e Merge "Add missing return types to User::getOption()" 2018-03-23 01:41:28 +00:00
Sam Wilson
12b3176d4f Add missing return types to User::getOption()
String zeros are converted to ints, and email-blacklist returns
an array of integers.

Change-Id: I2ac2a4e8effd4816e9c1e835b86241c7fe850605
2018-03-23 09:14:41 +08:00
Brad Jorsch
f34423130f User: Fully clear instance variables when loading not-blocked status
If a block is deleted and ->clearInstanceCache() is called to try to
make an existing User object reflect that fact, some methods are still
reflecting the old block.

To fix this, User::getBlockedStatus() needs to clear all the relevant
instance variables if the user is found not to be blocked.

Change-Id: I6ad8d5555a4c8519336aded3067e5034831dadf3
2018-03-22 15:01:28 -04:00
Alexia E. Smith
33e0a539b8 Fix User::idFromName() ignoring cache for non-existent users.
This fixes a database time out issue where User::idFromName()
is repeatedly called from Special:Import due to the user not existing.
The response is cached as null, but isset() will return false on a null key.

Bug: T189786
Change-Id: I78705089a25dfec84d3c75bedaf623b1e5ee82c4
2018-03-16 12:10:40 +00:00
James D. Forrester
5ab3ae0371 User: Remove ::setCookie/etc., deprecated in 1.27
Change-Id: I6b37ffd957cdeba79037dadd36f50e0a0b89e5f5
2018-03-02 10:53:15 +00:00
Brad Jorsch
73781d3816 Add a missing check of $wgActorTableSchemaMigrationStage
We shouldn't be trying to update the table when it's MIGRATION_OLD.

Bug: T188437
Change-Id: Id5aae5eaafc36bf7e65009e67fe91619fb1df295
2018-02-27 16:08:02 -05:00
Aaron Schulz
0bf48b7233 Remove redundant item loading code in User::createNew
These lines were removed in 27c61fb1 but left in when I rebased
61b0c193 due to the conflict. The load() call handles all these
fields, so there is no need to set mName and the load state flag.

Change-Id: Id751241abf8d5592309744e96493122c6bc65f2b
2018-02-23 16:25:01 -08:00
Brad Jorsch
e93841a621 Force READ_LATEST for User::newFromId() if writes had been done
The User::newFromName() case already does this, there seems to be no
reason not to do it for User::newFromId() too.

Bug: T188014
Change-Id: Ic7fdef0cc1f5750cb5e6b2a7f48f1549862b41cb
2018-02-24 00:00:17 +00:00
Brad Jorsch
61b0c19306 Have User::createNew() load the object from master
When the new User is created, it's leaving it to be lazy-loaded from a
replica. That seems to be causing attempts to add groups immediately
after creation to fail because the load-from-replica doesn't find the
just-created master row.

Bug: T188014
Change-Id: I841c434086bfaaca1cf1ce23673f32dc5a77915d
2018-02-23 15:44:19 -08:00
Brad Jorsch
27c61fb1e9 Add actor table and code to start using it
Storing the user name or IP in every row in large tables like revision
and logging takes up space and makes operations on these tables slower.
This patch begins the process of moving those into one "actor" table
which other tables can reference with a single integer field.

A subsequent patch will remove the old columns.

Bug: T167246
Depends-On: I9293fd6e0f958d87e52965de925046f1bb8f8a50
Change-Id: I8d825eb02c69cc66d90bd41325133fd3f99f0226
2018-02-23 10:06:20 -08:00
Aaron Schulz
36dfd18409 Avoid pointless DB_MASTER connections in User::clearSharedCache()
Change-Id: Ifc4f489cea4460185cb2d8317f174cabd67f5862
2018-02-09 11:28:59 -08:00
Umherirrender
3124a990a2 Use ::class to resolve class names in includes files
This helps to find renamed or misspelled classes earlier.
Phan will check the class names

Change-Id: I07a925c2a9404b0865e8a8703864ded9d14aa769
2018-01-27 20:34:29 +01:00
Reedy
86d7bd86fa Update IPSet use statements
Bug: T182273
Change-Id: I73fb52678dc56a542eccd209441557610b562d4b
2018-01-21 04:37:26 +00:00
WMDE-Fisch
a7872722b7 Replace deprecated wfGetLB() calls here and there
Change-Id: Ic7cec2dcc6b8e0d500a4c37eb134976b314c33ca
2018-01-20 19:24:24 +00:00
Max Semenik
dc89972d9c Remove User::$mGroups
Deprecated and unused. Private so nothing can possibly use it.

Change-Id: I70a20d35222cb0571e8b401c8b4e031d0be25d6b
2018-01-19 16:33:59 -08:00
jenkins-bot
a79d012e1c Merge "Revert "Prevent new users from being sent emails"" 2018-01-16 19:44:11 +00:00
jenkins-bot
a18476eab3 Merge "Remove @param comments that literally repeat what the code says" 2018-01-11 23:48:03 +00:00
Dmaza
4182a9001e Revert "Prevent new users from being sent emails"
This reverts commit b52421dedd.

Bug: T184470
Change-Id: I2f5fe8993c6e186cd2df0841292653f8fecc0254
2018-01-10 17:59:48 -05:00
Thiemo Mättig
ef470ebf7f Remove @param comments that literally repeat what the code says
These comments do not add anything. I argue they are worse than having
no comments, because I have to read them first to understand they
actually don't explain anything. Removing them makes room for actual
improvements in the future (if needed).

Change-Id: Iee70aad681b3385e9af282d5581c10addbb91ac4
2018-01-10 14:14:26 +01:00
Sam Wilson
2e248f0bb2 Convert Preferences class into PreferencesFactory service
This deprecates the Preferences class and replaces it with
a PreferencesFactory service. Basically, all code from Preferences
is moved into DefaultPreferencesFactory. All Prefereces methods
are now either shims calling DefaultPreferencesFactory or just
throw exceptions.

Bug: T178449
Change-Id: Id0b2db0c2de0890f6e1609a9a0dca207c4600f99
2018-01-03 09:48:25 +08:00
Thiemo Mättig
2e94e4d790 Document "arrays of UserGroupMembership objects" as such
Change-Id: I3c60fb977a329e39933d50e275a738296bc17599
2017-12-27 12:53:17 +00:00
jenkins-bot
bc6ed2ba24 Merge "Prevent new users from being sent emails" 2017-12-08 23:34:49 +00:00
David Barratt
b52421dedd Prevent new users from being sent emails
This change prevents users who have no logged actions from
recieving emails from people.

Bug: T178842
Change-Id: Iedd5f082368a395766cb29ded6dad17a288bf511
2017-12-04 10:00:52 -05:00
daniel
38edb8ab30 Introduce the UserIdentity interface.
This provides a narrow view on a user identity, providing access to
ID and name.

This has been extracted from I140f43a6fb443b for re-use with Actors,
on Anomie's request.

Change-Id: Ief00db5ce382537c5bf992159eae6baf096ae4be
2017-11-18 19:47:25 +00:00
Brad Jorsch
c2f432625f Add deprecation notices for selectFields() methods deprecated in Idcfd1556
Now that WMF-deployed extensions have been updated to no longer call
them.

Change-Id: I04942ca1b95baa2126f2dcf4d0975536f4dd07c7
Depends-On: I300130c7b952a353ac28989d39d7f01366da2a37
Depends-On: Ia81bf6a655af800ce8ac19940d851e65746e1f77
Depends-On: I0d869aacaaad85cdd34361a611ac8348bdbb757d
Depends-On: I7b05a99e23da296a673eb0bd34f18344618c8be3
Depends-On: I42237e8e29497bbc56606f6ad01de3d525bf8b2a
Depends-On: If75d2e76c2f166bc40a544dd502da43171ce1e7b
Depends-On: I401809d2638b11e6c77a318fc8fbbc41fa639083
Depends-On: I5d62ad76fdb64a9c6efd228f27e9b5f512f17d5e
Depends-On: I488afaa991e3d26b638a4f588f70db455959eadf
Depends-On: Ibe82dadb0f2d1c5dbc38b96731c6e443c5469ff0
Depends-On: Id25b86dd415e2e3c6190a91faee2a3b815e50f61
2017-11-01 14:50:56 +00:00
Brad Jorsch
3488f49532 Replace selectFields() methods with getQueryInfo()
Several classes have a "selectFields()" static method to tell callers
which fields to select from the database. With the recent comment table
change and the upcoming actor table change, this pattern has become too
simplistic as a SELECT will need to join several tables to be able to
retrieve all the needed fields.

Thus, we deprecate the selectFields() methods in favor of getQueryInfo()
methods that return tables and join conditions in addition to the
fields.

Change-Id: Idcfd15568489d9f03a7ba4460e96610d33bc4089
2017-10-30 22:57:33 +00:00
Umherirrender
c1281350fc Update signature of UserGroupsChanged to match documentation
UserGroupsChanged is called in Special:UserRights with seven args
The caller in User.php only has five

Change-Id: I221da323c79bb8da0113533d01b429249d15e7de
2017-09-19 19:31:26 +02:00
David Barratt
ce3960ec31 Allow users to restrict who can send them direct emails via Special:EmailUser
Users can now specify a blacklist of users who are prevented from sending them a direct email.

Bug: T138166
Change-Id: Ifa26153f593b0ca3a9121e1e29961911c616c9e4
2017-09-13 11:28:12 -06:00
MusikAnimal
d09554b6ef Add basic IP range support to Special:Contributions
This works by using the new table introduced with T156318.

The only thing that differs from normal Special:Contribs is we are
showing the IP address next to each entry. This is it how it is
displayed if you request to see newbie contributions:
https://en.wikipedia.org/wiki/Special:Contributions?contribs=newbie

For the time being, Special:DeletedContributions does not support
IP ranges. Various other irrelevant links such as Uploads and Logs
are also hidden.

Refer to P4725 for a way to automate creation of edits by random
IPs in your dev environment.

IP::isValidBlock() has been deprecated with this dependent change:
https://gerrit.wikimedia.org/r/#/c/373165/

Bug: T163562
Change-Id: Ice1bdae3d16cf365da14c6df0e8d91d2b914e064
2017-09-05 16:15:33 -04:00
Brad Jorsch
01a10dba5a Remove reference to deprecated IDatabase->nextSequenceValue()
The method was deprecated and made unnecessary in Ib308190c.

Change-Id: I1729ac0b3a88270a4c2f064187a2472112aaeb1e
2017-09-01 12:28:39 -04:00
Umherirrender
3f1a52805e Use short type bool/int in param documentation
Enable the phpcs sniffs for this and used phpcbf

Change-Id: Iaa36687154ddd2bf663b9dd519f5c99409d37925
2017-08-20 13:20:59 +02:00
Umherirrender
ace44e2064 Use correct variable name in @param documentation
For some varargs a variable name is added with suffix ,... as seen for
many other varargs

Some @param are swapped, because there are in the wrong order

Enable Sniff MediaWiki.Commenting.FunctionComment.ParamNameNoMatch

Change-Id: I60fec6025bce824d5c67563ab7b65ad6cd628ad8
2017-08-11 19:27:19 +02:00
Umherirrender
a9007e8baf Add missing & to @param documentation to match functon call
Change-Id: I81e68310abcbc59964b22e0e74842d509f6b1fb9
2017-08-11 18:47:46 +02:00
Kunal Mehta
d1cf48a397 build: Update mediawiki/mediawiki-codesniffer to 0.10.1
And auto-fix all errors.

The `<exclude-pattern>` stanzas are now included in the default ruleset
and don't need to be repeated.

Change-Id: I928af549dc88ac2c6cb82058f64c7c7f3111598a
2017-07-22 18:24:09 -07:00
Max Semenik
736cb415fb Remove temporary hole in abstractions
Was introduced temprarily to facilitate event logging, now the only caller is gone.

Bug: T166247
Change-Id: I0f9cdccc6b3a566d9f7ebf02515f724348205071
2017-07-14 16:36:10 -07:00
jenkins-bot
c6d1ceb90a Merge "User: Avoid deprecated Linker::link()" 2017-06-28 12:49:55 +00:00
Kunal Mehta
559e3a4c5c User: Avoid deprecated Linker::link()
Change-Id: Id50615c1cd4c49ea7b04747f15e353448e971b66
2017-06-26 19:19:27 -07:00
Umherirrender
be42e09aa8 build: Prepare for mediawiki/mediawiki-codesniffer to 0.9.0
The used phpcs has a bug, so the version 0.9.0 could not be enforced at the moment.
Will be fixed in next version, see T167168

Changed:
- Remove duplicate newline at end of file
- Add space between function and ( for closures
- and -> &&, or -> ||

Change-Id: I4172fb08861729bccd55aecbd07e029e2638d311
2017-06-26 17:14:31 +00:00
jenkins-bot
022d6ab817 Merge "Avoid DB_MASTER queries in User::newSystemUser() when possible" 2017-06-03 05:16:08 +00:00
Kunal Mehta
2f1f04dd4f User: Avoid deprecated wfMemcKey()
And ObjectCache::getMainWANInstance() while we're at it.

Change-Id: Id0280aec72202f3b3098c9c3b563541c2c0f2900
2017-05-25 12:17:27 -07:00
Kunal Mehta
2f059883fb User: Avoid deprecated wfMemcKey()
Change-Id: Iffb4d85dfed740b01fcef5a25762dc751b292c41
2017-05-25 11:20:24 -07:00
Aaron Schulz
0f4b3764ce Use test user helper methods in UserGroupMembershipTest/UserTest
This avoids postgres failures when trying to insert users with name
"false" (cast to 0, which fails since integer != text type).

Bug: T75174
Change-Id: I809edd94117811d22492eaba440fad6aaea1195b
2017-05-19 19:07:21 +00:00
Aaron Schulz
e9c7e1d34e Avoid DB_MASTER queries in User::newSystemUser() when possible
Bug: T92357
Change-Id: I1c90fef9b4f3acc658f4911a8db6f985e7cc7c83
2017-05-14 16:56:04 -07:00
Paladox
54c56da85a Fix php code style
Preparation change for updating mediawiki code sniffer to 0.8.0

Change-Id: Ib0b3fe4afea9096ffa3a1347b4f7e07d3398b0b2
2017-05-05 12:03:54 +00:00
jenkins-bot
bfb9b1ce86 Merge "Adding explantation for why to use User::incEditCount()" 2017-05-01 23:49:26 +00:00
Florian Schmidt
c9649314f7 Use IPSet for checking of wgProxyList
Instead of using array_* functions, use the IPSet for checking, if a
specific IP address matches a set of addresses.

This also deprecates a backward-compatibility functionality, that
the wgProxyList array could also be an associative array, where the blocked
IP address is set as a key of the array insted of a value. All IP address
keys will be mved to values on-the-fly, however a deprecation warning will
be emitted. A notice in the Release notes was added, too.

Bug: T161580
Change-Id: I69d9534942c415ab044177969ecd54160079b593
2017-05-01 22:15:03 +00:00
Kaldari
d4863dea27 Adding explantation for why to use User::incEditCount()
... rather than User::incEditCountImmediate() for most cases.

Change-Id: Ia16baabaeaca5c726e1dd1fc2506dc0b85500b6e
2017-04-28 13:45:25 -07:00
This, that and the other
9ee4e74e31 Expire the cache of a User object when a group membership is set to expire
To avoid user permissions persisting for up to 1 hour beyond their expiry
time.

Bug: T163691
Change-Id: I85b578e6b7816639c3d0101d66efb1efedb17af6
2017-04-25 13:55:26 +10:00