Automatic deactivation of installed but deprecated extwensions fixed
authorRoland Häder <roland@mxchange.org>
Thu, 11 Aug 2011 19:25:31 +0000 (19:25 +0000)
committerRoland Häder <roland@mxchange.org>
Thu, 11 Aug 2011 19:25:31 +0000 (19:25 +0000)
inc/extensions-functions.php
inc/extensions/ext-forced.php
inc/filter-functions.php

index 12de277..e7e6bce 100644 (file)
@@ -42,11 +42,12 @@ if (!defined('__SECURITY')) {
 
 // Load the extension and maybe found language and function files.
 function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0.0', $dry_run = false) {
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',ext_mode=' . $ext_mode . ',ext_ver=' . $ext_ver . ',dry_run=' . intval($dry_run));
        // Loading an extension in same mode, but not test/update, twice is not
        // good, so is the extension $ext_name already loaded in mode $ext_mode?
        if ((isset($GLOBALS['loaded_extension'][$ext_name][$ext_mode])) && (!in_array($ext_mode, array('update', 'test')))) {
                // If this happens twice, we need the bug report from you, except for updates/tests
-               debug_report_bug(__FUNCTION__, __LINE__, '() is called twice: ext_name=' . $ext_name . ', ext_mode='. $ext_mode . ',ext_sqls=' . print_r(getExtensionSqls(), true) . ', ext_register_running=' . print_r($GLOBALS['ext_register_running'], true) . ', ext_running_updates=' . print_r($GLOBALS['ext_running_updates'], true));
+               debug_report_bug(__FUNCTION__, __LINE__, __FUNCTION__ . '() is called twice: ext_name=' . $ext_name . ', ext_mode='. $ext_mode . ',ext_sqls=' . print_r(getExtensionSqls(), true) . ', ext_register_running=' . print_r($GLOBALS['ext_register_running'], true) . ', ext_running_updates=' . print_r($GLOBALS['ext_running_updates'], true));
        } // END - if
 
        // Make sure this situation can only happen once
@@ -155,12 +156,12 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0.0', $dry_run = fal
        loadCurrentExtensionInclude();
 
        // Is this extension deprecated?
