Commit graph

102 commits

Author SHA1 Message Date
Brad Jorsch
0facbe3e3d Try harder to avoid parser cache pollution
* ParserOptions is reorganized so it knows all the options and their
  defaults, and can report whether the non-key options are at their
  defaults.
* Definition of the "canonical" ParserOptions (which is unfortunately
  different from the "default" ParserOptions) is moved from
  ContentHandler to ParserOptions.
* WikiPage uses this to throw an exception if it's asked to cache
  with options that aren't used in the cache key.
* ParserCache gets some temporary code to try to avoid a massive cache
  stampede on upgrade.

Bug: T110269
Change-Id: I7fb9ffca96e6bd04db44d2d5f2509ec96ad9371f
Depends-On: I4070a8f51927121f690469716625db4a1064dea5
2017-06-05 14:17:28 +00:00
jenkins-bot
aa3319c4c0 Merge "Miscellaneous indentation tweaks" 2017-02-28 18:38:36 +00:00
Bartosz Dziewoński
ecdef925bb Miscellaneous indentation tweaks
I was bored. What? Don't look at me that way.

I mostly targetted mixed tabs and spaces, but others were not spared.
Note that some of the whitespace changes are inside HTML output,
extended regexps or SQL snippets.

Change-Id: Ie206cc946459f6befcfc2d520e35ad3ea3c0f1e0
2017-02-27 19:23:54 +01:00
James D. Forrester
9635dda73a includes: Replace implicit Bugzilla bug numbers with Phab ones
It's unreasonable to expect newbies to know that "bug 12345" means "Task T14345"
except where it doesn't, so let's just standardise on the real numbers.

Change-Id: I6f59febaf8fc96e80f8cfc11f4356283f461142a
2017-02-21 18:13:24 +00:00
Stanislav Malyshev
fb44ca9094 Add GetContentModels hook to allow extensions to enumerate dynamic content models.
Bug: T155139
Change-Id: Icb41c470dfa4638676eb3ba0e74f437e85acc792
2017-02-02 12:00:42 -08:00
Stanislav Malyshev
8de54f8349 Add content model indexing
Bug: T156371
Change-Id: I1514f9db70870ec05b30153cc56558af0a28b8c9
2017-01-26 15:42:52 -08:00
rlot
99800a9e03 Removed deprecated ContentHandler hooks.
Plus removed unused "ContentHandler::runLegacyHooks"

Bug: T154498
Change-Id: Ie398fd4e06d3e286fe8e24112d0c8b4ac7d883dc
2017-01-18 21:19:17 +00:00
mynk-96
037c58d9b1 moved Exception classes from ContentHandler.php
Bug: T153243
Change-Id: Ieb37b34e76441c5f68ec565c43421c50ac9be7e7
2016-12-26 14:31:39 +00:00
Reedy
11a0f7d858 Remove ContentHandler::deprecated()
Now unused, replaced with wfDeprecated() calls specifically

Bug: T145728
Change-Id: Id269bcd2958f23ecbc7f4f06a8c3ab5873c53117
2016-10-12 23:41:18 +00:00
Reedy
dee0d1ce4e Mark 3 hooks deprecated by ContentHandler as such
ArticleViewCustom, EditPageGetDiffText and EditPageGetPreviewText hooks
now marked as deprecated in 1.21.

TitleIsCssOrJsPage and TitleIsWikitextPage deprecation version dropped
from 1.25 to 1.21 to match other hooks.

Bug: T145728
Bug: T147382
Bug: T147383
Bug: T147384
Bug: T147385
Bug: T147386
Change-Id: I59b6b9f253857eb1040dad879a71e0d8cf141553
2016-10-05 23:41:14 +00:00
Fomafix
a4645dc202 Directly use Language::factory instead of wfGetLangObj
figureMessage always returns a valid language code.

Change-Id: Ifa11ca278e7a6f49781846bb6d1eec94669999f3
2016-09-24 12:18:13 +02:00
Brian Wolff
386bed1ffd Allow undoing edits that change content model if top
This allows people to revert content model changes
using the undo button, provided that we are undoing
the topmost edit (Otherwise it may get confusing
if you try to undo an edit in the middle of the
history that changes content model).

Bug: T145044
Change-Id: Ic528f65d0dc581c4e241a22f19c512e02aeaa9e7
2016-09-08 20:19:40 -07:00
Kunal Mehta
a94311363f ContentHandler: Remove entirely-unused mModelName property
This property isn't documented anywhere nor used anywhere.

