X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fextensions.php;h=cfe82ae48efecd04076eb52701b78d3633ef19c8;hb=aa27f7442553d0a8341e5611d70b8e4521bbce03;hp=fee99ba7a616044fd2c7f32970a484b32fd1e0f2;hpb=5f8c1a333627cd0145f778a6eebdb251f5bb40b6;p=mailer.git
diff --git a/inc/extensions.php b/inc/extensions.php
index fee99ba7a6..cfe82ae48e 100644
--- a/inc/extensions.php
+++ b/inc/extensions.php
@@ -41,6 +41,7 @@ if (!defined('__SECURITY')) {
function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
{
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();
@@ -48,6 +49,13 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
// This shall never do a non-admin user!
if (!IS_ADMIN()) return false;
+ // By default the language prefix is the extension's name
+ // @TODO: Do we really need this one anymore? Can't we just take $ext_name and done?
+ $EXT_LANG_PREFIX = $ext_name;
+
+ // By default we have no failtures
+ $EXT_REPORTS_FAILURE = false;
+
// Is this extension already installed?
if (EXT_IS_ACTIVE($ext_name)) return false;
@@ -89,20 +97,25 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
$SQLs = array();
$test = false;
- // Backup language as well
- $LANG_BCK = $EXT_LANG_PREFIX;
- $EXT_ALWAYS_ACTIVE = "N";
-
// Load required extension also in update mode
$file = sprintf("%sinc/extensions/ext-%s.php", PATH, $EXT_UPDATE_DEPENDS);
// Check for required file
if (FILE_READABLE($file)) {
- // File exists so let's load it
+ // Bacup version number
$VER_BACKUP = $EXT_VERSION;
+
+ // Backup language as well
+ $LANG_BCK = $EXT_LANG_PREFIX;
+
+ // Save the Parrent $EXT_ALWAYS_ACTIVE for later!
+ $EXT_ALWAYS_ACTIVE_PARRENT = $EXT_ALWAYS_ACTIVE;
+
+ // Set EXT_ALWAYS_ACTIVE for update
$EXT_ALWAYS_ACTIVE = "N";
+
+ // File exists so let's load it
require($file);
- $EXT_VERSION = $VER_BACKUP;
// If versions mismatch update extension first
$ext_ver = GET_EXT_VERSION($EXT_UPDATE_DEPENDS);
@@ -134,6 +147,15 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
// Nothing to register / update before...
$test = true;
}
+
+ // Restore version number
+ $EXT_VERSION = $VER_BACKUP;
+
+ // Restore language back
+ $EXT_LANG_PREFIX = $LANG_BCK;
+
+ // Restore $EXT_ALWAYS_ACTIVE with the value from parrent
+ $EXT_ALWAYS_ACTIVE = $EXT_ALWAYS_ACTIVE_PARRENT;
} else {
// Required file for update does not exists!
$test = true;
@@ -142,7 +164,6 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
// Finally restore previous SQLs
$SQLs = $SQLs2; unset($SQLs2);
- $EXT_LANG_PREFIX = $LANG_BCK;
} else {
// Does not depend on an other extension
$test = true;
@@ -151,6 +172,9 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
// Switch back to register mode
$EXT_LOAD_MODE = "register";
+ // Remains true if extension registration reports no failtures
+ $test = ($test && !$EXT_REPORTS_FAILURE);
+
// Does everthing before wents ok?
if ($test) {
// "Dry-run-mode" activated?
@@ -178,8 +202,8 @@ function EXTENSION_REGISTER ($ext_name, $id, $dry_run=false)
//* DEBUG: */ echo __LINE__.": DESTROY!
\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();
+ if ($cacheInstance->cache_file("mod_reg")) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("config")) $cacheInstance->cache_destroy();
} // END - if
// Check for added include files
@@ -315,8 +339,8 @@ function EXTENSION_RUN_SQLS($id, $EXT_LOAD_MODE) {
//* DEBUG: */ echo __LINE__.": DESTROY!
\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();
+ if ($cacheInstance->cache_file("mod_reg")) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("config")) $cacheInstance->cache_destroy();
// @TODO This causes the whole (!) menu cache being purged
CACHE_PURGE_ADMIN_MENU();
@@ -367,7 +391,7 @@ function EXT_IS_ACTIVE ($ext_name) {
}
// Debug message
- //DEBUG_LOG(__FUNCTION__, __LINE__, " ext_name={$ext_name},active={$active}");
+ //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, " ext_name={$ext_name},active={$active}");
// Is this extension activated? (For admins we always have active extensions...)
return ($active == "Y");
@@ -513,9 +537,9 @@ function EXTENSION_UPDATE($file, $ext, $EXT_VER, $dry_run=false)
// Update cache
if (EXT_IS_ACTIVE("cache")) {
- if ($cacheInstance->cache_file("extensions", true) == true) $cacheInstance->cache_destroy();
- if ($cacheInstance->cache_file("config", true) == true) $cacheInstance->cache_destroy();
- if ($cacheInstance->cache_file("mod_reg", true) == true) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("config")) $cacheInstance->cache_destroy();
+ if ($cacheInstance->cache_file("mod_reg")) $cacheInstance->cache_destroy();
} // END - if
// Remove array