Normalerweise geht es jetzt an's Eingemachte. Aus dem Dump mit viel Handarbeit sehr viele Zeilen schöne PHP-SQL Statements basteln, die dann einzeln zum Server gesendet werden.
Das ist uns zu umständlich, deshalb machen wir das 'etwas' einfacher:
(Zu Beruhigung der um den Datenschutz Besorgten: Es wird weder die Quell- noch die Zieldatei auf dem Server gespeichert.)
Nichts einfacher als das.
Dazu muss einfach nur die install-struct.sql in das Hauptverzeichnis des Addons (dort wo auch die install.php zu finden ist) kopiert werden. Der nachfolgende Code zeigt die Einbindung in die Dateien install.php, uninstall.php und upgrade.php eines Addons.
<?php // Must include code to stop this file being accessed directly /* -------------------------------------------------------- */ if (!defined('SYSTEM_RUN')) { die('Cannot access this file directly'); } /* -------------------------------------------------------- */ // --- process import file to create addons tables ---------- $sSqlStructFile = __DIR__.'/install-struct.sql'; if (is_readable($sSqlStructFile)) { $oImporter = new SqlImport(WbDatabase::getInstance(), $sSqlStructFile); if ($oImporter->doImport(__FILE__)) { // --- finish process import file --------------------------------- // --- begin all other individual stuff --------------------------- /* * do all other stuff */ // --- end of all other individual stuff -------------------------- } else { $aError[] = $oImporter->getError(); } //endif unset($oImporter); } else { $aError[] = 'missing or not readable file \"'.basename(__DIR__).'/install-struct.sql\"'; } //endif /* **** END INSTALL / UNINSTALL / UPGRADE *********************************** */
<?php // Must include code to stop this file being accessed directly /* -------------------------------------------------------- */ if (!defined('SYSTEM_RUN')) { die('Cannot access this file directly'); } /* -------------------------------------------------------- */ // --- begin all other individual stuff --------------------------- /* * do all other stuff */ // --- end of all other individual stuff -------------------------- // --- process import file to delete addons tables ---------- $sSqlStructFile = __DIR__.'/install-struct.sql'; if (is_readable($sSqlStructFile)) { $oImporter = new SqlImport(WbDatabase::getInstance(), $sSqlStructFile); if (!$oImporter->doImport(__FILE__)) { $aError[] = $oImporter->getError(); } unset($oImporter); } else { $aError[] = 'missing or not readable file \"'.basename(__DIR__).'/install-struct.sql\"'; } //endif // --- finish process import file --------------------------------- /* **** END INSTALL / UNINSTALL / UPGRADE *********************************** */
Ich würde dazu gerne noch mehr schreiben, aber DAS war es bereits. Mehr gibt es nicht zu tun.
PS: das obige Codebeispiel kann durch simples anklicken des Labels auch heruntergeladen werden….
— Manuela v.d.Decken 08.09.2014