What this piece of code does: Collect the page names (without a
namespace) from all namespaces that support a gender discinction.
These are usually the User: and User_talk: namespaces.
In other words: No matter if the input contains "User:Foo" or
"User_talk:Foo" or both, we want the output to contain the user name
"Foo" a single time.
We can just combine the incoming per-namespace arrays with + or
array_merge (doesn't make a difference here, but + is actually a lot
faster).
Change-Id: Ia616d3c3db509c4a02ef6806321ef8ae39ede640
Motivation:
* Avoid code duplication.
* Hopefully make it easier to read.
* Also order stuff from cheap to expensive, if possible.
Change-Id: I575e3f2027ce60a0d0885be5b9bd3e07bc035eee
IDatabase::makeWhereFrom2d no longer returns false (it throws),
so do the check in the calling code and return false
Bug: T336964
Follow-Up: Ifdf3ea54271ea856f2f555a5e087b8f521e348b3
Change-Id: I665c3a6e8d8623ace6a5df4e110527db2f546b30
A bit of a clean up. Switching out of lbFactory to ICP is not possible
at the moment because there is $this->lbFactory->getLocalDomainID()
for cache prefix. Fixable later.
Bug: T330641
Change-Id: I2d4537f75f5877552c6d9fd2b76c5be1959ea400
New instances should be created with LinkBatchFactory's
`newLinkBatch`, there is no `makeLinkBatch` method.
Change-Id: Ib72a33eaf93057fa2fc757813b6a9e3b8ee7989a
LinkCache::getSelectFields() includes page_title and page_namespace
since If77c2f9879d7bae71eb59944efd8b3798d16aa46, so we don't need
to add those two specifically.
Change-Id: I8fa9d563af3f9da90fb96369dab0ee5bde860081
Even the service does not long stay in that classes,
it should be injected to avoid global state
Bug: T304780
Change-Id: Ib488037f5a6966ab61042ed3cd889ddc50f1ba8e
- In Info action and its API counter part
- In LinkBatch::constructSet
- In Title::getLinksFrom
Bug: T304780
Change-Id: I449f041986acdd16feecac818e3579987b4b11be
LinkBatch::getPageIdentities() returns PageIdentityValues, which
are ProperPageIdentities. Indicate this in the return type
documentation to avoid phan complaints.
Change-Id: I461f2964aa9b4178d41e6071763e016b207c77d5
* In LinkBatch::addObj(), reject interwiki links with a warning.
Otherwise the link is added to the batch by ns/title and later
reconstructed as if it were a local link without an interwiki
prefix.
* In CommentParser, treat interwiki links as always good, don't defer
the existence check.
* In LinkBatch, inject a LoggerInstance instead of calling LoggerFactory
in four places.
* Add a regression test, and some general tests for known links.
Bug: T300311
Change-Id: I0e5825eb48a6ba2932aea69a4d0fff3439c50ff5
LinkBatch used to be lenient about receiving null or invalid titles.
This patch restores this lenient behavior.
Bug: T282180
Bug: T282070
Change-Id: I2c6378a3a0d508c77bcb290a6ed07f4d5f96d62c
This is micro-optimization of closure code to avoid binding the closure
to $this where it is not needed.
Created by I25a17fb22b6b669e817317a0f45051ae9c608208
Change-Id: I0ffc6200f6c6693d78a3151cb8cea7dce7c21653
* Remove incorrect null type from documentation of properties
that cannot be null.
* Add type doc for $caller and $data
Change-Id: I8d51dca7fd4910acf744361279c441fe4c3a4307
These are mostly easy fixes. Tests were fixed when that didn't require
any change to the tested code, and moved to /integration otherwise.
MediaWikiUnitTestCase::setTemporaryHook was removed: the
caller should provide a HookContainer, at which point it would just
become a useless wrapper around HookContainer::register. (We don't
really need it to be temporary, if proper DI is used).
The method was only used in the tests touched by this commit.
Change-Id: I2aba02560c41b77eea9dd4bff0e4d1c4bb0da9a2
This includes fixing some mistakes, as well as removing
redundant text that doesn't add new information, either because
it literally repeats what the code already says, or is actually
duplicated.
Change-Id: I3a8dd8ce57192deda8916cc444c87d7ab1a36515
A terminating line break has not been required in wfDebug() since 2014,
however no migration was done. Some of these line breaks found their way
into LoggerInterface::debug() calls, where they mess up the formatting
of the debug log.
So, remove terminating line breaks from wfDebug() and
LoggerInterface::debug() calls.
Also:
* Fix the stripping of leading line breaks from the log header emitted
by Setup.php. This feature, accidentally broken in 2014, allows
requests to be distinguished in the log file.
* Avoid using the global variable $self.
* Move the logging of the client IP back to Setup.php. It was moved to
WebRequest in the hopes that it would not always be needed, however
$wgRequest->getIP() is now called unconditionally a few lines up in
Setup.php. This means that it is put in its proper place after the
"start request" message.
* Wrap the log header code in a closure so that variables like $name do
not leak into global scope.
* In Linker.php, remove a few instances of an unnecessary second
parameter to wfDebug().
Change-Id: I96651d3044a95b9d210b51cb8368edc76bebbb9e
All services required by LinkBatch are now injected by the
LinkBatchFactory. The constructor for LinkBatch has been
soft-deprecated, but the required services are still optional.
Bug: T239855
Depends-On: If49cbb730d4ac48586b891908cf24601efbc5d6a
Change-Id: I93d931ab60305ad49a6e419f8269c77791a3938d
This updates some code that has been constructing TitleValue directly
to use TitleValue::tryNew or TitleParser::makeTitleValueSafe.
Bug: T200055
Change-Id: If781fe62213413c8fb847fd9e90f079e2f9ffc9d
In some functions MediaWikiServices::getInstance() was called twices or
in loops. Extract the variable to reduce calls.
Change-Id: I2705db11d7a9ea73efb9b5a5c40747ab0b3ea36f
Xenon shows a significant amount of time is spent individually fetching
the content model for titles being purged. It's probably not a huge
improvement but lets fetch them all in one go instead of lazily as
needed.
Change-Id: I71af6f13c84e740c1367617d7a51210501363b33
Having such comments is worse than not having them. They add zero
information. But you must read the text to understand there is
nothing you don't already know from the class and the method name.
Change-Id: I994d11e05f202b880390723e148d79c72cca29f0