Commit graph

1385 commits

Author SHA1 Message Date
Bartosz Dziewoński
c161c46d26 Improve code suffering from PHP 5.3's lack of support for foo()[]
I searched for /\$(\S+) = (.+?\(.*?\);)\n.*?\$\1\[/, ignored
everything involving isset(), unset() or array assigments, then
skimmed through the remaining results and changed things where they
made sense. These changes were not automated, so please review them.

Change-Id: Ib37b4c66fc57648470f151ad412210b3629c2538
2016-02-28 22:49:20 +01:00
Max Semenik
89710f4ba0 Fix a PHP 5.5 TODO
Change-Id: Ieb3bc27e4f33e170b2217ab8eab58f5309083e80
2016-02-22 17:03:51 -08:00
umherirrender
74534f9ba6 Fix unmatched @codingStandardsIgnore in parser folder
Fix outstanding phpcs errors

Change-Id: I7b857be88354f2ffa27d76406253ec9e9710b91d
2016-02-17 21:26:30 +01: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
Florian
d237380021 Fix not-loaded DbPageLanguage when Title::getPageLanguage() get's called
If the Title object isn't the title of the current viewed WikiPage, the page_lang
field of the database isn't requested. This results in the problem, that
Title::getPageLanguage() always returns the default content language, even if
the page language is different (changed with Special:PageLanguage, if
wgPageLanguageUseDB is true). That is problematic for the Translate extension,
which relies on the correct page language.

This change makes sure, that getPageLanguage() always return the correct page
language. If the page language isn't loaded already, Title::getPageLanguage()
now does a database lookup (if $wgPageLanguageUseDB is true) to get the correct
page language. It will use LinkCache for the page_lang field.

Bug: T121666
Change-Id: I0ae5ea39f7a124ed427ca5dfb26c1a116b27a94e
2016-02-16 20:37:40 +00:00
Ricordisamoa
c138dc4ee3 Stop doing $that = $this in includes/parser
Closures support $this as of PHP 5.4

Change-Id: Iace7ef43b17e8100f6bd71b4e23bad39cba87c0d
2016-02-11 09:40:54 +01:00
Gergő Tisza
110fbf892c Add @since to ParserOptions::newFromAnon
Change-Id: I0e70904fb908fa9ed5c3c6fc30df9d02c742e29e
2016-02-10 06:36:53 +00:00
Brad Jorsch
783fb29fbf Use stub threshold from ParserOptions when parsing
Linker::linkAttribs() needs the stub threshold to determine the classes
in some cases. For the code path from Parser → LinkHolderArray → Linker,
we can pass down the correct threshold from ParserOptions instead of
pulling a potentially-different threshold from $wgUser.

Bug: T124367
Change-Id: I16b9d6c3044ae60d5a7fd340569c019ffc4b2a55
2016-02-08 19:04:50 +00:00
jenkins-bot
733bafe46f Merge "Add User::isSafeToLoad() and ParserOptions::newFromAnon()" 2016-02-04 06:08:07 +00:00
Bartosz Dziewoński
0fd1a6b62b Merge "Revert "Preprocessor: Don't allow unclosed extension tags (matching until end of input)"" 2016-02-04 01:10:58 +00:00
Legoktm
543f46e9c0 Revert "Preprocessor: Don't allow unclosed extension tags (matching until end of input)"
This reverts commit f51d0d9a81.

Breaks templates with non-closed </noinclude> tags, which
were previously acceptable.

Bug: T125754
Change-Id: I8bafb15eefac4e1d3e727c1c84782636d8b82c2b
2016-02-04 00:38:35 +00:00
Brad Jorsch
35c38ce319 Add User::isSafeToLoad() and ParserOptions::newFromAnon()
Useful for avoiding "User::loadFromSession called before the end of
Setup.php".

Bug: T124367
Change-Id: I0b018a623fc833ca95d249ee21667a8f5690d50e
2016-02-03 21:45:56 +00:00
Arlo Breault
55313f4eaf Remove use of explodeMarkup
* At that point, element attributes are already escaped so it serves no
   purpose. Before `doTableStuff` is called, `Sanitizer::removeHTMLtags`
   has been invoked which calls `Sanitizer::fixTagAttributes` which
   calls `Sanitizer::safeEncodeTagAttributes` and finally gets down to
   `Sanitizer::safeEncodeAttribute`, with the goal of "extra armoring
   against further wiki processing."

Change-Id: Ieeb9b21148c2909eb839d13195d7d10012b48e3b
2016-01-29 11:15:29 -08:00
jenkins-bot
8e15e679b6 Merge "Last caption wins in gallery" 2016-01-25 12:11:54 +00:00
Tim Starling
914f6a62a6 Introduce ParserOutput::getRawText()
Avoid polluting the parser cache with skin-dependent output from
Skin::doEditSectionLink() by introducing getRawText(), which provides
access to the uncooked text. Use this in
WikitextContent::fillParserOutput() which is the primary offender
judging by the debug logs (see referenced bug).

Bug: T124356
Change-Id: Ia9e1e4a6dc3a26f88eeebc64eed023ff20c53d58
2016-01-25 14:50:27 +11:00
Arlo Breault
63aeabeff1 Last caption wins in gallery
* Currently, for images:

   [[File:Foobar.jpg|hi|alt=100|ho]]

   caption: ho

   but for galleries:

   <gallery>
   File:Foobar.jpg|hi|alt=100|ho
   </gallery>

   caption: hi|ho

 * This patch brings some consistency to them.

Change-Id: I3b73189b27cc35fade4809477cf18779b953aa3b
2016-01-22 11:22:06 -08:00
Bartosz Dziewoński
f51d0d9a81 Preprocessor: Don't allow unclosed extension tags (matching until end of input)
I think it's saner to treat this as invalid syntax, and output the
mismatched tag code verbatim. The current behavior is particularly
annoying for <ref> tags, which often swallow everything afterwards.

This does not affect HTML tags, though. Assuming Tidy is enabled, they
are still auto-closed at the end of the page content.

Related to T17712 and T58306. I think this brings the PHP parser closer
to Parsoid's interpretation.

It reduces performance somewhat in the worst case, though. Testing with
https://phabricator.wikimedia.org/F3245989 (a 1 MB page starting with
3000 opening tags of 15 different types), parsing time rises from
~0.2 seconds to ~1.1 seconds on my setup. We go from O(N) to O(kN),
where N is bytes of input and k is the number of types of tags present
on the page. Maximum k shouldn't exceed 30 or so in reasonable setups
(depends on installed extensions, it's 20 on English Wikipedia).

To consider:
* Should we keep previous behavior for unclosed <includeonly> /
  <noinclude>? This would be particularly disruptive for these if
  someone relied on the old behavior, and they're already
  special-cased in places.
* Unclosed <pre> tags are now treated as HTML tags, and are still
  displayed as preformatted text, but without suppressing wikitext
  formatting.

Change-Id: Ia2f24dbfb3567c4b0778761585e6c0303d11ddd0
2016-01-21 04:22:34 +00:00
IoannisKydonis
44f16d2fb8 Remove Deprecated methods from ParserOutput.php
Remove ParserOutput::getSecondaryDataUpdates and
ParserOutput::addSecondaryDataUpdate
Deprecated since 1.25, slated for removal in 1.26 but not done.

Change-Id: Id5e41003fe47b55f493f636c69c9b31932cde9b8
2016-01-18 17:22:58 +00:00
IoannisKydonis
27769e3fe4 Remove ParserOutput::hasCustomDataUpdates()
Deprecated since 1.25, slated for removal in 1.26 but not done.

Change-Id: Ia198c3b5a55c794cfdd8a5e93521aff85468ff88
2016-01-17 12:58:57 +00:00
Jackmcbarn
bcb6429372 Fix protectionexpiry using the wrong page
Change-Id: I0d8cfd68a735fbcdd32a000ef47e6922a816968e
2016-01-14 12:10:33 -05:00
Reedy
13815fc4ff Linker::makeLinkObj() was removed
Change-Id: Id0fe255fd65403d02498f5a98292c560d39dd95a
2016-01-03 00:08:43 +00:00
umherirrender
54c1e18eec Remove various double empty newlines
The double empty newline is not needed between functions, variable or at
end of file

Change-Id: Ib866a95084c4601ac150a2b402cfa184ebc18afa
2015-12-27 18:55:12 +00:00
Brad Jorsch
2f95b102f5 Fix PPNode_Hash_Tree::getChildrenOfType return value
PPNode defines it as returning an array-type PPNode, not an array.

Change-Id: I9a6c5cea408aae449bfbf808d067837c4337c672
2015-12-17 22:18:14 +00:00
cenarium
a042808b91 Add magic word for protection expiry
This adds a magic word to get the protection expiry for a page for a
given action.
Usage is {{PROTECTIONEXPIRY:action}}.

Bug: T19354
Change-Id: Ia1a20e313781789480dc082bdc7f585c4f0e28df
2015-12-07 10:02:12 +00:00
umherirrender
5311afb6a4 phpcs: Assignment expression not allowed
Fix some "Assignment expression not allowed"

Found by tests:
https://integration.wikimedia.org/ci/job/mediawiki-core-phpcs/2736/consoleFull

Change-Id: Ibfc62b0aaa5c7fa63081edea3ef2b4d0dc984f85
2015-11-18 19:39:19 +01:00
jenkins-bot
0c8e0c66fe Merge "Move brace matching rules to Preprocessor class" 2015-11-03 11:24:03 +00:00
Ori Livneh
447f40d2e9 Move brace matching rules to Preprocessor class
Instead of declaring the array of rules within both Preprocessor_DOM:: and
Preprocessor_Hash::preprocessToXml(), declare it as a protected property of the
parent Preprocessor class.

Change-Id: I6193de66566c164fe85cdd6a88c04fa9c565f1a9
2015-11-03 02:57:05 +00:00
Aaron Schulz
17c91ad610 Replace newAccelerator() with getLocalServerInstance()
The name is clearer and more consistent, with simpler arguments.

Change-Id: I7205a99ce033e8b086a52cd02c8a721e99c84b1e
2015-11-02 21:39:08 +00:00
Tim Starling
eb40eb0f18 Client-side migration for empty li preservation
It is desirable in terms of user-friendly syntax to display an empty
list item if the user adds one to the source. However, we suspect that
this change will break the rendering of existing templates. So, preserve
the empty <li> element, but style it with display:none so that there is
no user-visible change. Changes can then be observed with a user script,
then eventually the CSS can be removed so that the desired behaviour will
be user visible.

This is imagined as a staged deployment of T89331, i.e. it is better to
resolve differences with Html5Depurate one at a time instead of
deploying it all at once.

The CSS module is specified in parser/MWTidy.php since the tidy driver
hierarchy is not meant to be so closely tied to the MW environment.

Bug: T49673
Change-Id: Ifb44b782c617240e3de73dcdf76c8737c7307d94
2015-10-28 23:35:18 +00:00
jenkins-bot
e05e4b111c Merge "resourceloader: Consistently refer to the framework as ResourceLoader" 2015-10-28 14:53:58 +00:00
Timo Tijhof
e8275758fe objectcache: Introduce IExpiringStore for convenient TTL constants
Also consistently use self:: instead of BagOStuff:: for constants
referenced within the BagOStuff class.

Change-Id: I20fde9fa5cddcc9e92fa6a02b05dc7effa846742
2015-10-28 04:07:25 +00:00
Timo Tijhof
afcfc3290c resourceloader: Consistently refer to the framework as ResourceLoader
Change-Id: Ia59e4eac9662723e80d62f7cfcb9e4292e3ee4de
2015-10-28 03:24:40 +00:00
Aaron Schulz
d355471f1a Make DateFormatter::getInstance use APC
Change-Id: Idfff805903bffcdd6ff8f2a3c1331ca63476933e
2015-10-26 00:59:10 -07:00
Kevin Israel
23ae30d61c Preprocessor: Use correct cache prefix for the subclass
Follows-up 1559be9f7a, which caused "Preprocessor" to be used as the
cache prefix for all subclasses, by using late static binding to access
the constant. Though use of that feature has been discouraged[1], this
change is a straightforward bug fix, and any improvements can be made
separately.

[1]: https://www.mediawiki.org/wiki/Manual:Coding_conventions/PHP#Late_static_binding

Change-Id: Ib25e1908a6373f6675659a0906e12d4a38af014c
2015-10-25 21:29:47 -04:00
Ori Livneh
1559be9f7a Consolidate common Preprocessor caching code
* Consolidate nearly-identical caching code in Preprocessor_DOM and
  Preprocessor_Hash by making Preprocessor an abstract class rather than an
  interface and by implementing Preprocessor::cacheSetTree() and
  Preprocessor::cacheGetTree().
* Cache trees for wikitext blobs that have length equal or greater to
  PreprocessorCacheThreshold. Previously they needed to be greater than
  PreprocessorCacheThreshold, so this changes the requirement by one character.
  I did it because it seems more natural.
* Modernize the code to use singleton service objects rather than globals.

We spend a lot of time in the Preprocessor, so it would be nice for this code
to be well-factored and clear.

Change-Id: Ib71c29f14a28445a505e12c774a24ad964330b95
2015-10-25 23:06:48 +00:00
Aaron Schulz
0fc6c8b592 Remove buggy b/c logic in Parser::disableCache()/updateCacheExpiry()
* Setting mCacheTime to -1 is for old callers that
  only check getCacheTime() instead of getCacheExpiry().
  Most of them are already broken (WikiLog/SemanticForms) as
  they check for -1 which is in fact never returned
  due to the TS_MW conversion in Parser::getCacheTime.
* By using -1, the value of page_links_updated can end up
  as 1969, which is confusing and broken.

Change-Id: I8809a4258eacff05992a2c27ade7f6a0c1731c51
2015-10-23 12:35:43 -07:00
daniel
d034329764 Clarify that ParserOutput::getDisplayTitle() returns HTML.
This change only improves documentation, it does not touch code.

For reference:
* CoreParserFunctions::displaytitle generates HTML, with &, < and so on
property escaped. OutputPage::setPageTitle() treats the input as wikitext,
which works for both plain text and HTML.

* Wikibase calls ParserOutput::setDisplayTitle() with HTML including <span>
structures.

In the API action=query&prop=pageprops returns HTML. There doesn't seem to
be a good place to document that fact, though.

Change-Id: I043b26b82f066abe2830a81d3bc073543b3748d8
2015-10-16 20:03:33 +02:00
umherirrender
c5ab19bf31 Use line comments for @codingStandardsIgnoreStart
In Preprocess_DOM.php and Preprocess_Hash.php the
@codingStandardsIgnoreStart is inside a doc comment, but phpcs does not
see this tag and does not ignore the error. Using line comments fix this
problems.

See
https://integration.wikimedia.org/ci/job/mediawiki-core-phpcs/842/console

Change-Id: Id0edf6edb2902466748165c2e820d2cf4b7fcf75
2015-10-07 20:15:31 +02:00
jenkins-bot
480f4e6f75 Merge "objectcache: Add BagOStuff::READ_VERIFIED flag to get()" 2015-10-05 23:13:24 +00:00
Aaron Schulz
54991403ff objectcache: Add BagOStuff::READ_VERIFIED flag to get()
* This lets multiwrite backends upgrade cached items
  to higher tiers using UPGRADE_TTL.
* This is useful for memcached/sql tiers or apc/memcached.

Change-Id: I34b30ce8b54f8de36429d48c80f6768aed310272
2015-10-05 16:03:00 -07:00
Amir E. Aharoni
c37d6549fd Fix Generic.Files.LineLength phpcs failure in 11 files under includes/
Bug: T102614
Change-Id: I0d759be6ef568c2c6f28606d3002484ad77a1830
2015-10-03 17:08:26 +00:00
jenkins-bot
10973705e0 Merge "Do not split parser cache if limitation is reached." 2015-10-01 03:45:23 +00:00
Brian Wolff
e4c016a208 Do not split parser cache if limitation is reached.
The warnings are only shown during preview. It seems silly to
split the parser cache for this. There should be no parser cache
pollution to just using the user language without registering it
for use.

See also: 889e988cce

Change-Id: Ib42e8885e23a3c8bef8cf72948359d71254064c3
2015-09-28 16:39:31 -06:00
umherirrender
be0d31ace0 Use variable documentation in Preprocessor_DOM.php
Instead of having comments behind variable declaration.

This also avoids mixed tabs and spaces at begin of line

Change-Id: Iba62430f4413fd52bac1d51f5c5df4cb6479284d
2015-09-28 19:48:33 +02:00
Amir E. Aharoni
4841ede9c3 Rewrite comments on member variables of ParserOutput as proper variables documentation
This also makes lines short enough to pass phpcs.

Bug: T102614
Change-Id: I11597bc052e8a8c2eaf4d60f7913e4186d0eb8e2
2015-09-28 11:22:23 +00:00
Vivek Ghaisas
c54766586a Fix issues identified by SpaceBeforeSingleLineComment sniff
Change-Id: I048ccb1fa260e4b7152ca5f09b053defdd72d8f9
2015-09-26 23:06:52 +00:00
umherirrender
c572d18661 Fixed spacing
- Removed space after cast
- Removed spaces in array index
- Removed double spaces
- Added spaces around string concat
- Fixed mixed tabs and spaces at begin of line

Change-Id: I38e849723f055d2d4c05cba72f5c245a28e8d5da
2015-09-26 20:44:54 +00:00
Amir E. Aharoni
bd30ccd795 Make lines shorter to pass phpcs in some files under includes/parser
This doesn't fix all the files under includes/parser -
some of them deserve their own patches.

Bug: T102614
Change-Id: I2fcbc19ee337e1b7db4635b5e5f324c651b4d144
2015-09-26 18:19:11 +00:00
jenkins-bot
f244389571 Merge "Load module mediawiki.page.gallery.styles for all ImageGalleries" 2015-09-24 18:22:29 +00:00
umherirrender
27700d276f Load module mediawiki.page.gallery.styles for all ImageGalleries
Move the added module from Parser.php to TraditionalImageGallery,
because there the gallerybox class is added to the html and at the
moment all core image galleries are extending the traditional one.

That brings the styles back for special pages like Special:NewFiles,
Special:MostImages and also on category pages with media files.

Follows Ib1aef04dc4fece78e6615386ecaef6a9f368f49e

Bug: T113511
Change-Id: I32697c2c65824d7622c1840330d6074ebb68b488
2015-09-24 16:46:47 +02:00