X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fextensions.php;h=c6721cc0100bb50e4e4f16f94f0bbed1d8ed967d;hp=c7d794ada47167ae081470ed02337af3dd84d39d;hb=07a07340291a560c3da7715d4d51c9b2f0d2adf2;hpb=41e2891fb998d13b22b8d7984358f258cc85267d diff --git a/inc/extensions.php b/inc/extensions.php index c7d794ada4..c6721cc010 100644 --- a/inc/extensions.php +++ b/inc/extensions.php @@ -32,11 +32,11 @@ ************************************************************************/ // Some security stuff... -if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) -{ +if (!defined('__SECURITY')) { $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; require($INC); } + // function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) { @@ -65,21 +65,16 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) foreach ($EXT_VER_HISTORY as $EXT_VER) { require($file); - if (((GET_EXT_VERSION("sql_patches") != '') && ($_CONFIG['verbose_sql'] == "Y")) || (!EXT_IS_ACTIVE("sql_patches"))) - { - if (!empty($UPDATE_NOTES)) - { + if (((GET_EXT_VERSION("sql_patches") != "") && ($_CONFIG['verbose_sql'] == "Y")) || (!EXT_IS_ACTIVE("sql_patches"))) { + if (!empty($UPDATE_NOTES)) { // Update notes found $NOTES .= "v".$EXT_VER.":
".$UPDATE_NOTES."

\n"; $UPDATE_NOTES = ""; - } - elseif (($EXT_VER == "0.0") || ($EXT_VER == "0.0.0")) - { + } elseif (($EXT_VER == "0.0") || ($EXT_VER == "0.0.0")) { // Initial release $NOTES .= "v".$EXT_VER.":
".INITIAL_RELEASE."

\n"; - } - else - { + } else { + // No update notes found! $NOTES .= "v".$EXT_VER.":
".NO_UPDATE_NOTES."

\n"; } } @@ -200,6 +195,9 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false) // Update task management ADMIN_SOLVE_TASK($id); + // @TODO This causes the whole (!) menu cache being purged + CACHE_PURGE_ADMIN_MENU(); + // In normal mode return a true on success $ret = true; @@ -302,6 +300,9 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) { 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(); + + // @TODO This causes the whole (!) menu cache being purged + CACHE_PURGE_ADMIN_MENU(); } // END - if // Is this the sql_patches? @@ -314,22 +315,17 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) { } // END - if } // Check if given extension is active -function EXT_IS_ACTIVE ($ext_name, $ignore_admin = false, $ignore_cache = false) { +function EXT_IS_ACTIVE ($ext_name) { global $cacheArray, $_CONFIG; // Extensions are all inactive during installation if ((!isBooleanConstantAndTrue('mxchange_installed')) || (isBooleanConstantAndTrue('mxchange_installing')) || (empty($ext_name))) return false; - // Extension's file name will also be checked - $file = sprintf("%sinc/extensions/ext-%s.php", PATH, $ext_name); - if (!FILE_READABLE($file)) return false; - //* DEBUG: */ echo "*".$ext_name."(".count($cacheArray).")
"; - // Not active is the default $active = "N"; // Check cache - if ((!empty($cacheArray['extensions']['ext_active'][$ext_name])) && (!$ignore_cache)) { + if (!empty($cacheArray['extensions']['ext_active'][$ext_name])) { // Load from cache //* DEBUG: */ echo "CACHE! ext_name={$ext_name}
\n"; $active = $cacheArray['extensions']['ext_active'][$ext_name]; @@ -364,13 +360,7 @@ function EXT_IS_ACTIVE ($ext_name, $ignore_admin = false, $ignore_cache = false) //DEBUG_LOG(__FUNCTION__.": ext_name={$ext_name},active={$active}"); // Is this extension activated? (For admins we always have active extensions...) - return ( - ( - $active == "Y" - ) && ( - FILE_READABLE($inc) - ) - ); + return ($active == "Y"); } // Get version from extensions function GET_EXT_VERSION ($ext_name) { @@ -518,7 +508,7 @@ function EXTENSION_VERBOSE_TABLE($SQLs, $title = ADMIN_SQLS_EXECUTED_ON_REMOVAL, $S = false; $SW = 2; $i = 1; $OUT = ""; - if ((is_array($SQLs)) && (GET_EXT_VERSION("sql_patches")) && ($_CONFIG['verbose_sql'] == "Y")) { + if ((is_array($SQLs)) && (GET_EXT_VERSION("sql_patches") >= "0.0.7") && ($_CONFIG['verbose_sql'] == "Y")) { $OUT = "
@@ -542,7 +532,7 @@ function EXTENSION_VERBOSE_TABLE($SQLs, $title = ADMIN_SQLS_EXECUTED_ON_REMOVAL, } } - if ((!$S) && (GET_EXT_VERSION("sql_patches")) && ($_CONFIG['verbose_sql'] == "Y")) { + if ((!$S) && (GET_EXT_VERSION("sql_patches") >= "0.0.7") && ($_CONFIG['verbose_sql'] == "Y")) { // No addional SQL commands to run $OUT .= "
@@ -600,5 +590,29 @@ function GET_EXT_ID($name) { // Return value return $ret; } +// Activate given extension +function ACTIVATE_EXTENSION($ext_name) { + // Activate the extension + $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_extensions SET ext_active='Y' WHERE ext_name='%s' LIMIT 1", + array($ext_name), __FILE__, __LINE__); + + // Extension has been activated? + if (SQL_AFFECTEDROWS() == 1) { + // Then run all queries + EXTENSION_RUN_SQLS(GET_EXT_ID($ext_name), "activate"); + } // END - if +} +// Checks wether the extension is older than given +function EXT_VERSION_IS_OLDER ($ext_name, $ext_ver) { + // Get current extension version + $currVersion = GET_EXT_VERSION($ext_name); + + // Remove all dots from both versions + $currVersion = str_replace(".", "", $currVersion); + $ext_ver = str_replace(".", "", $ext_ver); + + // Now compare both and return the result + return ($currVersion < $ext_ver); +} // ?>