(no commit message)
[mailer.git] / 0.2.1 / inc / load_cache.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 11/28/2004 *\r
4  * ===============                              Last change: 11/28/2004 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : load_cache.php                                   *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : Load more cache files                            *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Mehr Cache-Dateien nachladen                     *\r
12  * -------------------------------------------------------------------- *\r
13  *                                                                      *\r
14  * -------------------------------------------------------------------- *\r
15  * Copyright (c) 2003 - 2007 by Roland Haeder                           *\r
16  * For more information visit: http://www.mxchange.org                  *\r
17  *                                                                      *\r
18  * This program is free software; you can redistribute it and/or modify *\r
19  * it under the terms of the GNU General Public License as published by *\r
20  * the Free Software Foundation; either version 2 of the License, or    *\r
21  * (at your option) any later version.                                  *\r
22  *                                                                      *\r
23  * This program is distributed in the hope that it will be useful,      *\r
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *\r
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *\r
26  * GNU General Public License for more details.                         *\r
27  *                                                                      *\r
28  * You should have received a copy of the GNU General Public License    *\r
29  * along with this program; if not, write to the Free Software          *\r
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *\r
31  * MA  02110-1301  USA                                                  *\r
32  ************************************************************************/\r
33 \r
34 // Some security stuff...\r
35 if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))\r
36 {\r
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";\r
38         require($INC);\r
39 }\r
40 \r
41 // Let's start with the admins table...\r
42 if (($CACHE->cache_file("admins", true) == true))\r
43 {\r
44         // Load cache\r
45         global $ADMINS;\r
46         $ADMINS = $CACHE->cache_load();\r
47 \r
48         // Check if valid\r
49         if (is_array($ADMINS['login']) && is_array($ADMINS['def_acl']) && is_array($ADMINS['aid']))\r
50         {\r
51                 // Check count\r
52                 if (count($ADMINS['login']) == count($ADMINS['aid']) && count($ADMINS['login']) == count($ADMINS['def_acl']) && count($ADMINS['aid']) == count($ADMINS['def_acl']))\r
53                 {\r
54                         //* DEBUG: */ echo "<PRE>";\r
55                         //* DEBUG: */ print_r($ADMINS);\r
56 \r
57                         // The cache file seems to be fine\r
58                         foreach ($ADMINS['login'] as $k=>$login)\r
59                         {\r
60                                 // Rewrite default_acl\r
61                                 $ADMINS['aid'][$login]      = $ADMINS['aid'][$k];\r
62                                 $ADMINS['password'][$login] = $ADMINS['password'][$k];\r
63                                 $ADMINS['email'][$login]    = $ADMINS['email'][$k];\r
64 \r
65                                 // Some extra data depening on version\r
66                                 if (GET_EXT_VERSION("admins") >= "0.3")\r
67                                 {\r
68                                         $ADMINS['def_acl'][$login]  = $ADMINS['def_acl'][$k];\r
69                                         if (GET_EXT_VERSION("admins") >= "0.6.7")\r
70                                         {\r
71                                                 $ADMINS['la_mode'][$login]  = $ADMINS['la_mode'][$k];\r
72                                         }\r
73                                 }\r
74 \r
75                                 //* DEBUG: */ print_r($ADMINS);\r
76 \r
77                                 // Clear array\r
78                                 unset($ADMINS['aid'][$k]);\r
79                                 unset($ADMINS['def_acl'][$k]);\r
80                                 unset($ADMINS['la_mode'][$k]);\r
81                                 unset($ADMINS['password'][$k]);\r
82                                 unset($ADMINS['email'][$k]);\r
83                         }\r
84 \r
85                         //* DEBUG: */ print_r($ADMINS);\r
86 \r
87                         // Rewrite Login\r
88                         foreach ($ADMINS['login'] as $k=>$login)\r
89                         {\r
90                                 $ADMINS['login'][$ADMINS['aid'][$login]] = $login;\r
91                                 if (!in_array($k, $ADMINS['aid']))\r
92                                 {\r
93                                         unset($ADMINS['login'][$k]);\r
94                                 }\r
95                         }\r
96 \r
97                         //* DEBUG: */ echo "****\n";\r
98                         //* DEBUG: */ print_r($ADMINS);\r
99                         //* DEBUG: */ echo "</PRE>";\r
100                         //* DEBUG: */ die();\r
101                 }\r
102                  else\r
103                 {\r
104                         // Nope, cache file is corrupted!\r
105                         $CACHE->cache_destroy();\r
106                 }\r
107         }\r
108          else\r
109         {\r
110                 // Nope, cache file is corrupted!\r
111                 $CACHE->cache_destroy();\r
112                 unset($ADMINS);\r
113         }\r
114 }\r
115  elseif (($CONFIG['cache_admins'] == "Y") && ($CSS != "1") && ($CSS != "-1"))\r
116 {\r
117         // Create cache file\r
118         $CACHE->cache_init("ADMINS");\r
119 \r
120         // Load every data from DB to cache file\r
121         $ADD = ", id, id";\r
122         if (GET_EXT_VERSION("admins") >= "0.3")   $ADD  = ", default_acl AS def_acl";\r
123         if (GET_EXT_VERSION("admins") >= "0.6.7") $ADD .= ", la_mode";\r
124 \r
125         $result_admins = SQL_QUERY("SELECT id AS aid, login, password, email".$ADD."\r
126 FROM "._MYSQL_PREFIX."_admins\r
127 ORDER BY login", __FILE__, __LINE__);\r
128         while($dummy = SQL_FETCHARRAY($result_admins))\r
129         {\r
130                 // Save row\r
131                 $CACHE->add_row($dummy);\r
132         }\r
133 \r
134         // Free memory\r
135         SQL_FREERESULT($result_admins);\r
136 }\r
137 \r
138 // Close file\r
139 $CACHE->cache_close();\r
140 \r
141 // Next cached table is the module registry (mod_reg)...\r
142 if ($CACHE->cache_file("mod_reg", true) == true)\r
143 {\r
144         // Load cache\r
145         global $MODULES;\r
146         $MODULES = $CACHE->cache_load();\r
147 \r
148         // Valid cache file\r
149         $CNT = 0;\r
150         foreach ($MODULES as $k=>$array)\r
151         {\r
152                 $CNT += count($array);\r
153         }\r
154 \r
155         // When there is a period (.) in the result this test will fail and so the cache file is\r
156         // damaged/corrupted\r
157         $TEST = "failed";\r
158         if (count($MODULES) > 0 ) $TEST = ($CNT / (count($MODULES)));\r
159         if ($TEST != bigintval($TEST))\r
160         {\r
161                 // Cache file is corrupted!\r
162                 $CACHE->cache_destroy();\r
163                 unset($MODULES);\r
164         }\r
165          else\r
166         {\r
167                 // Rewrite module cache\r
168                 $MOD = $MODULES;\r
169                 foreach ($MODULES['module'] as $key=>$mod)\r
170                 {\r
171                         $MODULES['id'][$mod] = $MODULES['id'][$key];\r
172                         unset($MODULES['id'][$key]);\r
173                         $MODULES['title'][$mod] = $MODULES['title'][$key];\r
174                         unset($MODULES['title'][$key]);\r
175                         $MODULES['locked'][$mod] = $MODULES['locked'][$key];\r
176                         unset($MODULES['locked'][$key]);\r
177                         $MODULES['hidden'][$mod] = $MODULES['hidden'][$key];\r
178                         unset($MODULES['hidden'][$key]);\r
179                         $MODULES['admin_only'][$mod] = $MODULES['admin_only'][$key];\r
180                         unset($MODULES['admin_only'][$key]);\r
181                         $MODULES['mem_only'][$mod] = $MODULES['mem_only'][$key];\r
182                         unset($MODULES['mem_only'][$key]);\r
183                         $MODULES['has_menu'][$mod] = $MODULES['has_menu'][$key];\r
184                         unset($MODULES['has_menu'][$key]);\r
185                 }\r
186         }\r
187 }\r
188  elseif (($CONFIG['cache_modreg'] == "Y") && ($CSS != "1") && ($CSS != "-1"))\r
189 {\r
190         // Create cache file here\r
191         $CACHE->cache_init("MODULES");\r
192 \r
193         // Load all modules and their data\r
194         if (GET_EXT_VERSION("sql_patches") >= "0.3.6")\r
195         {\r
196                 // Load has_menu\r
197                 $result = SQL_QUERY("SELECT id, module, title, locked, hidden, admin_only, title, mem_only, has_menu\r
198 FROM "._MYSQL_PREFIX."_mod_reg ORDER BY id", __FILE__, __LINE__);\r
199         }\r
200          else\r
201         {\r
202                 // Don't load has_menu\r
203                 $result = SQL_QUERY("SELECT id, module, title, locked, hidden, admin_only, title, mem_only\r
204 FROM "._MYSQL_PREFIX."_mod_reg ORDER BY id", __FILE__, __LINE__);\r
205         }\r
206         while ($DATA = SQL_FETCHARRAY($result))\r
207         {\r
208                 // Add row to cache file\r
209                 $CACHE->add_row($DATA);\r
210         }\r
211 \r
212         // Free memory\r
213         SQL_FREERESULT($result);\r
214 }\r
215 \r
216 // Close file\r
217 $CACHE->cache_close();\r
218 \r
219 // Next cached table is the configuration (config)...\r
220 if ($CACHE->cache_file("config", true) == true)\r
221 {\r
222         // Load config from cache\r
223         global $CFG_CACHE;\r
224         $CFG_CACHE = $CACHE->cache_load();\r
225 \r
226         // Valid cache file\r
227         $CNT = 0;\r
228         foreach ($CFG_CACHE as $k=>$array)\r
229         {\r
230                 $CNT += count($array);\r
231         }\r
232 \r
233         // When there is a period (.) in the result this test will fail and so the cache file is\r
234         // damaged/corrupted\r
235         $TEST = "failed";\r
236         if (count($CFG_CACHE) > 0 ) $TEST = ($CNT / (count($CFG_CACHE)));\r
237         if ($TEST != bigintval($TEST))\r
238         {\r
239                 // Cache file is corrupted!\r
240                 $CACHE->cache_destroy();\r
241                 unset($CFG_CACHE);\r
242         }\r
243 }\r
244  elseif (($CONFIG['cache_config'] == "Y") && ($CSS != "1") && ($CSS != "-1"))\r
245 {\r
246         // Create cache file here\r
247         $CACHE->cache_init("CONFIG");\r
248 \r
249         // Load all modules and their data\r
250         $result = SQL_QUERY("SELECT * FROM "._MYSQL_PREFIX."_config ORDER BY config", __FILE__, __LINE__);\r
251         while ($DATA = SQL_FETCHARRAY($result))\r
252         {\r
253                 // Add row to cache file\r
254                 $CACHE->add_row($DATA);\r
255         }\r
256 \r
257         // Free memory\r
258         SQL_FREERESULT($result);\r
259 }\r
260 \r
261 // Close file\r
262 $CACHE->cache_close();\r
263 \r
264 // Next cached table is the referral system (refsystem)...\r
265 if ($CACHE->cache_file("refsystem", true) == true)\r
266 {\r
267         // Load referral system from cache\r
268         global $REF_SYSTEM;\r
269         $REF_SYSTEM = $CACHE->cache_load();\r
270 \r
271         // Valid cache file\r
272         $CNT = 0;\r
273         foreach ($REF_SYSTEM as $k=>$array)\r
274         {\r
275                 $CNT += count($array);\r
276         }\r
277 \r
278         // When there is a period (.) in the result this test will fail and so the cache file is\r
279         // damaged/corrupted\r
280         $TEST = "failed";\r
281         if (count($REF_SYSTEM) > 0 ) $TEST = ($CNT / (count($REF_SYSTEM)));\r
282         if ($TEST != bigintval($TEST))\r
283         {\r
284                 // Cache file is corrupted!\r
285                 $CACHE->cache_destroy();\r
286                 unset($REF_SYSTEM);\r
287         }\r
288 }\r
289  elseif (($CONFIG['cache_refsys'] == "Y") && ($CSS != "1") && ($CSS != "-1"))\r
290 {\r
291         // Create cache file here\r
292         $CACHE->cache_init("REFSYSTEM");\r
293 \r
294         // Load all modules and their data\r
295         $result = SQL_QUERY("SELECT id, userid, level, counter FROM "._MYSQL_PREFIX."_refsystem ORDER BY userid, level", __FILE__, __LINE__);\r
296         while ($DATA = SQL_FETCHARRAY($result))\r
297         {\r
298                 // Add row to cache file\r
299                 $CACHE->add_row($DATA);\r
300         }\r
301 \r
302         // Free memory\r
303         SQL_FREERESULT($result);\r
304 }\r
305 \r
306 // Close file\r
307 $CACHE->cache_close();\r
308 \r
309 // Next cached table is the referral system (refdepths)...\r
310 if ($CACHE->cache_file("refdepths", true) == true)\r
311 {\r
312         // Load referral system from cache\r
313         global $REF_DEPTHS;\r
314         $REF_DEPTHS = $CACHE->cache_load();\r
315 \r
316         // Valid cache file\r
317         $CNT = 0;\r
318         foreach ($REF_DEPTHS as $k=>$array)\r
319         {\r
320                 $CNT += count($array);\r
321         }\r
322 \r
323         // When there is a period (.) in the result this test will fail and so the cache file is\r
324         // damaged/corrupted\r
325         $TEST = "failed";\r
326         if (count($REF_DEPTHS) > 0 ) $TEST = ($CNT / (count($REF_DEPTHS)));\r
327         if ($TEST != bigintval($TEST))\r
328         {\r
329                 // Cache file is corrupted!\r
330                 $CACHE->cache_destroy();\r
331                 unset($REF_DEPTHS);\r
332         }\r
333 }\r
334  elseif (($CONFIG['cache_refdepth'] == "Y") && ($CSS != "1") && ($CSS != "-1"))\r
335 {\r
336         // Create cache file here\r
337         $CACHE->cache_init("REFDEPTHS");\r
338 \r
339         // Load all modules and their data\r
340         $result = SQL_QUERY("SELECT id, level, percents FROM "._MYSQL_PREFIX."_refdepths ORDER BY level", __FILE__, __LINE__);\r
341         while ($DATA = SQL_FETCHARRAY($result))\r
342         {\r
343                 // Add row to cache file\r
344                 $CACHE->add_row($DATA);\r
345         }\r
346 \r
347         // Free memory\r
348         SQL_FREERESULT($result);\r
349 }\r
350 \r
351 // Close file\r
352 $CACHE->cache_close();\r
353 \r
354 // Next cached table is the referral system (admins_acls)...\r
355 if (GET_EXT_VERSION("admins") >= "0.3")\r
356 {\r
357         // Check for cache file\r
358         if ($CACHE->cache_file("admins_acls", true) == true)\r
359         {\r
360                 // Load referral system from cache\r
361                 global $ADMINS_ACLS;\r
362                 $ADMINS_ACLS = $CACHE->cache_load();\r
363 \r
364                 // Valid cache file\r
365                 $CNT = 0;\r
366                 foreach ($ADMINS_ACLS as $k=>$array)\r
367                 {\r
368                         $CNT += count($array);\r
369                 }\r
370 \r
371                 // When there is a period (.) in the result this test will fail and so the cache file is\r
372                 // damaged/corrupted\r
373                 if (count($ADMINS_ACLS) > 0)\r
374                 {\r
375                         $TEST = "failed";\r
376                         if (count($ADMINS_ACLS) > 0 ) $TEST = ($CNT / (count($ADMINS_ACLS)));\r
377                         if ($TEST != bigintval($TEST))\r
378                         {\r
379                                 // Cache file is corrupted!\r
380                                 $CACHE->cache_destroy();\r
381                                 unset($ADMINS_ACLS);\r
382                         }\r
383                 }\r
384         }\r
385          elseif (($CONFIG['cache_acls'] == "Y") && ($CSS != "1") && ($CSS != "-1"))\r
386         {\r
387                 // Create cache file here\r
388                 $CACHE->cache_init("ADMINS_ACLS");\r
389 \r
390                 // Load all modules and their data\r
391                 $result = SQL_QUERY("SELECT id, admin_id, action_menu, what_menu, access_mode FROM "._MYSQL_PREFIX."_admins_acls ORDER BY admin_id, action_menu, what_menu", __FILE__, __LINE__);\r
392                 while ($DATA = SQL_FETCHARRAY($result))\r
393                 {\r
394                         // Add row to cache file\r
395                         $CACHE->add_row($DATA);\r
396                 }\r
397 \r
398                 // Free memory\r
399                 SQL_FREERESULT($result);\r
400         }\r
401 \r
402         // Close file\r
403         $CACHE->cache_close();\r
404 }\r
405 \r
406 //\r
407 ?>\r