The main benefit is that this syntax avoids repeating the variable
name. It does the same as before.
Change-Id: I2040be889c749f4e2416ca9948ba261345858af2
Edits from temporary accounts are considered anonymous edits.
ApiQueryRecentChanges doesn't correctly reflect this and needs to be
updated to correctly return temporary account edits as anonymous (and
similarly, not to return them when requesting !anon)
- Update the anon|!anon query to accomodate temporary accounts
Bug: T370803
Change-Id: Ica5225422ea53d2aa3a84b86d9c2f14832a34ed4
Why:
- The test class does anonymous edits, but did not first disable temp
user creation
What:
- Disable temp user creation before attempting an anonymous edit
- Enable temp account feature when calling doTempPageEdit
- Remove call to enableAutoCreateTempUser in testShowAnonParamsTemp, as
it's no longer needed
Bug: T365669
Change-Id: I2ce83d5703ecc75fe680d7ddb44aa406c26c4df5
Why:
- This test exercises code that checks for IP edits
What:
- Disable temp user feature for this test class
Bug: T365669
Change-Id: If385b71b76c16f9276c3973a02ca0c888b47d3a3
Why:
- This test does not pass when temp accounts are enabled
What:
- Set disableAutoCreateTempUser when doing an anon page edit
- Set a valid pattern for the temp user name
This patch does not fix testUserPropParameter but does solve the other
failures for this class.
Bug: T365669
Change-Id: I24b3ff10c6275a9c13c3f07d97ea14581f975067
For a deduplication the raw sql is used as string key in an array.
Now only the search term is part of the key, build the sql a bit later,
as objects not usable in array keys.
The deduplication is needed when namespaces have different first letter
configs as happen with $wgCapitalLinks = false for all namespaces except
the hard coded like user and mediawiki with talk.
Searching for lower case titles splits the query
Bug: T361023
Change-Id: Ia4e29d1d4d816f354318ef443ae19c954fd52274
Why:
- Using TempUserConfig is more flexible as it doesn't require us to know
about the internal details of the AutoCreateTempUser config object
What:
- Use TempUserConfig service instead of loading the AutoCreateTempUser
object
- Remove properties from ApiQuerySiteInfo that don't already have
getters. If someone has a need for more this information to be exposed
in ApiQuerySiteInfo, they can be added in a separate patch
- This seems compatible with the goals of T335532 which was about
making it possible to discover via the API if an action would result
in a temp account
- Implement __toString for Pattern, so that it can be used in
ApiQuerySiteInfo
Bug: T335532
Change-Id: Ica84b3e9b9865b8b83a9e9e513c99cd2e47661c9
Why:
- Consistency with the enableAutoCreateTempUser method
- Allows for overriding config properties (e.g. 'known')
What:
- Use an array as the parameter for `disableAutoCreateTempUser` instead
of a string
Change-Id: I1a495cc83effcf92364fa489f779c5f4bf2d29b9
This patch introduces a namespace declaration for the
MediaWiki\Watchlist to WatchedItemQueryService and establishes a class
alias marked as deprecated since version 1.43.
Bug: T353458
Change-Id: Ib1b5c19c89087940987730939e84c8cd35cd3760
* Deprecate and stop using $wgBlockTargetMigrationStage. Remove
block_target migration code.
* Make the $schema parameters to DatabaseBlockStore methods default to
SCHEMA_BLOCK. Avoid passing these parameters where possible.
* Remove cleanupBlocks.php
* Deprecate DatabaseBlock static methods which try to present the old
schema for b/c.
Bug: T362133
Change-Id: I845bad8cc09a4528fef46a6f9d490ebdec881d99
A number of tests have hardcoded expections that pass only in WMF CI
where Quibble has LocalSettings.php with $wgScript and $wgArticlePath
set a certain way.
We could fix these by adding setMwGlobals() in their tests, as we
often do, but these are so often forgotten that I'd rather we just
add them to TestSetup.php so that it is simply impossible to write a
test that that passes locally for you (if you have the same config)
but not for someone else.
There is a larger project in there somewhere about expanding this
slowly such that we basically only pluck DB-settings and extension
enablement from LocalSettings and otherwise run the tests with the
default settings in PHPUnit. Pretty much by definition, any (other)
setting you have in LocalSettings is irrelevant because it either:
1. has no effect on the test (majority, harmless either way),
2. has a custom default via TestSetup.php (which has precedence over
LocalSettings.php),
3. is relevant to the code being tested and the test case correctly
calls setMwGlobals() to ensure a consistent value during test.
4. is relevant to the tested code but has no override, thus only
passes if you happen to have the "right" value set for it
(undesirable).
Case 4 is already categorically impossible for the most common config
settings that influence random code because we give them a value
in TestSetup.php. This patch expands that to include $wgScript
and $wgArticlePath. Perhaps in the future we can think about a way
to do this automatically by either re-applying MainConfigSchema
(sans db settings) or by only selectively applying LocalSettings.php
in the first place.
This patch follows-up I072ddf89562fe, which added a test case in
WikitextContentHandlerIntegrationTest.php that assumed "/index.php"
as the value of $wgScript. This passes in WMF CI since Quibble uses
that value, but the tests failed in most local development installs
since those tend to use "/w" instead.
Rather than one-off fixing that one test with overrideConfigValues(),
switch to a more general fixture, since the precise values don't
matter for this test.
Bug: T349087
Bug: T277470
Change-Id: If4304b7ca4a838bd892d4516a0b5c6dfbc30986e
Production is read new almost everywhere, mediawiki core should reflect
that as well.
Bug: T299947
Change-Id: I8f05c4d7026394205bfc54b68dc725392852ae2a
Why:
- We don't want to allow unlimited acquisition of temp account names.
These should be rate limited in similar way to how we limit the
creation of temp accounts
What:
- Provide a TempAccountNameAcquisitionThrottle, and use it in the
acquireName() method
- Set a default that is 10 times the limit of
TempAccountNameCreationThrottle
Depends-On: If660aad1d0f04f366414084aff3f88484a19d416
Bug: T343101
Change-Id: I99d5973498a89ac227847de5837c0a8e895c28fb
Fix the real issues found by this sniff, and convert the remaining
false positive ignores to per-line ignores so that any more real issues
won't be added.
Change-Id: I18e75d59df327e2d93a3a487c115e92b9f268722
Changed some inserts to use multi-row insert for small performance
benefit where possible and not already used.
InsertQueryBuilder does not return a value, deprecated since 1.33
Bug: T353219
Change-Id: I2380ebc8ec8db178dd790247aefbdd798b6d62ff
Why:
* ApiQueryBase subclasses may define a ::isWriteMode override, as
the API call may need to write to the DB.
** This is the case for the CheckUser extension, where the
'checkuser' API creates a log entry that allows users to audit
usage of the API.
* ApiQuery currently does not define a implementation of
::isWriteMode, which means that the definitions by any class
that extends ApiQueryBase currently do nothing.
* ApiQuery::isWriteMode should be defined and work in a similar
way to ApiQuery::isReadMode, so that subclasses of ApiQueryBase
can have their definitions of ::isWriteMode respected.
What:
* Define ApiQuery::isWriteMode in a similar way to how ApiQuery
::isReadMode is written, but also inspecting the modules that
are used through the 'list' and 'prop' params.
* Add tests for ApiQuery::isWriteMode.
Bug: T361951
Change-Id: Idf1c8f95df58a861404e0c89507c885ec4554793
Why:
* The default value of wgAutoCreateTempUser has not changed since
the decision to use a different prefix for temporary accounts
(T332805).
* The default needs to be updated to reduce the number of overrides
in operations/mediawiki-config and also to make the development
experience more consistent with what is happening on WMF
production.
What:
* Update the wgAutoCreateTempUser default in the following ways:
** Set expireAfterDays as 365
** Set notifyBeforeExpirationDays as 10
** Set genPattern and reservedPattern to '~$1'
** Set matchPattern to null, which will mean that the genPattern
is used as the value.
* Update RealTempUserConfig::getPlaceholderName to add the year to
the placeholder name so that if the match pattern includes the
first digit of the year, then the placeholder name still is
considered a valid temporary account username.
* Replace modifications of the wgAutoCreateTempUser config in
integration tests with a use of the TempUserTestTrait to make
the code cleaner and make it easier to find tests that relies on
the values in wgAutoCreateTempUser.
* Update multiple tests to handle the new defaults for the config.
Bug: T359335
Change-Id: Ifa5a0123cd915bdb7c87e473c51fb93321622f12
* Add a comment explaining why we need table aliases in HideUserUtils
subqueries.
* Use the table aliases consistently in inner field references. While
this does not appear to be strictly necessary, since unprefixed fields
refer to the inner query by default, it helps to improve the clarity
of the code.
Change-Id: Id68684ea12060a259dc87e66edd63b925da2c3b1
On en.wikipedia.org, MariaDB chooses to materialize the subquery,
copying about 810,000 rows to a temporary table.
So, use a dependent scalar subquery, which is not eligible for this
"optimisation".
Bug: T360163
Change-Id: I7819a6870871687ea96f92dfd3f8fe581b54cc24
Why
* ApiQueryWatchList allows filtering anon users or not-anon users.
It is not obvious wether temporary users should be considered
anon for these purposes.
* The equivalent filters in recent changes group temporary users
with anonymous users (T343322).
* Since ApiQueryWatchlist queries the recentchanges table, and
shares many filters with recent changes, it makes sense to
filter the same way in both, and therefore to group temporary
users with anonymous users.
What
* Update queries in WatchedItemQueryService to group temporary
users with anonymous users for FILTER_ANON and FILTER_NOT_ANON.
* Don't change the 'anon' flag, because the other APIs flag
temporary users with anon=false.
* Instead add a 'temp' flag for temporary users.
Bug: T358693
Change-Id: I4cd3a4d0c5f4f488933cf3f06dee62a9beb85440
Why:
* The ApiQueryUserInfo API returns 'anon' as true when the user
making the request is an IP user.
* This API should return 'temp' if the user making the request is
a temporary account, as described by T358683.
What:
* Return 'temp' with the value true from the ApiQueryUserInfo API
when the user making the API request is a temporary user.
* Test that the temp user flag is added when the user making the
request is a temporary user and that the flag is not added when
the user is logged-out.
Bug: T358683
Change-Id: I5f165576a12a2218d89ab3623d7df45e2c9049fa
- test for temp users in ApiQueryLogEvents
- test for temp users in ApiQueryRevisionsTest
Bug: T353355
Change-Id: I8c1ae26e5566dd8fc2d2817fd3acaa04478d686c
In DatabaseBlockTest changed from addDBDataOnce() to addDBData() as
ChangedTablesTracker cannot reset tables changed by addDBDataOnce()
between each test run.
Remove also User::clearInstanceCache done together with the deletion as
the TestUser class is calling this already between tests.
Change-Id: Ibd5e544138a2a9b554abc2dea54a5db38f9a828f
Or just remove it. It's not needed when the structure is already an
array. PHP will happily initialize multi-dimentional arrays when
needed.
Change-Id: I93845e8d6f870d147bd55cfe3827bc94b375d0ba
ConvertibleTimestamp::setFakeTime does not return a ScopedCallback,
which would need a local variable, it returns the old value.
The reset is part of MediaWikiTestCaseTrait.
Change-Id: Ic479ec810f3f75cbdd393f2d91afb7a311d798a0
Creation of dynamic property ApiQueryImageInfoTest::$tempUser is
deprecated in php8.2
Follow-Up: I7986dea5ccd0dc942bf133040c4ac715487f29b9
Change-Id: Ifa2b1fc46a30edb12266d46b71d8916c53397cc0