Change-Id: I37b20260c6abbec49364b31183dd2337be44846b
2016-09-07 23:10:12 -07:00
Kunal Mehta
35e511086b Don't throw exceptions in ContentHandler::getUndoContent()
The method is not documented to throw any exceptions, and already
returns false on failure, and it can be seen as a failure case when the
content models are not the same.

Bug: T145044
Change-Id: I0394d19cd65f9dd3ee350d2cde95afb11ab9e7f4
2016-09-07 20:52:19 -07:00
Aaron Schulz
950cf6016c Rename DB_SLAVE constant to DB_REPLICA
This is more consistent with LoadBalancer, modern, and inclusive
of master/master mysql, NDB cluster, and MariaDB galera cluster.

The old constant is an alias now.

Change-Id: I0b37299ecb439cc446ffbe8c341365d1eef45849
2016-09-05 22:55:53 -07:00
jenkins-bot
4b70bc2b28 Merge "Extract ParserOutput search index data fields from WikiTextContentHandler" 2016-08-19 18:40:17 +00:00
aude
64ee3d3269 Extract ParserOutput search index data fields from WikiTextContentHandler
Bug: T142491
Change-Id: I69b010b893135e53fac7f16f4b927b8fbcba06d2
2016-08-19 09:26:17 -04:00
Kunal Mehta
4b5c1745ec Allow marking legacy ContentHandler hooks as deprecated
Instead of having a single development flag that controls whether all
the hooks emit warnings, use the standard hook deprecation method to
mark individual hooks as deprecated once we have determined that their
usage is minimal.

Change-Id: I9a00ae131cb7f609c1d44926d1f6547089f70c34
2016-08-18 17:43:49 +00:00
Stanislav Malyshev
add1ebe2ab Make content handlers assemble content for search
Bug: T89733
Change-Id: Ie45de496ecc826211d98eea3a410c7639b4be0a4
2016-07-26 13:08:45 -07:00
Stanislav Malyshev
86b55ad03c Create API to allow content handlers to handle structured data definitions
Change-Id: Ia1738803c42f6114575587c1c838fec62b6f54aa
Bug: T89733
2016-07-06 13:41:20 -07:00
Thiemo Mättig
c415767e0e Add actual documentation for ContentHandler::getActionOverrides
Change-Id: I7fd803204ad137dd3510ea321ff7e6fa11d910c0
2016-05-18 15:49:26 +02:00
Aaron Schulz
bd863cc1f3 Avoid master queries in getAutoDeleteReason()
This largely used the slaves anyway, but not for certain bits.

Bug: T92357
Change-Id: I909a14b25a959ee28960aa7aa3d799c5f10988d1
2016-04-28 14:26:38 -07:00
Reedy
4277983737 Fix undefined $modelId in MWUnknownContentModelException
Change-Id: I13b93cc1e9d7c050765fab5d8de4e17ca4319dc1
2016-03-14 21:57:03 +00:00
Thiemo Mättig
da9cf2df1a Make use of …::class feature in ContentHandler/DatabaseUpdater
Change-Id: Ic0d51a41c50f52e1fbdab58e3b63319caa5c7d1d
2016-03-14 16:54:50 +01:00
aude
437f60f358 Add ContentHandler::supportsCategories method
and check for this in WikiPage::doEditUpdates before
inserting a new CategoryMembershipChangeJob.

Some content models like the Wikibase ones do not
have categories and it's wasteful to add these jobs
for all Wikibase edits.

Bug: T126977
Change-Id: I2c54a4ba1546445dc41101e15cb83a2c6cc2b1c9
2016-03-02 15:20:56 +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
Bene
9e3e3306b0 Allow callbacks to be passed to $wgContentHandlers
Change-Id: Icf980313a6e7fcc83f5183c450b0a824353596b8
2016-02-06 09:48:11 +01:00
This, that and the other
cdc36570ea Improve error message for missing content model on import
I was initially going to refactor out the error message into Import.php,
but it quickly became apparent that WikiImporter's error handling needs a
LOT of work. In particular, to localise the error message into the user's
language is sadly non-trivial.

Although not used currently, the MWUnknownContentModelException subclass
will help with error handling improvements in the future.

Bug: T49270
Change-Id: I9f53c9d6a8a2ea842cb2ba94d4131e10a8b08f5d
2015-10-10 19:51:20 +11:00
Vivek Ghaisas
c54766586a Fix issues identified by SpaceBeforeSingleLineComment sniff
Change-Id: I048ccb1fa260e4b7152ca5f09b053defdd72d8f9
2015-09-26 23:06:52 +00:00
Kunal Mehta
fa31bf1675 Add Special:ChangeContentModel
Special:ChangeContentModel allows for users with the 'editcontentmodel'
right to change the content model of a page.

