Příručka:Háčky/LoadExtensionSchemaUpdates

From mediawiki.org
This page is a translated version of the page Manual:Hooks/LoadExtensionSchemaUpdates and the translation is 100% complete.
LoadExtensionSchemaUpdates
Dostupné od verze 1.10.1
Spustí se při aktualizaci MediaWiki, aby rozšíření umožnilo registrovat aktualizace schématu databáze
Definice funkce:
public static function onLoadExtensionSchemaUpdates( DatabaseUpdater $updater ) { ... }
Registrace háčku: V extension.json:
{
	"Hooks": {
		"LoadExtensionSchemaUpdates": "MediaWiki\\Extension\\MyExtension\\Hooks::onLoadExtensionSchemaUpdates"
	}
}
Volá se z: Soubor/y: installer/DatabaseUpdater.php
Funkce: __construct
Rozhraní: LoadExtensionSchemaUpdatesHook.php

Další informace o háčcích najdete na stránce Příručka:Háčky .
Chcete-li vědět, jaká rozšíření tento háček používají, podívejte se na stránku Category:LoadExtensionSchemaUpdates extensions/cs.

Použití

Pokud vaše rozšíření vyžaduje změny v databázi při aktualizaci MediaWiki, použijte tento háček k jejich přidání do aktualizátoru pomocí metod jako DatabaseUpdater::addExtensionTable(), DatabaseUpdater::modifyExtensionField() atd.
Varování Varování:
  • Pokud je vaše rozšíření použito na jakékoli produkční wiki hostované ve WMF, postupujte podle Průvodce změnou schématu.
  • Obslužné rutiny pro tento háček nesmí přímo upravovat databázi pomocí metod jako DatabaseUpdater::addTable(), DatabaseUpdater::dropField() atd. Musí pouze zaregistrovat aktualizace pomocí metod jako DatabaseUpdater::addExtensionTable(), DatabaseUpdater::modifyExtensionField() atd.
  • Vaše rozšíření by nemělo upravovat žádnou základní databázi MW. Místo toho by rozšíření mělo vytvořit nové tabulky s cizím klíčem k příslušné tabulce MW.

Shrnutí

  1. Vytvořte háček, jak je uvedeno níže. Příklad ukazuje, jak nastavit funkci zaháčkování. Pokud máte více než jednu aktualizaci schématu, můžete je umístit do stejné funkce. Ujistěte se, že používáte metody s Extension v názvu k registraci aktualizací, spíše než je spouštějte přímo.
  2. Ujistěte se, že má háček přístup ke všem potřebným souborům SQL, které jsou obvykle umístěny v adresáři sql/.
  3. Správně naformátujte SQL soubory. Pro některé příklady se podívejte na ArticleFeedbackv5 SQL a odpovídající hooks file.
  4. Z příkazového řádku spusťte skript php maintenance/update.php pro aktualizaci databáze vaší wiki pomocí háčku LoadExtensionSchemaUpdates vašeho rozšíření. Další informace naleznete v příručce update.php .

>= 1.25

Registrace rozšíření byla zavedena v MW 1.25, a proto by se místo $wgHooks měla používat sekce Háčky extension.json . Například:

"Hooks": {
    "LoadExtensionSchemaUpdates": "MediaWiki\\Extension\\ExtensionName\\Hooks::onLoadExtensionSchemaUpdates"
}

A v ExtensionName/includes/Hooks.php:

namespace MediaWiki\Extension\ExtensionName;

use DatabaseUpdater;

class Hooks {
	public static function onLoadExtensionSchemaUpdates( DatabaseUpdater $updater ) {
        // Zaregistrujte opravu SQL pro změnu pole
		$updater->modifyExtensionField(
			'tablename',
			'name_of_field',
			 __DIR__ . '/sql/patch_file_changing_field.sql'
		);
	}
}

Kód zpětného volání zavěšení je stejný jako u předchozích verzí (viz níže).

Související odkazy