function xmf_setMeta($key, $value, $moduleName = false) { if (!$moduleName) { $moduleName = xmf_getCurrentModuleName(); } $xoopsDB =& Database::getInstance(); $ret = xmf_getMeta($key, $moduleName); if ($ret === '0' || $ret > 0) { $sql = sprintf("UPDATE %s SET metavalue = %s WHERE metakey = %s", $xoopsDB->prefix($moduleName . '_meta'), $xoopsDB->quoteString($value), $xoopsDB->quoteString($key)); } else { $sql = sprintf("INSERT INTO %s (metakey, metavalue) VALUES (%s, %s)", $xoopsDB->prefix($moduleName . '_meta'), $xoopsDB->quoteString($key), $xoopsDB->quoteString($value)); } $ret = $xoopsDB->queryF($sql); if (!$ret) { return false; } return true; }
function moduleUpgrade(&$module) { $dirname = $module->getVar('dirname'); ob_start(); $table = new Xmf_Database_Table($dirname . '_meta'); if (!$table->exists()) { $table->setStructure("\r\n `metakey` varchar(50) NOT NULL default '',\r\n `metavalue` varchar(255) NOT NULL default '',\r\n PRIMARY KEY (`metakey`)"); $table->setData("'version',0"); if (!$this->updateTable($table)) { /** * @todo trap the errors */ } } $dbVersion = xmf_getMeta('version', $dirname); if (!$dbVersion) { $dbVersion = 0; } $newDbVersion = constant(strtoupper($dirname . '_db_version')) ? constant(strtoupper($dirname . '_db_version')) : 0; echo 'Database version : ' . $dbVersion . '<br />'; echo 'New database version : ' . $newDbVersion . '<br />'; if ($newDbVersion > $dbVersion) { for ($i = $dbVersion + 1; $i <= $newDbVersion; $i++) { $upgrade_function = $dirname . '_db_upgrade_' . $i; if (function_exists($upgrade_function)) { $upgrade_function(); } } } echo "<code>" . _DB_XMF_UPDATE_UPDATING_DATABASE . "<br />"; // if there is a function to execute for this DB version, let's do it //$function_ $this->automaticUpgrade($dirname, $module->modinfo['object_items']); echo "</code>"; $feedback = ob_get_clean(); if (method_exists($module, "setMessage")) { $module->setMessage($feedback); } else { echo $feedback; } xmf_setMeta("version", $newDbVersion, $dirname); //Set meta version to current return true; }