Commit graph

88 commits

Author SHA1 Message Date
Ebrahim Byagowi
d21cc67450 Add namespace and deprecation alias to FileBackend
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
2024-05-19 22:35:58 +03:30
Ebrahim Byagowi
14b4269d83 Add namespace and deprecation alias to Xml and XmlSelect
This patch introduces a new namespace declaration,
MediaWiki\Xml and adds Xml and XmlSelect to it
and establishes class aliases marked as deprecated
since version 1.43.

Bug: T353458
Change-Id: I45cccd540b6e15f267d3ab588a064fbeb719d921
2024-05-16 15:23:14 +03:30
daniel
9672a6e5e4 Make HTTPFileStreamer testable
This also improves ThumbnailEntryPointTest by allowing it
to assert which headers got sent.

Change-Id: I33911775bce1b3cc7a53a03c2be50d53a28fabd1
2024-04-26 13:22:55 +02:00
Amir Sarabadani
d8e542abf9 Reorg: Move three output related classes to includes/Output/
And namesapce them:
 - StreamFile
 - OutputHandler
 - OutputPage

Bug: T321882
Change-Id: Iedf8d88c595e580f2d8f0734c92aa5c45618ba33
2023-09-05 19:36:42 +01:00
Amir Sarabadani
f4e68e055f Reorg: Move Status to MediaWiki\Status\
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
2023-08-25 15:44:17 +02:00
Derk-Jan Hartman
9556256bda media: code style improvements
- Avoid unnecesary else branching
- Static vs non-static fixes
- string, int and float casting instead of strval,
  intval, floatval (faster and more readable)
- Strict comparisons (but not for all '' and 0 as might have
  implicit falsey behavior)
- Few spelling mistakes
- Remove TimestampException handling, caught by parent function

Change-Id: I08725c8e391965529a2766dfaf5d8f6cf8a86db8
2023-03-09 11:07:32 +00:00
Arlo Breault
e2752a0dcf Clarify tooltips are set if captions aren't visible
Matches Parsoid commit Icbc36b6e9aa1b9f4f27c23f4833c626a725cc154

Bug: T297443
Bug: T108380
Depends-On: I896e2af2e8a712a36eb23a25cad08f53574fc044
Change-Id: I30eba0fb226971ddeda4eb240929e89ef7e5f45f
2022-05-16 19:25:27 -04:00
Aryeh Gregor
7b791474a5 Use MainConfigNames instead of string literals, #4
Now largely automated:

VARS=$(grep -o "'[A-Za-z0-9_]*'" includes/MainConfigNames.php | \
  tr "\n" '|' | sed "s/|$/\n/;s/'//g")
sed -i -E "s/'($VARS)'/MainConfigNames::\1/g" \
  $(grep -ERIl "'($VARS)'" includes/)

Then git add -p with lots of error-prone manual checking. Then
semi-manually add all the necessary "use" lines:

vim $(grep -L 'use MediaWiki\\MainConfigNames;' \
  $(git diff --cached --name-only --diff-filter=M HEAD^))

I didn't bother fixing lines that were over 100 characters unless they
were over 120 and triggered phpcs.

Bug: T305805
Change-Id: I74e0ab511abecb276717ad4276a124760a268147
2022-04-26 19:03:37 +03:00
Umherirrender
8d235dd805 media: Improve documentation on Handler functions
Add missing @return and use false instead of bool where possible

Change-Id: Ie85a40987422e32aa02c56969e103371ec2e5b5f
2022-03-29 17:50:17 +00:00
Umherirrender
d30b3d8926 Fix various documentation related to scalar types
Found by phan strict checks

Change-Id: If41d16b473baddd92cc4261cdc2bfbe65fedcb19
2022-03-09 20:49:51 +00:00
Umherirrender
9ed1ed185f Fix various documentation related to false
Some function already document "False on failure", but does not document
it on the used type

Found by phan strict checks

Change-Id: I12eb8bbc99179833ee3e42c1a7d1dc1443682ca6
2022-03-03 21:33:31 +01:00
Arlo Breault
350721cc2c Add mw-file-description class on links to the file description page
Matches Parsoid output.

