Saját migrator beépülők készítése
-
Leírások
A migrator komponens átvihető adatokat készít a régi, Joomla! 1.0 webhelyről az új, Joomla! 1.5 alapú webhelyre. Ezen kívül lehet készíteni külső fejlesztésű komponensekhez is migrator beépülőket, úgynevezett ETL beépülőket (kibontás, konvertálás, betöltés). De mi van akkor, ha a használt komponensekhez nincsenek ETL beépülők?
Készítsünk magunknak! Nem kell tapasztalt fejlesztőnek lennünk ehhez, csak az alábbi lépéseket kell követnünk...
Nézzünk utána, milyen adatbázis táblákat használ a szóban forgó komponmens! Jó segédeszköz ehhez a phpMyAdmin vagy a komponens fájljai, esetleg a komponens xml fájlja.
Minden ilyen táblához készíteni kell egy új fájlt és a tábla alapján elnevezni. Például, ha a tábla neve #__guestbook (ahol a #_ a tábla előtag neve), készítsünk egy fájlt guestbook.php néven. Ne feledjük, hogy egyes komponensek más komponensek vagy a rendszerkomponensek tábláival is kapcsolatban lehetnek, ilyen például a user tábla. Ezeket a táblákat is migrálni kell.
A fentebb említett fájlban készítsünk egy osztályt a tábla nevéről elnevezve, valahogy így:
class Guestbook_ETL extends ETLPlugin
{
}
Lépjünk be a { és } közötti sorba és jelezzük a migrátornak mi a beépülőnk neve:
public function getName()
{
return 'My Guestbook Migrator Plugin';
}
A következő lépésben meg kell mondanunk a migrátornak, hogy milyen táblából vegye az adatokat:
public function getAssociatedTable()
{
return 'guestbook'; // nem kell táblaelőtag
}
Végezetül el kell készítenünk a CREATE (létrehozás) utasítást, amellyel a táblát az új helyen létre tudjuk hozni. Ezt megkaphatjuk a SHOW CREATE TABLE novoportal15_guestbook paranccsal a MySQL kliensben vagy nézzük át a komponens (a példában a Guestbook) XML fájlját!
public function getSQLPrologue()
{
return 'CREATE TABLE #__guestbook (`id` int(11) NOT NULL auto_increment, .....';
}
Íme a teljes fájl:
class Guestbook_ETL extends ETLPlugin
{
public function getName()
{
return 'My Guestbook Migrator Plugin';
}
public function getAssociatedTable()
{
return 'guestbook'; // nem kell táblaelőtag
}
public function getSQLPrologue()
{
return 'CREATE TABLE #__guestbook (`id` int(11) NOT NULL auto_increment, .....';
}
}
Telepítsük a migrator komponenst a régi, Joomla! 1.0 alapú webhelyen és használjuk a feltültő (upload) elemet a beépülőnk hozzáadásához! Aktiváljuk a migrációt és folytassuk, ahogy általában szoktuk.
Engedélyezzük az Öröklés módot (Legacy mode) és telepítsük a komponenst. Nézzük át az XML fájlt, egyes komponensek használják a DROP TABLE utasítást ebben a fájlban. Jó gyakorlat a CREATE TABLE IF NOT EXISTS utasítás használata.
A migrátor beépülők ezen megközelítése valószínűleg működik a legtöbb komponenshez. Mégis, ez csak a jéghegy csúcsa. A migrator beépülők ennél többet is tudnak. Lehetővé teszik a táblák és adatok átírását például akkor, ha a komponens Joomla!1.0 és a Joomla! 1.5 verziója meltérő adatbázis sémát használ. Ha többet szeretne megtudni erről, célszerű átnézni a jelenlegi ETLPlugin osztályt valamint a com_migrator csomag rendszerbeépülőit.