Visiting Special:ChangeContentModel will contain an input field for a
page title. The user will then be sent to
Special:ChangeContentModel?pagetitle=<input> where the page title is
read only, with a content model selector and optional reason field.

The special page only allows converting between content models that
extend TextContent for simplicity. Advanced conversions should be done
via the API.

All content model changes via the special page or API generate a null
revision in the page history and a log entry at
Special:Log/contentmodel. The log entry has a revert link for
convenience (like the move log).

Bug: T72592
Co-Authored-By: Lewis Cawte <lewis@lewiscawte.me>
Change-Id: I296a67c09fcbc880c8c3a648eb5086580725ea46
2015-06-30 13:14:50 -07:00
Ori Livneh
b0a79e9245 Rename WikiPage::isParserCacheUsed to WikiPage::shouldCheckParserCache
'isParserCachedUsed' implies that the parser cache usage has already occurred,
and obscures the true purpose of this method, which is to determine whether or
not the requested page *should* be looked up in the parser cache.

Only usage in extensions is in TextExtracts, which I changed to be both
backward- and forward-compatible in If5d5da8eab13.

Change-Id: I7de67937f0e57b1dffb466319192e4d400b867de
2015-06-22 20:55:34 -07:00
Kunal Mehta
f6e5079a69 Use mediawiki/at-ease library for suppressing warnings
wfSuppressWarnings() and wfRestoreWarnings() were split out into a
separate library. All usages in core were replaced with the new
functions, and the wf* global functions are marked as deprecated.

Additionally, some uses of @ were replaced due to composer's autoloader
being loaded even earlier.

Ie1234f8c12693408de9b94bf6f84480a90bd4f8e adds the library to
mediawiki/vendor.

Bug: T100923
Change-Id: I5c35079a0a656180852be0ae6b1262d40f6534c4
2015-06-11 18:49:29 +00:00
jenkins-bot
4e90d55fdc Merge "content: Recognise .json as JsonContent in User and MediaWiki namespace" 2015-06-03 16:25:09 +00:00
Chad Horohoe
e66370b637 ContentHandler: remove last wfRunHooks() call in includes
Change-Id: I074d886e7021a965a9dc32e74974e9882e77930e
2015-04-27 21:43:11 -07:00
aude
2513086ec1 Add supportsDirectEditing methods to ContentHandler
This adds supportsDirectApiEditing and
supportsDirectEditing methods to ContentHandler. Both
return false by default for the ContentHandler base
class, and true for TextContentHandler and it's
derivatives. (everything in core)

Extension content types that directly extend
AbstractContent / ContentHandler, often / generally don't
support direct editing. EntityContent in Wikibase
and Flow boards are the two such content types currently
in gerrit-hosted extensions.

The use and direct settings of the allowNonTextContent
member variable is replaced by enableApiEditOverride and
a setter for that. The only place allowNonTextContent is
used in all of Wikimedia-hosted git repos is core itself
(EditPage and ApiEditPage), so should be safe to make
this change.

With this change, Wikibase can remove its ApiCheckCanExecute
hook handler that disallows editing there, and MobileFrontend
could check if direct editing is allowed before enabling it's
editing features, instead of Wikibase having to add
MobileFrontend hook handlers to disable the features.

Bug: T96382
Change-Id: I276cd6ecedf38108f1f2be16b38e699e8c5d2d0c
2015-04-17 15:55:20 +00:00
jenkins-bot
61b2f07f6b Merge "Add hook for custom difference engine (WikEdDiff)" 2015-02-23 12:32:10 +00:00
Timo Tijhof
3b44da3261 content: Recognise .json as JsonContent in User and MediaWiki namespace
Bug: T76554
Change-Id: I45200f4651d7200cfad541cdd21cc625c711e81f
2015-01-05 20:05:55 +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
Timo Tijhof
00f7c07c02 content: Deprecate TitleIsCssOrJsPage and TitleIsWikitextPage hooks
They're currently documented as a 'compatibility hook'
in docs/contenthandler.txt. No longer used in any Wikimedia-hosted
git repository.

Superseded by the ContentHandlerDefaultModelFor hook.

Change-Id: I212230da7d6080cf500f930d4aa5a9024959d5f9
2014-12-03 04:11:33 +00:00
cacycle@gerrit.wikimedia.org
ef55b2c7b5 Add hook for custom difference engine (WikEdDiff)
The new Extension:WikEdDiff is a custom inline difference engine.
There is currently no hook to integrate custom difference engines.
This patch adds a new hook called 'GetDifferenceEngine' in
/includes/content/ContentHandler.php in function
'createDifferenceEngine()'.