Bug: T292657
Depends-On: Iccee2dcbc7b06d80bcb4e026eedc11042585550b
Change-Id: I206f1ccbfee1a601f3e5a4b52cb6acb5a6fbf113
2022-03-01 15:53:05 -05:00
TChin
47adb6d65a Refactor global variables to use MediaWikiServices instead
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
2022-01-10 13:55:53 -05:00
Arlo Breault
fdd8f864b8 Emit media structure as piloted in Parsoid
Gated behind the flag $wgParserEnableLegacyMediaDOM.  The scattershot
usage of it is a little unfortunate but isn't expected to live very long
so maybe that's acceptable.

Further details can be found at,
https://www.mediawiki.org/wiki/Parsing/Media_structure

Bug: T51097
Bug: T266148
Bug: T271129
Change-Id: I978187f9f6e9e0a105521ab3e26821e36a96b911
2021-06-24 23:32:40 +00:00
jenkins-bot
39705eb311 Merge "Replace "@stable for subclassing" with "@stable to extend"" 2020-07-13 09:31:38 +00:00
daniel
3c50afa46b Replace "@stable for subclassing" with "@stable to extend"
For compliance with the new version of the table interface policy
(T255803).

This patch was created by an automated search & replace operation
on the includes/ directory.

Bug: T257789
Change-Id: Ie32c1b11b3d16ddfc0c83a757327d449ff80b2e4
2020-07-13 11:00:30 +02:00
daniel
f7116bb3a2 Replace "@stable for overriding" with "@stable to override"
For compliance with the new version of the table interface policy
(T255803).

This patch was created by an automated search & replace operation
on the includes/ directory.

Bug: T257789
Change-Id: I5ffbb91882ecce2019ab644839eab5e8fb8a1c5f
2020-07-13 10:57:12 +02:00
daniel
61f7054636 Mark media handling based classes as stable for subclassing
Bug: T247862
Change-Id: I1737e43e291e41514a78a285315fcce73686dcea
2020-07-09 08:11:19 +00:00
Aaron Schulz
84fbe50b53 filerepo: fix return type of FileRepo::streamFileWithStatus()
Change-Id: Ibb4610630203e22d921189699f6c51298212d5d3
2019-04-20 07:12:38 +00:00
Umherirrender
b233e9d188 Move MediaTransformOutput classes to own files
Change-Id: I1c676f18101250ffc28ea412213d568c5a4f527d
2019-03-30 12:23:14 +01:00
Gilles Dubuc
e83e1fc1ee Add support for Element Timing API
https://github.com/WICG/element-timing

Bug: T216598
Change-Id: Ieda41f5074784957760c17dc15f7c891e56b6795
2019-03-20 09:54:02 +01:00
Gilles Dubuc
1852681bad Fix typo in Priority Hints static variable name
Bug: T216499
Change-Id: I444292afd1b8fcc81e7cf204f82ed512f53bcc85
2019-03-04 09:46:56 +01:00
Gilles Dubuc
8e11c5dabc Add Priority Hints support
When the option is enabled, the first non-icon
thumbnail encountered has a "high" importance.

