Ako už možno tušíte, je vyvíjaná snaha
štandardizovať vývoj modulov - používať v moduloch rovnakú štruktúru správcu GUI s rovnakými ikonami vo všetkých moduloch, s použitím rovnakej štruktúry stránkovania pre každú tabuľku, s jednotným spôsobom pomenovania tabuliek a polí.
Tento návod vám ukáže,
ako upraviť svoj modul premenovaním tabuliek na vašich stránkach, keď zaktualizujete modul.
Nová schéma pomenovania tabuľky je:
mod_AAA_BBBBkde
AAA je názov modulu, a
BBB je názov tabuľky.
Napríklad, keď je v module "News" tabuľka s názvom "topics", v novej aktualizovanej verzii News to bude vyzerať takto:
mod_news_topicsNasleduje niekoľko krokov, ako použiť modul "Pedigree" a jeho tabuľku "animal" :
1) Nová verzia by mala mať v súbore SQL správne nadefinovanú tabuľku, takže nová inštalácia (nie aktualizovaná) má tabuľky nainštalované správne hneď
2) V existujúcej inštalácií prekopírujeme súbory (výmenou starých súborov za nové) a potom spustime "aktualizáciu" v administrácii. Preto budeme musieť pridať súbor s aktualizáciou. Nazvime ho "
update_function.php" a umiestnime ho do priečinka /include
3) Aby XOOPS zavolal tento súbor, pridáme do súboru xoops_version.php nasledujúce:
$modversion['onUpdate'] = 'include/update_function.php';
4) V tomto súbore začneme tým, že pridaním funkcie skontrolujeme, či tabuľky, ktoré chceme premenovať, skutočne existujú. Toto sa vykoná pomocou funkcie vytvorenej Hervetom:
function tableExists($tablename)
{
global $xoopsDB;
$result=$xoopsDB->queryF("SHOW TABLES LIKE '$tablename'");
return($xoopsDB->getRowsNum($result) > 0);
}
5) Potom pridáme nasledujúce funkciu, ktorá sa spustí, keď klikneme na tlačidlo Update:
function xoops_module_update_animal()
{
global $xoopsDB;
if (tableExists($xoopsDB->prefix('eigenaar'))) {
$sql = sprintf(
'ALTER TABLE ' . $xoopsDB->prefix('eigenaar') . ' RENAME ' . $xoopsDB->prefix('mod_pedigree_owner')
);
$result = $xoopsDB->queryF($sql);
if (!$result) {
echo '<br />' . _AM_PED_UPGRADEFAILED . ' ' . _AM_PED_UPGRADEFAILED2;
$errors++;
}
}
return TRUE;
}
Vo vyššie vypísanom kóde sme overili, či existuje tabuľka "eigenaar", a ak áno, následne sme ju premenovali na "mod_pedigree_owner". Samozrejme, toto je potrebné urobiť pre
každú tabuľku, ktorú chceme premenovať.
6) Musíme tiež rovnako premenovať všetky výskyty tabuliek v kóde.
a) prvým krokom bude jednoducho spustiť vyhľadávanie a nahradenie použitého slova "prefiix", takže v našom príklade nahradíme:
prefix("eigenaar")
s:
prefix("mod_pedigree_owner")
To sú prípady, keď voláme tabuľky konvenčným spôsobom.
b) ale ľudia sú kreatívni a môže sa stať, že to urobia inak, takže nás nič nezachráni od testovania a nakoniec hľadáme slovo "eigenaar" vo všetkých súboroch, kde musíme určovať, či ide o tabuľku a či treba premenovanie.
Nové pomenovanie zjednoduší dve veci:
- v phpMyAdmin uvidíme (alebo v akomkoľvek inom databázovom nástroji) všetky tabuľky modulu zoskupené. To ich tiež odlíši od základných tabuliek.
- v kóde bude ľahšie nájdenie tabuľky vyhľadaním formy slova "mod_MODULENAME".
V blízkej budúcnosti budú tiež upevnené názvy a charakteristiky typických polí v základných moduloch a budú k nim poskytnuté vodítka.
Keď sa pozrieme na štandardné moduly, rovnaké pole môže byť v každom module menované odlišne.
Pozrime sa na "Group ID" - to by mohlo byť: gid, g_id, group_id, gr_id, atď. A ak sa snažíme udržiavať modul od iného autora, strácame príliš veľa času zisťovaním,
o aké konkrétne pole vlastne ide.
Ak máte vylepšenie tohto návodu, dajte nám prosím vedieť.