Örökölt mód eltávolítása 1. rész

A JoomlaWiki wikiből

A Joomla! 1.5 támogatja az Örökölt módot, melynek segítségével a fejlesztők könnyen átalakíthatják régebbi verzióhoz készült bővítményeiket Joomla! 1.5 alá. Mindenesetre ajánlott minél előbb megszabadulni tőle.

Ez a sorozat első része, melyben megismerhetjük, hogyan lehet átírni a meglévő bővítményeket, hogy azok a Joomla! 1.5 keretrendszerét használják.

A cikk nem lenne teljes anélkül, hogy megnéznénk hogyan lehet be-, illetve kikapcsolni az örökölt módot.

Tartalomjegyzék

Örökölt mód

Az örökölt mód beépülő modul formájában található meg a Joomla! 1.5-ben, a Rendszer csoportban. Az adminisztrációs felületen válasszuk ki a Bővítmények > Beépülő modul-kezelő menüpontot. A leggyorsabb módja a beépülő megtalálásának, hogy a szűrő mezőbe beírjuk az "örökölt mód" kifejezést.

Alapértelmezésként az örökölt mód nincs engedélyezve. Kattintsunk a piros-fehér X-re az aktiválásához. Fent az eszközsor jobb oldalán egy szöveg jelenik meg, amely tudatja, hogy az örökölt mód mostantól engedélyezve van.

Engedélyeznünk kell az örökölt módot ahhoz, hogy Joomla! 1.0-hoz készült bővítményeket tudjunk telepíteni. A telepítő egy verzióellenőrzést végez, és ha a bővítmény nem Joomla! 1.5-höz készült, figyelmeztet minket, hogy engedélyeznünk kell az örökölt módot.

A Letterman nevű komponensen keresztül kerül bemutatásra az örökölt mód eltvolítása. (Bővebb információ a komponensről a bővítmény oldalán található.) Eddig ezek a lépések kerültek végrehajtásra:

  • Az örökölt mód engedélyezése, így lehetőség van az 1.0-ás komponens telepítésére.
  • A Letterman komponens letöltése a fejlesztő oldaláról, majd annak telepítése a Joomla! telepítőjével.
  • Az örökölt mód kikapcsolása.

És BUMM! Az ég leszakad, a föld szétnyílik és rengeteg hibaüzenet jelenik meg a képernyőn. Tulajdonképpen ami történik az kevésbé drámai. Egy fehér képernyő tárul elém a következő üzenettel: "Direct Access to this location is not allowed". Hrm.

_VALID_MOS lecserélése _JEXEC-re

Az első dolog, hogy néhány konstans neve megváltozott. Ez a konstans leállítja a megjelenítést, a Joomla! egyik legfőbb biztonsági ellenőrzése azok ellen, akik közvetlen eléréssel akarják megnyitni a PHP fájlt.

Könnyen javítható. A szerkesztő segítségével keressünk rá a _VALID_MOS kifejezésre minden fájlban, majd cseréljük le _JEXEC-re. (Arra figyeljünk, hogy csak a telepített komponens fájljaiban cseréljük le, a örölési mód beépülőben ne!) És nem szabad elfelejteni, néha az adminisztrciós felületen lévő komponens hivatkozhat néhány felhasználó oldali komponensre (például egy .class.php fájlra), szóval át kell nézni mind az adminisztrációs, mind a felhasználó oldali fájlokat.

mosDBTable lecserélése JTable-re

Mi történt ezután: "Fatal Error: Class 'mosDBTable' not found". Ez megint egy egyszerű keresés és csere. Az új osztály melyet használnunk kell a JTable, de a konstruktor nevét is le kell cserélnünk __construct-ra. Például:

  1. class mosLettermanSubscribers extends JTable {
  2.     // Sok definiált változó
  3.     function __construct( &$database ) {
  4.         $this->mosDBTable( '#__letterman_subscribers', 'subscriber_id', $database );
  5.     }
  6. }

Még mindig hibaüzenetet kapunk a $this->mosDBTable sorból. Ezt a hívást le kell cserélni a szülőosztály __construct metódusára így:

  1. class mosLettermanSubscribers extends JTable {
  2.     // Sok definiált változó
  3.     function __construct( &$database ) {
  4.         parent::__construct( '#__letterman_subscribers', 'subscriber_id', $database );
  5.     }
  6. }

Adatbázis kezelése a JFactory-ből

Még mindig nem örülhetünk.

Fatal error:  Call to a member function setQuery() on a non-object

Első rénézésre egy kicsit ismeretlennek tűnik. Gondolkodhatunk, mi a gond a $database változóval? Jogos kérdés. A válasz az, hogy többé nem létezik globális változóként. A javításához meg kell keresnünk az összes előfordulását a

  1. global $database;

kifejezésnek, és le kell cserélni a következőre:

  1. $database = &JFactory::getDBO();

A JFactory egy nagyszerű osztály az új API-ban. Hozzáférést ad néhány változóhoz anélkül, hogy globális változók használatához folyamodnánk. Ebben az esetben az adatbázishoz való kapcsolódást segíti elő.

Ez eltart egy ideig. A legegyszerűbb módja ha egy olyan fejlesztői környezetben dolgozunk, amely fájlokban tud keresni. Fordítás JText használatával

Még sok alap dolgot kell felfedeznünk ahhoz, hogy kikerüljünk a fehér képernyő birodalmából, de ugorjunk egy kissé érdekesebb dologra, mielőtt befejezzük ezt a részt. Végül is eljutottunk addig a pontig ahol láthatjuk (tulajdonképpen csak akkor, ha a bővítménykezelőben engedélyezzük az örökölt módot):

Notice:  Use of undefined constant _CMN_NEW

Rendben. Nos, a proléma az, hogy a régi nyelvi fájl konstansai valami miatt nem töltődtek be. Nem kell nagyon aggódni emiatt, át fogjuk alakítani úgy, hogy az új fordítási rendszert használja. Az 1.5-ös verzió az .ini formátumot használja a fordításokhoz. A bővítményeinkben a JText nevezetű osztályt fogjuk használni a szavak és kifejezések fordításához. Hasonlóan mint ez:

  1. <?php echo JText::_( 'New' );?>

A cikk forrása: The Art of Joomla!