Tudom, hogy volt már téma, át is néztem mindet, de az .install fájlban lévő drupa_install_schema() valahogy mégsem fut le. (Vagyis azt sem tudom lefut e egyáltalán)
.install
function g_theme_schema() { $schema = array(); $schema['gdt_smink'] = array( 'fields' => array( 'gdt_id' => array( 'type' => 'int', 'unsigned' => true, 'not null' => true, ), 'gdt_themename' => array( 'type' => 'varchar', 'length' => 32, 'not null' => true, ), 'gdt_import' => array( // see: user install created 'type' => 'int', 'not null' => true, ), 'gdt_importfiles' => array( // see: user install created 'type' => 'int', 'not null' => true, ), ), 'primary key' => array('gdt_id'), ); return $schema; } function g_theme_install() { drupal_install_schema('gdt_smink'); } function g_theme_uninstall() { db_query('DELETE FROM {system} WHERE name = "modulname"'); drupal_uninstall_schema('gdt_smink'); }
A modult kikapcsoltam, uninstalláltam, töröltem, a system táblából is töröltem a modulra vonatkozó rekordot, visszamásoltam, bekapcsoltam és semmi. Se tábla, se új rekord felvitel..
Van valakinek ötlete, mitől lehet és hogyan lehetne orvosolni?
Ha manuálisan db_query()-vel hozom létre a táblát, működik, viszont az automatikus uninstall ilyenkor sem megy [db_query(drop table... ].
Drupal verzió:
Fórum:
A drupal_install_schema() a
A drupal_install_schema() a modul nevét tartalmazó string-et várja paraméternek, azaz ha a modulod neve g_theme akkor így kell meghívni:
A Drupal Coding Standards-re pedig szerintem figyelj oda.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
Köszönöm.
A telepítés megy, már csak azt nem értem, hogy az uninstall miért nem hajtódik végre.
Jelenleg ezt futtatnám le a modul kikapcsolásakor, de nem történik semmi, viszont a Devel uninstall használatával már törlődik minden, viszont hibaüzenet is jön, hogy a tábla már nem létezik. Akkor most mi is fut le? :D Vagy csak a Cache-t kellene üríteni az _uninstall() futásakor?
A Coding Standards-t pedig már néztem, de ha abba is beleköt a rendszer, hogy átláthatóbb a kódom, mert nem csak két szóköz a behúzás, az már szőrszálhasogatás. Bár ezt fejlesztője válogatja, hogy kinek mi az átláthatóbb és milyen Standerdet követ. De köszönöm. :)
A két db_query fölösleges,
A két db_query fölösleges, nincs rá szükség. A drupal_uninstall_schema() fgv elintézi a tábla(ák) törlését, ezért a DROP TABLE már hibát dob.
A kódolási stílusodba a rendszer nem köt bele - amennyiben nem futtatod rá a coder modult - de átláthatóbbnak biztos nem az. A Drupal-nak vannak sztenderdjei amiket érdemes (és illik) betartani, mivel közösségi fejlesztésről van szó.
Hosszu Kálmán
http://twitter.com/kalmanhosszu
http://www.kalman-hosszu.com/
http://premiumcmsthemes.com/
uninstall + standard
Jelenleg ezt futtatnám le a modul kikapcsolásakor
Ez a kód akkor fut le, amikor eltávolítod a modult (/admin/build/modules/uninstall), nem amikor kikapcsolod.
A standard-ek azért vannak, hogy ha más tartja karban a kódodat, akkor a felmenőid ne kapjanak csuklási rohamot. ;)
Az pedig tudvalevő, hogy egy kódot hatványozottan többször olvasnak, mint ahányszor módosítanak rajta. Én akárhány programozási környezetben dolgoztam mindig igyekeztem követni a hivatalos (v. a munkahelyi) ajánlásokat. Egy ideig mindig eltartott, mire ráállt a szemem, de úgy érzem, hogy mindig megérte hosszútávon.