Passed variables:
$context: IContextSource context to be used for diff
$old: Revision ID to show and diff with
$new: Either a revision ID or one of the strings 'cur', 'prev' or 'next'
$refreshCache: If set, refreshes the diff cache
$unhide: If set, allow viewing deleted revs
&$differenceEngine: output parameter, difference engine object to be used
for diff

If the hook handler returns false, a valid difference engine object is
returned in the passed-by-reference variable $differenceEngine.
If the handler returns true, the default engine is used as fallback.

The specified diff engine class will typically be an extension of the
class DifferenceEngine (includes/diff/DifferenceEngine.php) with
modifications, e.g. of function generateTextDiffBody() and
__construct() (without deprecated parameter $rcid).

Also fixes a missing declaration in DifferenceEngine that is required for
extending this class.

Bug: 71916
Change-Id: I9da63c1ceb339bfeba7beddc712be51977b95f65
2014-11-13 18:02:29 +00:00
umherirrender
921979b0bc Remove wrong type from @param on ContentHandler::merge3
When the method has a type hint of Content, there is no way to pass a
string, so remove that type from @param

Change-Id: Ifbf89d52cfa3ea8801c94f2d1b336e784133cce9
2014-08-14 19:39:01 +00:00
florianschmidtwelzow
8012165a22 Fix getAutosummary for create blank page
Fixes for change to enable the creation of blank pages. Added test
for this case.

Follow up: I3457c36a909d1dbfaeed04a1f0568c69e0ef3386

Bug: 57238
Change-Id: Id52be6cbe22c6098d1c0824d7a7848579aa05a84
2014-07-27 12:22:07 +00:00
Étienne Beaulé
c3fcaba02f Enable the creation of empty pages
This change enables the direct creation of empty pages without needing
to use a work-around (such as "{{subst:ns:0}}"). A warning is added as
the message "blankarticle" to request confirmation that the empty page
was meant to be blank. A automatic edit summary has been added when
creating a blank page. The message is: "autosumm-newblank."

The API has been updated to permit the creation of empty pages, when
"text" is null, but not non-existant.

Unit tests have also been added to test these features.

Bug: 57238
Bug: 65206
Change-Id: I3457c36a909d1dbfaeed04a1f0568c69e0ef3386
2014-07-25 23:26:18 -04:00
umherirrender
7ff005407e Remove colon after @deprecated/@param/@todo/@note
Change-Id: I4e66dad85eecf7e8e03ac760af900395e1bc11b6
2014-07-24 11:30:25 +02:00
umherirrender
abfa0d7854 Standardize @todo
Always use lowercase @todo
Changed some "@FIXME" to "@todo FIXME: "

Change-Id: I016d1f9511e6f3bbd22427f0fffeccd77ab5e0db
2014-07-23 22:27:20 +02:00
umherirrender
779eb6c16e @singe -> @since in doc
Change-Id: I25fcd1930bd719af2c46c3540f4a48ab44d47ded
2014-07-04 22:53:47 +02:00
jenkins-bot
e87a6ad62d Merge "Introduce ContentHandler::exportTransform()" 2014-05-27 18:31:05 +00:00
daniel
ee0ff556d4 Introduce ContentHandler::exportTransform()
ContentHandler::exportTransform() allows content handlers to apply
transformations upon export, such as conversion of legacy formats or
filtering of internal data.

Note that the transformation is applied to serialized content, since
the exporter will generally not unserialize the content blob to an
intermediate form before writing it to the dump. Implementations
may choose to unserialy, then transform and re-serialize.

Bug: 65256
Change-Id: Ic55a8bd8bea13041000b176c7c02c7c5ced76f6d
2014-05-20 19:21:49 +02:00
daniel
5ca37ababd Introduce ContentHandler::importTransform.
ContentHandler::importTransform allows ContentHandler
implementations to apply transformations on page content
upon import. Such transformatiosn may by useful to update
from legacy formats, apply ID rewriting, etc.

Note that the transformation is done on the serialized content.
This allows for a "raw" import implementation that writes
improted blobs directly into a blob store without unserializing
them into an intermediary representation. Implementations may
choose to unserialize, transform, and then re-serialize.

Bug: 65256
Change-Id: I290fdf5589af43def8b3eddb68b5e1c23f6124e8
2014-05-20 19:12:35 +02:00
Brion Vibber
0decf94d10 tyop fxi
Change-Id: I05cd37b3dab7d0eeffb4df81f906fd1e881b7f9f
2014-05-11 21:39:23 +02:00