Bug: T216499
Change-Id: I8d3c1b3e2d136ba16bd7de4809ee3ca63ab462fe
2019-02-25 18:14:59 +01:00
Gilles Dubuc
4a79eefc78 Make thumbnail image decoding async
This is a browser hint indicating that decoding of the image can be done
asynchronously (instead of synchronously during the image's onload event).
Marking decoding as async enables the browser to display any other
non-image content that might be waiting to be rendered, without waiting
for the image to be decoding. This should allow text to appear sooner in
some situations, where the browser would have otherwise waited to
bundle its rendering with an image. The final result (non-image + image
content being displayed) will happen at the same time as before.

Given how text-heavy wiki context usually is, it makes sense to allow
users to see the text sooner in some situations, so they can start reading.

https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/decoding
https://html.spec.whatwg.org/multipage/images.html#decoding-images

Bug: T212124
Change-Id: I3d738eba016bad486194f032a47ac6312f61c34e
2018-12-20 13:20:54 +01:00
Alangi Derick
75dffe7cac media: Add missing return to MediaTransformOutput::streamFile
Change-Id: Icf3999ae1a70dc2e702680d9b8c542c0f16f3a17
2018-12-03 15:54:54 +00:00
Brian Wolff
89b21847e1 Start working on phan-taint-check warnings. Fix minor escaping issues.
This fixes 26 of the phan-taint-check warnings on MW core. Some
are outright fixed, others are false positives that were suppressed.

This really only covers some of the easy ones. There are still
314 warnings to go.

Change-Id: I30463bc3a09fd4324d190de8533f51784764dd3a
2018-07-12 03:26:59 +00:00
Umherirrender
130ec2523d Fix PhanTypeMismatchDeclaredParam
Auto fix MediaWiki.Commenting.FunctionComment.DefaultNullTypeParam sniff

Change-Id: I865323fd0295aabd06f3e3c75e0e5043fb31069e
2018-07-07 00:34:30 +00:00
Bartosz Dziewoński
485f66f174 Use PHP 7 '??' operator instead of '?:' with 'isset()' where convenient
Find: /isset\(\s*([^()]+?)\s*\)\s*\?\s*\1\s*:\s*/
Replace with: '\1 ?? '

(Everywhere except includes/PHPVersionCheck.php)
(Then, manually fix some line length and indentation issues)

Then manually reviewed the replacements for cases where confusing
operator precedence would result in incorrect results
(fixing those in I478db046a1cc162c6767003ce45c9b56270f3372).

Change-Id: I33b421c8cb11cdd4ce896488c9ff5313f03a38cf
2018-05-30 18:06:13 -07:00
Fomafix
73a514b574 Remove superfluous spaces and semicolons in comments
Change-Id: Ib4b452f1843ec250c8c1fcc2a738d80726b6135d
2018-02-05 19:05:57 +00:00
Brad Jorsch
645266fe3e Fix MediaTransformError message handling
Give access to the raw Message instead of only to the HTML or text in
the RequestContext language.

Pass Message objects instead of strings from calling ->text() as the
parameters of Messages so if the outer Message's language is changed
things get parsed sensibly.

Change-Id: Ibd6c1217b6fed839c888b66e02900f8e21ed3e6b
2016-11-30 10:56:03 -05:00
Gilles Dubuc
80c1e8343e Serve 400 instead of 500 when invalid thumbnail parameters are requested
This was requested because of 0px thumbnail requests, but there are
other cases where parameters are detected as invalid and 400 is
semantically more correct than 500 in that situation.

Bug: T147784
Change-Id: I4d24a93e655f04d8119e77798d5df5a45caaafcf
2016-11-29 09:50:42 +01:00
Matthias Mullie
8c32946ca1 Exclude duplicate srcset urls
Bug: T135550
Change-Id: I956dc155426739d60052a0dc77dafdf0414d5bd7
2016-07-20 12:16:47 +02:00
Reedy
b5656b6953 Many more function case mismatches
Change-Id: I5d3a5eb8adea1ecbf136415bb9fd7a162633ccca
2016-03-19 00:20:58 +00:00
Kunal Mehta
6e9b4f0e9c Convert all array() syntax to []
Per wikitech-l consensus:
 https://lists.wikimedia.org/pipermail/wikitech-l/2016-February/084821.html

Notes:
* Disabled CallTimePassByReference due to false positives (T127163)

Change-Id: I2c8ce713ce6600a0bb7bf67537c87044c7a45c4b
2016-02-17 01:33:00 -08:00
Gergő Tisza
c230675585 Log errors in thumb.php
Add new streamFileWithStatus() methods to FileRepo and
MediaTransformOutput that can be used to get more detailed error
information on failure. The historic streamFile() methods become sinple
wrappers to the new methods. Thumb.php is changed to use the
streamFileWithStatus() methods so that failure reasons can be logged.

Change-Id: I3088cde2044a7ff00841e53ca252d0b222c8b518
2015-11-06 19:08:24 +00:00
umherirrender
cf5f6414ce Add better error message for files which exceeds $wgMaxImageArea
Added a TransformTooBigImageAreaError to allow setting an extra message.
Added also size-*pixel messages to show the value of $wgMaxImageArea
with some formatting.

This error is still throwing for all files, to fix bug T34387 this needs
a follow up with a proper check. I am not sure, if a File::isLocal() is
okay, because files from a DBForeignRepo maybe transformed on the same
server, so the check needs to be done also for this. For APIForeignRepo
the check is done on the foreign server.

Change-Id: Ieba12e424c8bddb1961a30d3f9ea5c8ff241abb5
2014-12-15 08:25:04 +00:00
jenkins-bot
32d0ab4d4f Merge "Always set a title on images when provided" 2014-12-12 19:25:00 +00:00
Jackmcbarn
4a46d001c5 Always set a title on images when provided
If an image has a title but isn't linked, set the title on the image
itself rather than not setting it at all.

Bug: T23454
Change-Id: I6302246cf28c84ade805a6a7d4a5e131b6f42e86
2014-12-12 19:17:23 +00:00
Aaron Schulz
e369f66d00 Replace wfRunHooks calls with direct Hooks::run calls
* This avoids the overhead of an extra function call

Change-Id: I8ee996f237fd111873ab51965bded3d91e61e4dd
2014-12-10 12:26:59 -08:00
lekshmi
9ca72fe985 MediaTransformOutput: Allow <img> alt value to be "0"
Due to use of empty(), the alt and query value was stripped and
replaced with an empty string if the input was "0".

Bug: 38910
Change-Id: I1aef143fc45eb1357e200ad2fcb488dc4876ffbd
2014-11-02 19:00:02 +01:00
umherirrender
dd8921c9d9 Cleanup some docs (includes/[m-r])
- Swap "$variable type" to "type $variable"
- Added missing types
- Fixed spacing inside docs
- Makes beginning of @param/@return/@var/@throws in capital
- Changed some types to match the more common spelling

Change-Id: I8ebfbcea0e2ae2670553822acedde49c1aa7e98d
2014-07-24 19:43:25 +02:00
Aaron Schulz
5255476305 Fixed "file already exist" optimization in File::transform()
* Previously, the resulting thumbnail did not handle hasFile() and
  stream() properly. This effected doCachedWork() in thumb.php

Change-Id: I8fd025204b5b41472be6c09924892fe8ee9dd260
2014-05-13 16:07:15 -07:00
umherirrender
23bb3d1cb4 Follow-Ups to "Fixed some @params documentation"
Fix of inline comments of the following patch sets:
Follow-Up: I0056b4a8df243cfc0c5f25378de48f7a35170aca
Follow-Up: I7f605aa9e117b5fd80d9b1440864fe526d2b14a5
Follow-Up: I3622f216a2ca8ac1b5e51892be9f98665f65bc36
Follow-Up: I6627ba0e76d3577c40bf2473e0f78a5ad7368634
Follow-Up: Id75b5ecf648ca50f955b3bde3307c82c4366b102
Follow-Up: I4ca5231119f33039d91da3b57a41cd40719a576b

Change-Id: Id9bbe84b2820e9db44af5783411e955f55f643d4
2014-04-23 13:39:49 +02:00
umherirrender
8ad1c92441 Fixed some @params documentation (includes/*)
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.
Also added some missing @param.

Change-Id: I7f605aa9e117b5fd80d9b1440864fe526d2b14a5
2014-04-20 21:16:57 +02:00
Gilles Dubuc
29044d760f Expose thumbnail file to extensions
This is needed by Media Viewer in order to display a placeholder
image as soon as possible

See https://gerrit.wikimedia.org/r/#/c/121613/

Change-Id: I3dfa80b02073984dc2d3d7784cb3744b7e4e2cc8
Mingle: https://wikimedia.mingle.thoughtworks.com/projects/multimedia/cards/293
2014-03-28 11:09:36 +01:00
Siebrand Mazeland
37bc4ec3dd Update documentation for media related classes
Change-Id: I7a9c8d59f88c68dc3835cb8a18f22a77cd7890fc
2013-12-06 23:03:06 +01:00
jenkins-bot
665f171a18 Merge "Add no-dimensions option to MediaTransformOutput::toHtml" 2013-12-06 21:44:45 +00:00
Juliusz Gonera
b23e03a9d6 Add no-dimensions option to MediaTransformOutput::toHtml
Skips width and height attributes (useful if set in CSS).

Change-Id: Ib52182f1a56b71e381b1faa767ebad19ba92889c
2013-12-06 13:31:15 -08:00
Siebrand Mazeland
ea7c809ec7 Declare visibility on class props of MediaTransformOutput and MediaTransformError
Change-Id: I5d8561a4e0d502037bcf0a5188272f49177f8e45
2013-12-05 14:08:49 +01:00
Siebrand Mazeland
370101602c Break long lines in media related classes
Change-Id: I94653b4cde14f75180dae795d1fdaa1b073ec1d1
2013-12-05 12:33:18 +01:00