-       if ((isExtensionDeprecated()) && (!in_array(getExtensionMode(), array('test', 'update')))) {
+       if ((isExtensionDeprecated()) && (!in_array(getExtensionMode(), array('test', 'update', 'deactivate'))) && (isExtensionActive($ext_name))) {
                // Deactivate the extension
                doDeactivateExtension($ext_name);
 
                // Abort here
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension load aborted, ext_name=' . $ext_name);
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension load aborted, ext_name=' . $ext_name . ' - Extension is deprecated.');
                return false;
        } // END - if
 
@@ -178,7 +179,7 @@ function loadExtension ($ext_name, $ext_mode, $ext_ver = '0.0.0', $dry_run = fal
 // Registers an extension and possible update dependencies
 function registerExtension ($ext_name, $taskId, $dry_run = false, $ignoreUpdates = false) {
        // Set current extension name
-       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $taskId . ',dry_run=' . intval($dry_run) . ' - ENTERED!');
+       //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ',task_id=' . $taskId . ',dry_run=' . intval($dry_run) . ',ignoreUpdates=' . intval($ignoreUpdates) . ' - ENTERED!');
        setCurrentExtensionName($ext_name);
 
        // Enable dry-run
@@ -960,6 +961,9 @@ function doDeactivateExtension ($ext_name) {
        // Create new task (we ignore the task id here)
        createExtensionDeactivationTask($ext_name);
 
+       // Rebuild cache
+       rebuildCache('extension', 'extension');
+
        // Notify the admin
        sendAdminNotification(
                '{--ADMIN_EXTENSION_DEACTIVATED_SUBJECT--}',
index 65333c3..9f4d27a 100644 (file)
@@ -125,7 +125,7 @@ INDEX (`forced_stats_userid`)",
                // Menu system
                // - Administrator
                addAdminMenuSql('forced', NULL, 'Forced-Ads', 'Verwalten Sie hier bequem alle laufenden Forced-Banner, -Textlinks, -PopUps und deren Kampgnen. Sie k&ouml;nnen hier auch neue Werbmittel (Ads) hinzuf&uuml;gen oder laufende Forced-Kampagnen bei z.B. Regelverst&ouml;ssen sperren oder l&ouml;schen. Auch das natr&auml;gliche Editieren von Ads und Kampagnen ist jederzeit m&ouml;glich. Kampagnen dienen der einfacheren Verwaltung und der Trennung von dem Werbemittel selbst dienen. Sie brauchen also z.B. einen Forced-Banner nur einmal einf&uuml;gen und k&ouml;nnen dann bei Bedarf weitere Kampagnen starten.', 5);
-               addAdminMenuSql('forced', 'list_forced_ads', 'Werbemittel verwalten', 'Listet alle eingetragenen Werbmittel (Ads) auf und f&uuml;gt neue hinzu. Sie k&ouml;nnen hier diese nachtr&auml;glich editieren falls Sie mal eine falsche URL eingegeben haben oder den Text &auml;ndern wollen. L&ouml;schen Sie hier auch Forced-Banner, die nicht mehr g&uuml;ltig sind (z.B. abgelaufen sind). Sollten doch mit dem Werbmittel verkn&uuml;pfte Kampagnen vorhanden sein, erhalten Sie einen Warnhinweis. Neue Werbmittel k&ouml;nnen Sie hier ebenfalls hinzuf&uuml;gen. Denken Sie aber daran, dass ohne Kampagne dieses nicht angezeigt wird. Achten Sie hier auch die Reload-Sperre.', 2);
+               addAdminMenuSql('forced', 'list_forced_ads', 'Forced-Ads verwalten', 'Listet alle eingetragenen Forced-Ads (Werbmittel mit Klickzwang) auf und f&uuml;gt neue hinzu. Sie k&ouml;nnen hier diese nachtr&auml;glich editieren falls Sie mal eine falsche URL eingegeben haben oder den Text &auml;ndern wollen. L&ouml;schen Sie hier auch Forced-Banner, die nicht mehr g&uuml;ltig sind (z.B. abgelaufen sind). Sollten doch mit dem Werbmittel verkn&uuml;pfte Kampagnen vorhanden sein, erhalten Sie einen Warnhinweis. Neue Werbmittel k&ouml;nnen Sie hier ebenfalls hinzuf&uuml;gen. Denken Sie aber daran, dass ohne Kampagne dieses nicht angezeigt wird. Achten Sie hier auch die Reload-Sperre.', 2);
                addAdminMenuSql('forced', 'list_forced_campaigns', 'Kampagnen verwalten', 'Listet alle Kampagnen auf und zeigt deren Status an. Jederzeit k&ouml;nnen Sie Kampagnen stoppen, falls Sie dies w&uuml;nschen oder ein Regelverstoss vorliegt. Haben Sie ein Werbemittel hinzugef&uuml;gt, so f&uuml;gen Sie bitte unbedingt eine Kampagne hinzu, da es sonst nicht angezeigt wird.', 3);
                addAdminMenuSql('forced', 'list_forced_costs', 'Kosten verwalten', 'Legen Sie die Preise pro Klick f&uuml;r Forced-Werbemittelbuchungen fest und wie viele {OPEN_CONFIG}POINTS{CLOSE_CONFIG} Ihre Mitglieder erhalten sollen. Generell sollten Sie bei Mitgliederbuchungen h&ouml;here Kosten pro Klick als was Ihre Mitglieder pro Klick erhalten einstellen, da so die {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abgebaut werden (Sie k&ouml;nnen an Accountaufladungen z.B. verdienen).', 4);
                addAdminMenuSql('forced', 'stats_forced', 'Statistiken', 'Zeigt Gesamtstatistiken und zu den einzelnen Kampagnen und Werbmitteln an. Die hier angezeigte Statistik kann jedoch nicht manuell gel&ouml;scht werden (bitte auch nicht selber tun) da sie auch gleichzeitigt als Reload-Sperre dient.', 5);
index 1924031..8d78bb5 100644 (file)
@@ -282,7 +282,7 @@ function runFilterChain ($filterName, $filterData = NULL) {
                //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Running: name=' . $filterName . ',func=' . $filterFunction . ',active=' . $active);
 
                // Is the filter active or newly added??
-               if (($active == 'Y') || ($active == 'A') || ((in_array($filterName, array('shutdown','extension_remove','post_extension_run_sql'))) && ($active == 'R'))) {
+               if (($active == 'Y') || ($active == 'A') || ((in_array($filterName, array('shutdown', 'extension_remove', 'post_extension_run_sql'))) && ($active == 'R'))) {
                        // Is this filter there?
                        if (!function_exists($filterFunction)) {
                                // Should be fixed