Cache class rewritten to better convention
[mailer.git] / inc / extensions / ext-cache.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 10/11/2004 *
4  * ================                             Last change: 10/11/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-cache.php                                    *
8  * -------------------------------------------------------------------- *
9  * Short description : Caching system for SQL tables on hard disc       *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Caching-System zum Auslagern von SQL-Tabellen    *
12  *                     auf der Festplatte des Servers                   *
13  * -------------------------------------------------------------------- *
14  *                                                                      *
15  * -------------------------------------------------------------------- *
16  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
17  * For more information visit: http://www.mxchange.org                  *
18  *                                                                      *
19  * This program is free software; you can redistribute it and/or modify *
20  * it under the terms of the GNU General Public License as published by *
21  * the Free Software Foundation; either version 2 of the License, or    *
22  * (at your option) any later version.                                  *
23  *                                                                      *
24  * This program is distributed in the hope that it will be useful,      *
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
27  * GNU General Public License for more details.                         *
28  *                                                                      *
29  * You should have received a copy of the GNU General Public License    *
30  * along with this program; if not, write to the Free Software          *
31  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
32  * MA  02110-1301  USA                                                  *
33  ************************************************************************/
34
35 // Some security stuff...
36 if (!defined('__SECURITY')) {
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
38         require($INC);
39 }
40
41 // Version number
42 $EXT_VERSION = "0.2.0";
43
44 // Auto-set extension version
45 if (empty($EXT_VER)) $EXT_VER = $EXT_VERSION;
46
47 // Version history array (add more with , "0.1" and so on)
48 $EXT_VER_HISTORY = array("0.0", "0.0.1", "0.0.2", "0.0.3", "0.0.4", "0.0.5", "0.0.6", "0.0.7", "0.0.8", "0.0.9", "0.1.0", "0.1.1", "0.1.2", "0.1.3", "0.1.4", "0.1.5", "0.1.6", "0.1.7", "0.1.8", "0.1.9", "0.2.0");
49
50 switch ($EXT_LOAD_MODE)
51 {
52 case "register": // Do stuff when installation is running (modules.php?module=admin&action=login is called)
53         // SQL commands to run
54         $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_update BIGINT(20) UNSIGNED NOT NULL DEFAULT 3600";
55         $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_path VARCHAR(255) NOT NULL DEFAULT 'cache/'";
56         $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_tested TINYINT(1) UNSIGNED NOT NULL DEFAULT 0";
57         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_cache','Cache-Einstellungen','Update-Interval des Caches usw. k&ouml;nnen Sie hier &auml;ndern.', 9)";
58         break;
59
60 case "remove": // Do stuff when removing extension
61         // SQL commands to run
62         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE what='config_cache' OR what='cache_stats' LIMIT 2";
63         break;
64
65 case "activate": // Do stuff when admin activates this extension
66         // SQL commands to run
67         $SQLs[] = "";
68         break;
69
70 case "deactivate": // Do stuff when admin deactivates this extension
71         // SQL commands to run
72         $SQLs[] = "";
73         break;
74
75 case "update": // Update an extension
76         switch ($EXT_VER)
77         {
78         case "0.0.1": // SQL queries for v0.0.1
79                 // Update notes (these will be set as task text!)
80                 $UPDATE_NOTES = "Es wurde die Zeitmarke der Cache-Datei extensions.cache mit ber&uuml;cksichtigt. Dies hatte die Folge, dass wenn bei einem Gast die Datei aktualisiert wurde, nur aktivierte und nicht die deaktivierten mit geladen wurden. Folglich fiehlen einfach ein paar Erweiterungen aus.";
81                 break;
82
83         case "0.0.2": // SQL queries for v0.0.2
84                 // Update notes (these will be set as task text!)
85                 $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
86                 break;
87
88         case "0.0.3": // SQL queries for v0.0.3
89                 // Update notes (these will be set as task text!)
90                 $UPDATE_NOTES = "Cache-Update repariert.";
91                 break;
92
93         case "0.0.4": // SQL queries for v0.0.4
94                 // Is the cache extension itself there?
95                 if (EXT_IS_ACTIVE("cache")) {
96                         // Check for cache when extension is already installed
97                         if ($cacheInstance->loadCacheFile("extensions", true)) $cacheInstance->destroyCacheFile();
98                 } // END - if
99
100                 // Update notes (these will be set as task text!)
101                 $UPDATE_NOTES = "Spalte &quot;keep_active&quot; ist hinzugef&uuml;gt. Cache wurde reinitialisiert.";
102                 break;
103
104         case "0.0.5": // SQL queries for v0.0.5
105                 // Update notes (these will be set as task text!)
106                 $UPDATE_NOTES = "Registrierung der Cache-Erweiterung repariert";
107                 break;
108
109         case "0.0.6": // SQL queries for v0.0.6
110                 // Update notes (these will be set as task text!)
111                 $UPDATE_NOTES = "Validierung der Cache-Datei admins.cache integriert.";
112                 break;
113
114         case "0.0.7": // SQL queries for v0.0.7
115                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD db_hits BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
116                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_hits BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
117                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (`action`,`what`,`title`,`descr`,`sort`) VALUES ('stats','cache_stats','DB-Cache','Auf Cache und gesamte Datenbank registrierte Anfragen anzeigen.', 4)";
118
119                 // Update notes (these will be set as task text!)
120                 $UPDATE_NOTES = "Hits auf den Cache werden gez&auml;hlt.";
121                 break;
122
123         case "0.0.8": // SQL queries for v0.0.8
124                 // Update notes (these will be set as task text!)
125                 $UPDATE_NOTES = "Das Umschreiben der Cache-Daten hat eine Fehlermeldung <STRONG>Falsches Passwort!</STRONG> im Admin-Bereich verursacht.";
126                 break;
127
128         case "0.0.9": // SQL queries for v0.0.9
129                 // Update notes (these will be set as task text!)
130                 $UPDATE_NOTES = "Interne Datenfeld-Management korregiert und Cache-Statistiken korregiert.";
131                 break;
132
133         case "0.1.0": // SQL queries for v0.2.1
134                 // Update notes (these will be set as task text!)
135                 $UPDATE_NOTES = "Problem mit fehlender admins-Erweiterung beseitigt.";
136                 break;
137
138         case "0.1.1": // SQL queries for v0.1.1
139                 // Update notes (these will be set as task text!)
140                 $UPDATE_NOTES = "Fehler <STRONG>Division durch 0</STRONG> repariert in den DB-Cache Statistiken.";
141                 break;
142
143         case "0.1.2": // SQL queries for v0.1.2
144                 // Update notes (these will be set as task text!)
145                 $UPDATE_NOTES = "Die Tabelen <STRONG>"._MYSQL_PREFIX."_config</STRONG>, <STRONG>"._MYSQL_PREFIX."_refsystem</STRONG>, <STRONG>"._MYSQL_PREFIX."_refdepths</STRONG> und <STRONG>"._MYSQL_PREFIX."_mod_reg</STRONG> werden nun auch ausgelagert.";
146                 break;
147
148         case "0.1.3": // SQL queries for v0.1.3
149                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_admins ENUM('Y','N') NOT NULL DEFAULT 'Y'";
150                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_acls ENUM('Y','N') NOT NULL DEFAULT 'Y'";
151                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_exts ENUM('Y','N') NOT NULL DEFAULT 'Y'";
152                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_config ENUM('Y','N') NOT NULL DEFAULT 'Y'";
153                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_modreg ENUM('Y','N') NOT NULL DEFAULT 'Y'";
154                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_refdepth ENUM('Y','N') NOT NULL DEFAULT 'Y'";
155                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_refsys ENUM('Y','N') NOT NULL DEFAULT 'Y'";
156
157                 // Update notes (these will be set as task text!)
158                 $UPDATE_NOTES = "Alle cache-baren Tabellen sind nun einzelnt ein- bzw. ausschaltbar. Falls die eine oder andere ausgelagerte Tabelle also Fehler verursachen sollte, so k&ouml;nnen Sie diese hier abschalten. Beachten Sie aber bitte, dass dann mehr Abfragen an die Datenbank gestellt wird und dies bedeutend mehr Zeit braucht, als nur die Daten aus einem Datenfeld zu laden, das sich im Speicher aufh&auml;lt.";
159                 break;
160
161         case "0.1.4": // SQL queries for v0.1.4
162                 // Update notes (these will be set as task text!)
163                 $UPDATE_NOTES = "Fehler <STRONG>Division durch 0</STRONG> repariert in <STRONG>inc/load_cache.php</STRONG>.";
164                 break;
165
166         case "0.1.5": // SQL queries for v0.1.5
167                 // Update notes (these will be set as task text!)
168                 $UPDATE_NOTES = "Weitere Fehler im System beseitigt.";
169                 break;
170
171         case "0.1.6": // SQL queries for v0.1.6
172                 // Update notes (these will be set as task text!)
173                 $UPDATE_NOTES = "Probleme w&auuml;hrend des Installationsvorganges beseitigt.";
174                 break;
175
176         case "0.1.7": // SQL queries for v0.1.7
177                 // Update notes (these will be set as task text!)
178                 $UPDATE_NOTES = "CSS-Klassenname gefixt in Templates.";
179                 break;
180
181         case "0.1.8": // SQL queries for v0.1.8
182                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_themes ENUM('Y','N') NOT NULL DEFAULT 'Y'";
183
184                 // Update notes (these will be set as task text!)
185                 $UPDATE_NOTES = "Daten von installierten Themes werden nun gecacht.";
186                 break;
187
188         case "0.1.9": // SQL queries for v0.1.9
189                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_admin_menu ENUM('Y','N') NOT NULL DEFAULT 'N'";
190
191                 // Update notes (these will be set as task text!)
192                 $UPDATE_NOTES = "Administratormen&uuml; experimentell gecacht.";
193                 break;
194
195         case "0.2.0": // SQL queries for v0.2.0
196                 // This update depends on sql_patches
197                 $EXT_UPDATE_DEPENDS = "sql_patches";
198
199                 // Update notes (these will be set as task text!)
200                 $UPDATE_NOTES = "Die Erweiterung h&auml;ngt nun von der <strong>sql_patches</strong> ab.";
201                 break;
202         }
203         break;
204
205 default: // Do stuff when extension is loaded
206         // Create instance on class
207         if ($cacheMode != "init") {
208                 // Initialize cache system only when it's needed
209                 $cacheInstance = new CacheSystem($_CONFIG['cache_update'], PATH."inc/".$_CONFIG['cache_path'], $_CONFIG['cache_tested']);
210                 if ($cacheInstance->getStatus() != "done") {
211                         // Failed to initialize cache sustem
212                         ADD_FATAL(__FILE__."(<font color=\"#0000aa\">".__LINE__."</font>): ".CACHE_CANNOT_INITIALIZE);
213                 }
214         }
215         break;
216 }
217
218 // Keep this extension always active!
219 $EXT_ALWAYS_ACTIVE = "Y";
220
221 //
222 ?>