--=REKLAMA=--
Instalacja, aktualizacja i deinstalacja modułów może wymagać dodatkowych czynności, które mogą nie być osiągalne przez podstawowe operacje opisane w głównym pliku XML. Joomla oferuje nowe podejście do rozwiązania tego problemu. Polega ono na użyciu pliku PHP zawierającego klasę z pięcioma metodami:
Tworzenie pliku rozszerzenia polega na zadeklarowaniu klasy, której nazwa zbudowana jest według wzoru mod_NazwaModuluInstallerScript i umieszczeniu w niej 5 metod.
script.php
<?php // Zabezpieczenie przed bezpośrednim dostępem defined('_JEXEC') or die('Restricted access'); class mod_helloWorldInstallerScript { /** * Metoda instalacji rozszerzenia * $parent - klasa wywołująca metodę * * @return void */ function install($parent) { echo '<p>Moduł został zainstalowany.</p>'; } /** * Metoda deistalacji rozszerzenia * $parent - klasa wywołująca metodę * * @return void */ function uninstall($parent) { echo '<p>Moduł został odinstalowany</p>'; } /** * Metoda aktualizacji rozszerzenia * $parent - klasa wywołująca metodę * * @return void */ function update($parent) { echo '<p>Moduł został zaktualizowany do wersji ' . $parent->get('manifest')->version) . '</p>'; } /** * Metoda która zostaje wywołana przed zainstalowaniem/aktualizacją/ deistalacją rozszerzenia * $parent - klasa wywołująca metodę * $type - typ zmian (instalacja, aktualizacja...) * * @return void */ function preflight($type, $parent) { echo '<p>Wszystko, co tu się dzieje przed instalacją/ aktualizacją/ deinstalacją modułu</p>'; } /** * Metoda która zostaje wywołana po zainstalowaniu/aktualizacji/ deistalacji rozszerzenia * $parent - klasa wywołująca metodę * $type - typ zmian (instalacja, aktualizacja...) * * @return void */ function postflight($type, $parent) { echo '<p>Wszystko, co tu się dzieje po instalacji/ aktualizacji/ deinstalacji modułu</p>'; } }
W metodzie aktualizacji wyświetlamy nową wersję rozszerzenia $parent->get('manifest')->version
. Możemy również
przekierować użytkownika do strony wyboru modułu $parent->getParent()->setRedirectURL('index.php?option=com_modules');
.