//
function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
{
- global $NOTES, $_CONFIG, $INC_POOL;
+ global $NOTES, $_CONFIG, $INC_POOL, $cacheInstance;
// We want to register an extension and registration status is by default "failed" (= false)
$EXT_LOAD_MODE = "register"; $ret = false; $SQLs = array();
$INC_POOL = array();
{
// Ok, update this extension now
EXTENSION_UPDATE(basename($file), $EXT_UPDATE_DEPENDS, $ext_ver, $dry_run);
+
+ // All okay!
$test = true;
}
else
$test = true;
}
+ // Switch back to register mode
+ $EXT_LOAD_MODE = "register";
+
// Does everthing before wents ok?
- if ($test)
- {
+ if ($test) {
// "Dry-run-mode" activated?
- if (!$dry_run)
- {
- // Are there any SQL commands to run?
- if (count($SQLs) > 0)
- {
- foreach ($SQLs as $sql)
- {
- $sql = trim($sql);
+ if (!$dry_run) {
+ // Run all SQLs
+ foreach ($SQLs as $sql) {
+ // Trim spaces away which we don't need
+ $sql = trim($sql);
+
+ // Is there still an SQL query?
+ if (!empty($sql)) {
// Run SQL command
- if (!empty($sql))
- {
- // Run SQLs without compiling them...
- $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
- }
- }
- }
+ $result = SQL_QUERY($sql, __FILE__, __LINE__, false);
+ } // END - if
+ } // END - foreach
+
+ // Remove cache file(s) if extension is active
+ if ((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) {
+ //* DEBUG: */ echo __LINE__.": DESTROY!<br />\n";
+ // Remove cache files
+ if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("mod_reg", true)) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("config", true)) $cacheInstance->cache_destroy();
+ } // END - if
// Check for added include files
- if (count($INC_POOL > 0))
- {
+ if (count($INC_POOL > 0)) {
// Loads every include file
- foreach ($INC_POOL as $inc)
- {
+ foreach ($INC_POOL as $inc) {
require_once($inc);
- }
+ } // END - foreach
}
// Register extension
// In normal mode return a true on success
$ret = true; unset($SQLs);
- }
- else
- {
+ } else {
// Rewrite SQL command to keep { and } inside
- foreach ($SQLs as $key=>$sql)
- {
+ foreach ($SQLs as $key => $sql) {
$sql = str_replace('{', "{", str_replace('}', "}", $sql));
$SQLs[$key] = $sql;
- }
+ } // END - foreach
// In "dry-run" mode return array with all SQL commands
$ret = $SQLs;
// Remove all SQL commands
unset($SQLs);
}
- }
- else
- {
+ } else {
// No, an error occurs while registering extension :-(
$ret = false;
}
- }
- elseif (($id > 0) && (!empty($ext_name)))
- {
+ } elseif (($id > 0) && (!empty($ext_name))) {
// Remove task from system when id and extension's name is valid
$result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_task_system WHERE id=%d AND status='NEW' LIMIT 1",
array(bigintval($id)), __FILE__, __LINE__);
}
+
+ // Is this the sql_patches?
+ //* DEBUG: */ echo __LINE__.":{$ext_name}/{$EXT_LOAD_MODE}<br />\n";
+ if (($ext_name == "sql_patches") && (($EXT_LOAD_MODE == "register") || ($EXT_LOAD_MODE == "remove")) && (!$dry_run) && ($test)) {
+ // Then redirect to logout
+ //* DEBUG: */ echo __LINE__.": LOAD!<br />\n";
+ LOAD_URL("modules.php?module=admin&logout=1&".$EXT_LOAD_MODE."=sql_patches");
+ } // END - if
+
// Return status code
return $ret;
}
} // END - if
} // END - foreach
+ // Removal mode?
+ if ($EXT_LOAD_MODE == "remove") {
+ // Delete this extension (remember to remove it from your server *before* you click on welcome!
+ $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE id=%d LIMIT 1",
+ array($id), __FILE__, __LINE__);
+ } // END - if
+
// Remove cache file(s) if extension is active
if ((EXT_IS_ACTIVE("cache")) || (GET_EXT_VERSION("cache") != "")) {
+ //* DEBUG: */ echo __LINE__.": DESTROY!<br />\n";
// Remove cache files
if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
if ($cacheInstance->cache_file("mod_reg", true)) $cacheInstance->cache_destroy();
} // END - if
// Is this the sql_patches?
- if ($ext_name == "sql_patches") {
+ //* DEBUG: */ echo __LINE__.": {$id}/{$ext_name}/{$EXT_LOAD_MODE}<br />\n";
+ if (($ext_name == "sql_patches") && (($EXT_LOAD_MODE == "register") || ($EXT_LOAD_MODE == "remove"))) {
// Then redirect to logout
- LOAD_URL("modules.php?module=admin&logout=1&remove=sql_patches");
+ //* DEBUG: */ echo __LINE__.": LOAD!<br />\n";
+ LOAD_URL("modules.php?module=admin&logout=1&".$EXT_LOAD_MODE."=sql_patches");
} // END - if
} // END - if
}
-//
+// Check if given extension is active
function EXT_IS_ACTIVE ($ext_name, $ignore_admin = false, $ignore_cache = false) {
global $cacheArray, $_CONFIG;
if ((!isBooleanConstantAndTrue('mxchange_installed')) || (isBooleanConstantAndTrue('mxchange_installing')) || (empty($ext_name))) return false;
// Extension's file name will also be checked
- $file = PATH."inc/extensions/ext-".$ext_name.".php";
+ $file = sprintf("%sinc/extensions/ext-%s.php", PATH, $ext_name);
if ((!file_exists($file)) && (!is_readable($file))) return false;
//* DEBUG: */ echo "*".$ext_name."*<br />";
if ($active == 1) {
// Run embeded SQL commands
EXTENSION_RUN_SQLS($id, "remove");
-
- // Delete this extension (remember to remove it from your server *before* you click on welcome!
- $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE id=%d LIMIT 1",
- array($id), __FILE__, __LINE__);
} // END - if
} // END - foreach
} elseif (!empty($_GET['do']) && (!IS_DEMO())) {
// ... so we can finally register and load it in registration mode
$status = EXTENSION_REGISTER($ext_name, $id);
if ($status == true) {
- // Is this sql_patches? Then we need to auto-logout!
- if ($ext_name == "sql_patches") {
- // Auto-logout here
- LOAD_URL("modules.php?module=admin&logout=1&install=sql_patches");
- }
-
// Extension was found and successfully registered
LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_EXTENSION_REGISTERED);
// Do we need to update cache file?
if ((EXT_IS_ACTIVE("cache")) && ($cacheMode != "no")) {
// Remove cache file (will be auto-created again!)
+ if ($cacheInstance->cache_file("config" , true)) $cacheInstance->cache_destroy();
if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("mod_reg" , true)) $cacheInstance->cache_destroy();
}
} else {
// Motify the admin that we have a problem here...