aboutsummaryrefslogtreecommitdiffstats
path: root/includes/filerepo/FileRepo.php
Commit message (Collapse)AuthorAgeFilesLines
* FileRepo: Add support for the new Shellbox large file featureTim Starling2024-10-291-0/+18
| | | | | | | | | | | | | | | | | | | | * Add FileBackend::addShellboxInputFile(), allowing Shellbox to read directly from a FileBackend. Add generic, FS and Swift implementations. * Add FileRepo wrapper, which takes a FileRepo virtual URL. * Add File::addToShellboxCommand(), which allows a File to be used as input in a Shellbox command. * Add configuration. * Extend FileBackend::getFileHttpUrl(), adding method and ipRange parameters. Unindent existing code. I was going to add support for PUT requests, but I reverted it due to the impossibility of supporting FileBackendMultiWrite. I left the method parameter in getFileHttpUrl(). Bug: T292322 Change-Id: If9487a0c9586065bf044b69ac04cc7a06b6e8856 (cherry picked from commit 8cdde9dcb03e33332e49aed06aa71b60ae2c9b33)
* Use namespaced classesUmherirrender2024-10-211-0/+2
| | | | | | | Changes to the use statements done automatically via script Addition of missing use statement done manually Change-Id: I73fb416573f5af600e529d224b5beb5d2e3d27d3
* Use explicit nullable type on parameter argumentsUmherirrender2024-10-161-2/+2
| | | | | | | | | | | Implicitly marking parameter $... as nullable is deprecated in php8.4, the explicit nullable type must be used instead Created with autofix from Ide15839e98a6229c22584d1c1c88c690982e1d7a Break one long line in SpecialPage.php Bug: T376276 Change-Id: I807257b2ba1ab2744ab74d9572c9c3d3ac2a968e
* Add namespace to remaining parts of Wikimedia\ObjectCacheJames D. Forrester2024-09-271-0/+1
| | | | | Bug: T353458 Change-Id: I3b736346550953e3b2977c14dc3eb10edc07cf97
* Add namespace to IDBAccessObject and DBAccessObjectUtilsJames D. Forrester2024-09-271-0/+1
| | | | | Bug: T353458 Change-Id: I23cf7991f8792d4d000d1780463d8ce76dc0aee0
* Add namespace and deprecation alias to FileBackendEbrahim Byagowi2024-05-191-0/+1
| | | | | | | | | This patch introduces a namespace declaration for the Wikimedia\FileBackend to FileBackend and establishes a class alias marked as deprecated since version 1.43. Bug: T353458 Change-Id: Id897687b1d679fd7d179e3a32e617aae10ebff33
* Namespace includes/cacheJames D. Forrester2024-02-201-1/+1
| | | | | Bug: T353458 Change-Id: Ic3f3168ef17113f5fb3ec11e0a47f52d65eefba9
* Namespace includes/contextJames D. Forrester2024-02-081-0/+1
| | | | | Bug: T353458 Change-Id: I4dbef138fd0110c14c70214282519189d70c94fb
* Remove more indirect calls to IDBAccessObject::READ_* constantsAmir Sarabadani2024-01-231-1/+1
| | | | | | | | | | Found via (?<!IDBAccessObject)::READ_ We are planning to deprecate and remove implementing IDBAccessObject interface just to use the constants. Bug: T354194 Change-Id: I89d442fa493b8e5332ce118e5bf13f13b8dd3477
* Replace more instances of deprecated MWExceptionDaimona Eaytoy2024-01-191-23/+16
| | | | | Bug: T328220 Change-Id: Iba90f7f9b5766bccc05380d040138d74d5e9558a
* Replace deprecated MWExceptionDaimona Eaytoy2024-01-161-1/+1
| | | | | Bug: T328220 Change-Id: Ic45438d9e6bbf127f1415add81ab902044765840
* Use thousands separators in selected integer literalsTim Starling2023-12-121-1/+1
| | | | | | | | | | For readability. Allowed since PHP 7.4. I searched for integer literals of 6 or more digits, and also changed some nearby smaller numbers for consistency. Bug: T353205 Change-Id: I8518e04889ba8fd52e0f9476a74f8e3e1454b678
* FileRepo: Reduce duplicated calls to resolveToStoragePathIfVirtual()Func2023-09-231-2/+1
| | | | Change-Id: I98446f7eee739cd6ea2e58cf8d160fc7bad62fd5
* Reorg: Move Status to MediaWiki\Status\Amir Sarabadani2023-08-251-0/+1
| | | | | | | | | | This class is used heavily basically everywhere, moving it to Utils wouldn't make much sense. Also with this change, we can move StatusValue to MediaWiki\Status as well. Bug: T321882 Depends-On: I5f89ecf27ce1471a74f31c6018806461781213c3 Change-Id: I04c1dcf5129df437589149f0f3e284974d7c98fa
* Reorg: Move MWTimestamp to MediaWiki\UtilsAmir Sarabadani2023-08-191-0/+1
| | | | | Bug: T321882 Change-Id: I48c10343295c4eb3d9ef8037343b0070e928f040
* Move array destructuring into foreachUmherirrender2023-07-081-2/+1
| | | | Change-Id: I54c98085b21f1fe48ccf575d1b9dd60d3b855c58
* filebackend: Split missing file and error on getLocalReference/CopyUmherirrender2023-04-291-2/+2
| | | | | | | | | | | FileBackend::getLocalReference and FileBackend::getLocalCopy should report failure and missing with different values to make error reporting for the caller easier (FileBackendStore::doConcatenate in this case). The existing subclass implementation for FileBackendStore::doGetLocalCopyMulti already doing that. Change-Id: Ie29aed48dc33bcd9fe1ed1e91685596044dfd988
* Fix even more PHPStorm inspections (#3)Tim Starling2023-03-251-1/+0
| | | | | | | | | | | | | | | * Inappropriate @inheritDoc usage. Arguably all @inheritDoc is inappropriate but these are the ones PHPStorm flags as misleading due to the method not being inherited. * Doc comment type does not match actual argument/return type. * I replaced "@return void|never" with "@return void" since never means never, it doesn't make sense for it to be conditional. If a method can return (even if that is unlikely) then @return contains the type that it returns. "@return never" means that there is no such type because the method never returns. * Incomplete/partial/broken doc tags Change-Id: Ide86bd6d2b44387f37d234c2b059d6fbc42ec962
* Fix more PHPStorm inspections (#2)Tim Starling2023-03-251-2/+2
| | | | | | | | | | | | | | | * Illegal string offset and invalid argument supplied to foreach, due to incorrect type information * Array internal pointer reset is unnecessary * $hookData unused since MW 1.35 due to incomplete revert * array_push() with single element * Unnecessary sprintf() * for loop can be replaced with str_repeat() * preg_replace() can be replaced with rtrim() * array_values() call is redundant * Unnecessary cast to string * Unnecessary ternary. Often the result relies on short-circuit evaluation, but I find it more readable nonetheless. Change-Id: I4c45bdb59b51b243fa96286bec8b58deb097d707
* Reorg: Namespace the Title classJames D. Forrester2023-03-021-0/+1
| | | | | | | | | | | | | | | | | | | This is moderately messy. Process was principally: * xargs rg --files-with-matches '^use Title;' | grep 'php$' | \ xargs -P 1 -n 1 sed -i -z 's/use Title;/use MediaWiki\\Title\\Title;/1' * rg --files-without-match 'MediaWiki\\Title\\Title;' . | grep 'php$' | \ xargs rg --files-with-matches 'Title\b' | \ xargs -P 1 -n 1 sed -i -z 's/\nuse /\nuse MediaWiki\\Title\\Title;\nuse /1' * composer fix Then manual fix-ups for a few files that don't have any use statements. Bug: T166010 Follows-Up: Ia5d8cb759dc3bc9e9bbe217d0fb109e2f8c4101a Change-Id: If8fc9d0d95fc1a114021e282a706fc3e7da3524b
* Use str_starts_with/str_ends_with/str_containsUmherirrender2022-12-121-2/+2
| | | | | | | Use the new function in conditions to avoid creating substrings or to search the whole string Change-Id: Ibad6b1b447a4f62cceb34359231f88ebb967a90b
* Use short array destructuring instead of list()Tim Starling2022-10-211-8/+8
| | | | | | | | Introduced in PHP 7.1. Because it's shorter and looks nice. I used regex replacement. Change-Id: I0555e199d126cd44501f859cb4589f8bd49694da
* filerepo: Replace deprecated wfExpandUrlUmherirrender2022-10-051-1/+2
| | | | | Bug: T319340 Change-Id: I7896fc4df95f34bd5095cf10beb723738a9a3bf6
* Make use of ?? and ?: operators where it makes senseThiemo Kreuz2022-08-041-6/+3
| | | | Change-Id: I1d9d62d80b17d1a05222c6e82f631cb801c311a8
* Fix many typos in commentsMatěj Suchánek2022-05-101-1/+1
| | | | | | Found using IntelliJ's "Typo" code inspection. Change-Id: I746220ebe6e1e39f6cb503390ec9053e6518cf16
* Use str_starts_with/str_ends_withAryeh Gregor2022-05-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | All the other ways of doing it were ridiculous and much harder to read, and usually required repeating the needle expression (to get its length). I found these occurrences by grepping for various expressions, but I undoubtedly missed some. I didn't try replacing the many instances of strpos(...) === 0 with str_starts_with(...), because I think they're readable enough as-is (although less efficient). Likewise I didn't try porting strpos(...) !== false to str_contains(...). For case-insensitive comparisons, Tim Starling requested that we stick with substr_compare() because it's more efficient than calling strtolower(). On PHP < 8 these functions will be included with a polyfill via vendor/autoload.php. This is included at the beginning of includes/AutoLoader.php, so if our autoloader has been included the polyfill will be available. This means it should be safe to call these functions from any code that would not be usable without our autoloader. Three uses that Tim Starling identified as being performance-sensitive have been split out to a separate commit for porting after the switch to PHP 8. Change-Id: I113a8d052b6845852c15969a2f0e6fbbe3e9f8d9
* Use MainConfigNames instead of string literalsAryeh Gregor2022-04-111-1/+2
| | | | | | | | Part 1, proof of concept. Hundreds of files left to go. These changes brought to you in large part by vim macros. Bug: T305805 Change-Id: I44789091e9f6394c800a11b29f22528c8dcacf71
* phan: Upgrade mediawiki-phan-config to 0.11.1 and set minimum_target_php_versionJames D. Forrester2022-03-291-1/+0
| | | | | | | | | | | | | | | | MediaWiki still supports PHP 7.2+, but we want to mainly test in newer versions of PHP. Setting minimum_target_php_version to 7.2 this lets us run phan without phan trying to get us to make PHP 7.2-incompatible changes to 'appease' PHP 8.0 or whatever later changes. Some switches of generic 'resource' type-hinting to 'resource|object' to inform phan to ignore this (triggering PHPCS at the time, ah well), rather than trying to hint the specific novel PHP encapsulation classes to that have replaced them from PHP 8.0 onwards but don't yet exist, and fixes from where we were checking the results of implode and explode. Bug: T293924 Change-Id: I629e3fb3adfad73beb3d424a07e643c2e079d9bb
* phan: Disable scalar_implicit_cast settingUmherirrender2022-03-181-0/+1
| | | | | | | | | Make phan stricter about scalar types by setting scalar_implicit_cast to false (the default in mediawiki-phan-config) Bug: T242536 Bug: T301991 Change-Id: Ia2fe30b17804186571722e728578121c8b75d455
* Fix various documentation related to scalar typesUmherirrender2022-03-091-1/+1
| | | | | | Found by phan strict checks Change-Id: If41d16b473baddd92cc4261cdc2bfbe65fedcb19
* Fix documentation about query parameter as string[]Umherirrender2022-03-031-1/+1
| | | | | | | | | Url query parameter sometimes contains integer, which are not allowed on string[], just use array instead. Found by phan strict checks Change-Id: I7eabe69ee7a78ffee05413a022caec940672ae9f
* Replace some more usages of Wikimedia\(suppress|restore)Warnings()Reedy2022-02-241-2/+3
| | | | Change-Id: I2eb133a9e32116cd155f59086245bc4d15ecbfcc
* filerepo: Simplify and document 'favicon' FileRepo optionTimo Tijhof2022-01-261-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was originally added in changes linked to T77093 without coordination with maintainers and took various shortcuts and lacked proper integration. * Rather than reading a global variable from LocalRepo::getInfo, inject this option from Setup.php, the same as for other local settings. * Apply the wfExpandUrl() call in the base class getInfo() method. This is done so that $wgForeignFileRepos and $wgLocalFileRepo settings via LocalSettings.php or wmf-config get the same treatment and benefit (support for paths) as $wgFavicon, which one would generally expect. Other reasons to do this at run-time are 1) We can't safely call wfExpandUrl() during Setup.php as it is too early, and 2) We generally avoid doing computational work during Setup.php given it's not needed for most web requests to most entry points (T189966, etc.). * Document the option in DefaultSettings.php. * Fix bad doc in FileRepo.php, to reflect that it is optional and may be null. * Remove now-redundant hack in ForeignDBRepo::getInfo, which had to jump over its parent class previously to avoid inheriting the other hack in LocalRepo::getInfo, which is now gone as well. Bug: T77093 Change-Id: I9102b5a246ff81a3435748a3fd1c759a4b884a51
* Refactor global variables to use MediaWikiServices insteadTChin2022-01-101-3/+3
| | | | | | | | | | | | Automatically refactors wg prefixed globals to use MediaWikiServices config using Rector. Doesn't include files that set globals or files that fail CI. Rector Gist: https://gist.github.com/tchin25/7cc54f6d23aedef010b22e4dfbead228 * This patch uses a modified source code rector library for our specific use case and the rector will have different effects without it. A writeup for future reference is here: https://meta.wikimedia.org/wiki/User:TChin_(WMF)/Using_Rector_On_MediaWiki Change-Id: I1a691f01cd82e60bf41207d32501edb4b9835e37
* Merge "Use DeletePage in FileDeleteForm and fix output of ApiDelete"jenkins-bot2021-11-231-18/+9
|\
| * Use DeletePage in FileDeleteForm and fix output of ApiDeleteDaimona Eaytoy2021-11-181-18/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Use DeletePage in FileDeleteForm instead of WikiPage::doDeleteArticleReal - Properly handle scheduled deletions in FileDeleteForm: previously, a null status value could indicate a missing page OR a scheduled deletion, but the code always assumed the first, and it would generate a duplicated log entry. The API response would also not contain the "delete-scheduled" message. This has been broken since the introduction of scheduled deletion. - In ApiDelete, for file deletions, check whether the status is OK not good. The two might be equivalent, but this way it's more consistent. - Add some documentation for the Status objects returned by file-related methods. This is still incomplete, as there are many methods using Status and none of them says what the status could be. In particular, this means that for now we keep checking whether the status is OK instead of good, even though it's unclear what could produce a non-fatal error. - In LocalFileDeleteBatch, avoid using a class property for the returned status, as that's hard to follow. Instead, use a local variable and pass it around when needed. Bug: T288758 Change-Id: I22d60c05bdd4a3ea531e63dbb9e49efc36935137
* | Remove or replace usages of "sanity"Reedy2021-11-191-1/+1
|/ | | | | Bug: T254646 Change-Id: I2b120f0b9c9e1dc1a6c216bfefa3f2463efe1001
* Drop experimental FileJournal system without deprecationJames D. Forrester2021-11-011-4/+4
| | | | | | | The feature was introduced in 2012 with d19f54602f (just before the gerrit migration). Change-Id: Ia3f59ad0ddeb1f610947b14e22b0694ff4c6ed84
* Using @return never documentation on always-throw-functionUmherirrender2021-09-071-1/+1
| | | | | | | | | | This helps phan to detect unreachable code and also impossible types after the functions. It helps phan to avoid false positives for array keys when the keys are checked before Bug: T240141 Change-Id: I895f70e82b3053a46cd44135b15437e6f82a07b2
* build: Update mediawiki/mediawiki-phan-config to 0.11.0Umherirrender2021-09-071-0/+1
| | | | | | | Addition and remove of suppression needs to be done with the version update. Change-Id: I3288b3cefa744b507eadebb67b8ab08c86517c1c
* filerepo: Improve return types in documentationUmherirrender2021-09-041-13/+13
| | | | | | Also avoid a local variable Change-Id: I31e8a95124addcfa78b7290201c14b0735b48730
* Support fluent interface for StatusValueTChin2021-08-021-25/+16
| | | | | | | Also refactored some calls to use it. Bug: T287485 Change-Id: If9e96ce87dc3f3641e9b3ebe093f92d8fa49b9ee
* FileRepo::findFile - support AuthorityPetr Pchelko2021-05-261-12/+14
| | | | Change-Id: Ib42b7f7d5aa88447b4fb363f52062b08a1af30c3
* Convert UploadStash to UserIdentityPetr Pchelko2021-05-101-2/+3
| | | | Change-Id: I7e0a0824bc9924f40e68119aa3d8cf0687446c79
* UploadBase::getSha1Base36FromPath can return falseUmherirrender2021-04-271-1/+1
| | | | | Bug: T187491 Change-Id: Ie91d87f3a0aeab0344f8af6d1e0906dacf8a8e38
* FileRepo: replace Title in method signaturesdaniel2021-04-161-10/+12
| | | | | | | | | | NOTE: FileRepo is extended (via LocalRepo) by a couple of extensions, even though it is not stable to extend. Hwever, none of these extensions overrides any of the methods changed here. https://codesearch.wmcloud.org/extensions/?q=extends%20%5Cw%2BRepo%5Cb&i=nope&files=&excludeFiles=&repos= Bug: T278459 Change-Id: I0c236bfa354b01b03f864dd343371e4ae323b56f
* Better config for disabling all local image scalingTim Starling2021-02-221-1/+14
| | | | | | | | | | | | | | | | SpecialUploadStash would check $wgUploadStashScalerBaseUrl to see if remote scaling is enabled, but would then throw the value away and use thumbProxyUrl instead. So: * Refactor SpecialUploadStash so that thumbProxyUrl is checked first. * Soft-deprecate $wgUploadStashScalerBaseUrl. * Don't use thumbProxySecret in the $wgUploadStashScalerBaseUrl case * Document thumbProxyUrl and thumbProxySecret in DefaultSettings.php * Add disableLocalTransform, which enforces this configuration and ensures nothing else tries to do local scaling. Bug: T260504 Change-Id: I111c01ae7e07ac7a943a32192c867ce9754b690a
* Merge "Update a lot of unspecific "array" types in PHPDocs"jenkins-bot2020-11-131-1/+1
|\
| * Update a lot of unspecific "array" types in PHPDocsThiemo Kreuz2020-10-281-1/+1
| | | | | | | | | | | | | | | | | | 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
* | Merge "Replace deprecated Title::getCdnUrls"jenkins-bot2020-11-131-1/+1
|\ \