mediawiki-extensions-Visual.../includes/VisualEditorApiVisualEditorEditPostSaveHook.php
Kosta Harlan f035ce51f1 Introduce VisualEditorApiVisualEditorPostSaveHook
What:

Add hook that runs after a save attempt is made in ApiVisualEditorEdit.
The hook receives the same data available in ApiVisualEditorEdit, and
implementations of the hook can modify the API response.

Also introduce templated
parameters (https://www.mediawiki.org/wiki/API:Templated_parameters) in
the API parameters; this allows plugins to pass arbitrary data along
with their request using e.g. plugins=linkrecommendation&data-linkrecommendation=foo

Add ServiceWiring files, a PHP namespace, and a HookRunner class to
support the above changes.

Why:

VE plugins may wish to send additional data when saving an edit and take
action based on that data on the server-side. See for example the
AddLink plugin in I7a052f8e which sends annotation data, and then uses
the new hook to perform a database operation.

Change-Id: I392691475fbdcec766acbd832600e82efcb5bfe8
2021-04-30 20:50:01 +02:00

48 lines
1.7 KiB
PHP

<?php
namespace MediaWiki\Extension\VisualEditor;
use MediaWiki\Page\ProperPageIdentity;
use MediaWiki\User\UserIdentity;
/**
* VisualEditorApiVisualEditorEditPostSaveHook
*
* @file
* @ingroup Extensions
* @copyright 2011-2021 VisualEditor Team and others; see AUTHORS.txt
* @license MIT
*/
interface VisualEditorApiVisualEditorEditPostSaveHook {
/**
* This hook is executed in the ApiVisualEditorEdit after a action=save attempt.
*
* ApiVisualEditorEdit will wait for implementations of this hook to complete before returning a response, so
* if the implementation needs to do something time-consuming that does not need to be sent back with the response,
* consider using a DeferredUpdate or Job.
*
* @param ProperPageIdentity $page The page identity of the title used in the save attempt.
* @param UserIdentity $user User associated with the save attempt.
* @param string $wikitext The wikitext used in the save attempt.
* @param array $params The params passed by the client in the API request. See
* ApiVisualEditorEdit::getAllowedParams()
* @param array $pluginData Associative array containing additional data specified by plugins, where the keys of
* the array are plugin names and the value are arbitrary data.
* @param array $saveResult The result from ApiVisualEditorEdit::saveWikitext()
* @param array &$apiResponse The modifiable API response that VisualEditor will return to the client.
* @return void
*/
public function onVisualEditorApiVisualEditorEditPostSave(
ProperPageIdentity $page,
UserIdentity $user,
string $wikitext,
array $params,
array $pluginData,
array $saveResult,
array &$apiResponse
): void;
}