handling of boolean constants improved (not fully)
[mailer.git] / inc / extensions / ext-sql_patches.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 08/21/2004 *
4  * ================                             Last change: 12/04/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-sql_patches.php                              *
8  * -------------------------------------------------------------------- *
9  * Short description : SQL fixes for pro versions                       *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Ausgelagertes "Profildaten aendern"              *
12  * -------------------------------------------------------------------- *
13  *                                                                      *
14  * -------------------------------------------------------------------- *
15  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
16  * For more information visit: http://www.mxchange.org                  *
17  *                                                                      *
18  * This program is free software; you can redistribute it and/or modify *
19  * it under the terms of the GNU General Public License as published by *
20  * the Free Software Foundation; either version 2 of the License, or    *
21  * (at your option) any later version.                                  *
22  *                                                                      *
23  * This program is distributed in the hope that it will be useful,      *
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
26  * GNU General Public License for more details.                         *
27  *                                                                      *
28  * You should have received a copy of the GNU General Public License    *
29  * along with this program; if not, write to the Free Software          *
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
31  * MA  02110-1301  USA                                                  *
32  ************************************************************************/
33
34 // Some security stuff...
35 if ((ereg(basename(__FILE__), $_SERVER['PHP_SELF'])))
36 {
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.4.2";
43
44 // Auto-set extension version
45 if (!isset($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", "0.2.1", "0.2.2", "0.2.3", "0.2.4", "0.2.5", "0.2.6", "0.2.7", "0.2.8", "0.2.9", "0.3.0", "0.3.1", "0.3.2", "0.3.3", "0.3.4", "0.3.5", "0.3.6", "0.3.7", "0.3.8", "0.3.9", "0.4.0", "0.4.1", "0.4.2");
49
50 switch ($EXT_LOAD_MODE)
51 {
52 case "register": // Do stuff when installtion is running (modules.php?module=admin&action=login is called)
53         // SQL commands to run
54         $SQLs[] = "";
55         break;
56
57 case "remove": // Do stuff when removing extension
58         // SQL commands to run
59         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE
60 (action='theme' AND (what='theme_import' OR what='theme_edit')) OR
61 what='config_extensions' OR
62 what='config_home' OR
63 what='list_unconfirmed' OR
64 what='config_refid' OR
65 what='config_title' OR
66 what='sub_points' OR
67 what='config_admin' OR
68 what='list_norefs' LIMIT 12";
69         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_themes";
70         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_guest_menu WHERE action='themes' LIMIT 1";
71         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_member_menu WHERE
72 action='themes' OR
73 what='themes' OR
74 (action='stats' AND what='') OR
75 (action='extras' AND what='') OR
76 (action='rals' AND what='') OR
77 (action='account' AND what='') LIMIT 7";
78         $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET action='main' WHERE
79 action='stats' OR
80 action='extras' OR
81 action='rals' OR
82 action='account'";
83         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_admin_menu_las";
84         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_admin_menu_las_data";
85         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_admin_menu_stats";
86         break;
87
88 case "activate": // Do stuff when admin activates this extension
89         // SQL commands to run
90         $SQLs[] = "";
91         break;
92
93 case "deactivate": // Do stuff when admin deactivates this extension
94         // SQL commands to run
95         $SQLs[] = "";
96         break;
97
98 case "update": // Update an extension
99         switch ($EXT_VER)
100         {
101         case "0.0.1": // SQL queries for v0.0.1
102                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD ext_autopurge enum('Y', 'N') not null default 'Y'";
103                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10)";
104
105                 // Update notes (these will be set as task text!)
106                 $UPDATE_NOTES = "Es kann nun bestimmt werden, ob vom Server gel&ouml;schte ext-xxx.php erkannt werden sollen und die verkn&uuml;pften Daten auch aus der Datenbank entfernt werden sollen.";
107                 break;
108
109         case "0.0.2": // SQL queries for v0.0.2
110                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config CHANGE auto_purge auto_purge bigint(20) not null default '1209600'";
111
112                 // Update notes (these will be set as task text!)
113                 $UPDATE_NOTES = "In der Tabelle <STRONG>mxchange_config</STRONG> musste die Spalte <STRONG>auto_purge</STRONG> (autom. L&ouml;schen von Best&auml;tigungsmails angepasst werden (war auf dem Testsystem auf tiny(4) gesetzt.)";
114                 break;
115
116         case "0.0.3": // SQL queries for v0.0.3
117                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD points_word varchar(255) not null default 'Punkte'";
118
119                 // Update notes (these will be set as task text!)
120                 $UPDATE_NOTES = "Das Wort &quot;Punkte&quot; kann nun per Datenbank ge&auml;ndert werden. Damit k&ouml;nnen Sie anstelle des Wortes Punkte auch Klammlose oder &euro; schreiben.";
121                 break;
122
123         case "0.0.4": // SQL queries for v0.0.4
124                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD mails_page bigint(20) not null default '10'";
125
126                 // Update notes (these will be set as task text!)
127                 $UPDATE_NOTES = "Anzahl Mails pro Seite in <STRONG>EMail-Details ansehen</STRONG> und <STRONG>EMail-Archiv</STRONG> hinzugef&uuml;gt.";
128                 break;
129
130         case "0.0.5": // SQL queries for v0.0.5
131                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD index_home varchar(255) not null default 'welcome'";
132                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('setup', 'config_home', 'Home-Seite festlegen', 'Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standart) als Einstiegspunkt in das Men&uuml;system genutzt werden soll.', 5)";
133
134                 // Update notes (these will be set as task text!)
135                 $UPDATE_NOTES = "Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.";
136                 break;
137
138         case "0.0.6": // SQL queries for v0.0.6
139                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_extensions ADD ext_has_css enum('Y', 'N') not null default 'N'";
140
141                 // Update notes (these will be set as task text!)
142                 $UPDATE_NOTES = "Es k&ouml;nnen nun SQL-Updates von einander abh&auml;ngig gemacht werden und die CSS-Datei kann per Admin-Bereich (wegen Debuggings) ein- bzw. ausgeschaltet werden.";
143                 break;
144
145         case "0.0.7": // SQL queries for v0.0.7
146                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD verbose_sql enum('Y', 'N') not null default 'Y'";
147
148                 // Update notes (these will be set as task text!)
149                 $UPDATE_NOTES = "Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.";
150                 break;
151
152         case "0.0.8": // SQL queries for v0.0.8
153                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD menu_blur_spacer varchar(255) not null default '&nbsp;<STRONG><BIG>&middot;</BIG></STRONG>&nbsp;'";
154
155                 // Update notes (these will be set as task text!)
156                 $UPDATE_NOTES = "Nette Mouse-Hover-Effekte eingebaut (Anleitung <STRONG>MENUE_HOVER.txt</STRONG> zum Patchen der general.css bitte lesen!)";
157                 break;
158
159         case "0.0.9": // SQL queries for v0.0.9
160                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('email', 'list_unconfirmed', 'Unbest. Mails auflisten', 'Schauen Sie sich hier unbest&auml;tigte Maillinks an. Bitte diesen Link nur &uuml;ber dem EMail-Archiv oder EMail-Details aufrufen, direkt aufgerufen bekommen Sie eine Fehlermeldung.', 8)";
161
162                 // Update notes (these will be set as task text!)
163                 $UPDATE_NOTES = "Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.";
164                 break;
165
166         case "0.1.0": // SQL queries for v0.2.1
167                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD reg_points_mode enum('ref', 'direct') not null default 'ref'";
168
169                 // Update notes (these will be set as task text!)
170                 $UPDATE_NOTES = "Soll der einmalige Ref-Bonus &uuml;ber das Referral-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?";
171                 break;
172
173         case "0.1.1": // SQL queries for v0.1.1
174                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_admin_menu SET title='Home-/Eingangsseite', descr='Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standart) als Einstiegspunkt in das Men&uuml;system genutzt werden soll und wie die automatische Weiterleitung in der Eingangsseite funktionieren soll.' WHERE what='config_home' LIMIT 1";
175                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD index_delay tinyint(4) not null default '-1'";
176                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD index_cookie bigint(20) not null default '31536000'";
177
178                 // Update notes (these will be set as task text!)
179                 $UPDATE_NOTES = "Sie k&ouml;nnen nun <A href=\"".URL."/modules.php?module=admin&amp;what=config_home\">hier</A> die Verz&ouml;gerungszeit in der <A href=\"".URL."/index.php\">Eingangsseite</A> einstellen.";
180                 break;
181
182         case "0.1.2": // SQL queries for v0.1.2
183                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('setup', 'config_refid', 'Standart-Ref-ID', 'Stellen Sie hier die User-ID ein, die genommen werden soll, wenn der Gast n icht per Referral-Link Ihren Mailtausch aufgerufen hat.', 7)";
184                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD def_refid bigint(20) not null default '0'";
185
186                 // Update notes (these will be set as task text!)
187                 $UPDATE_NOTES = "Standart Referral-ID kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)";
188                 break;
189
190         case "0.1.3": // SQL queries for v0.1.3
191                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD refid_target enum('register', 'index') not null default 'register'";
192
193                 // Update notes (these will be set as task text!)
194                 $UPDATE_NOTES = "Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?";
195                 break;
196
197         case "0.1.4": // SQL queries for v0.1.4
198                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD default_theme varchar(255) not null default '".GET_CURR_THEME()."'";
199                 $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE action='theme' LIMIT 3";
200                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('theme', '', 'Themes', 'Verwalten Sie hier alle Designs (Themes) Ihres Mailtausch-Scriptes.', 8)";
201                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('theme', 'theme_import', 'Importieren', 'Es wird das Verzeichnis &quot;theme&quot; nach neuen Ordnern durchsucht und anschliessend in die Datenbank gesperrt aufgenommen.', 1)";
202                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('theme', 'theme_edit', 'Modifizieren', '&Auml;ndern Sie Titel, Freigaben usw. an den Themes. Sie k&ouml;nnen bis auf das Standart-Theme &quot;default&quot; auch Themes aus der Datenbank entfernen. Vorher sollten Sie es jedoch vom Server l&ouml;schen, damit es niht erneut importiert werden kann.', 2)";
203                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_guest_menu (action, what, title, sort, visible, locked) VALUES ('themes', '', 'Design-Auswahl', 4, 'Y', 'N')";
204                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, sort, visible, locked) VALUES ('themes', '', 'Design-Auswahl', 3, 'Y', 'N')";
205                 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_themes";
206                 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_themes (
207 id bigint(20) not null auto_increment,
208 theme_path varchar(255) not null default '',
209 theme_active enum('Y', 'N') not null default 'N',
210 theme_ver varchar(255) not null default '0.0',
211 PRIMARY KEY(id)
212 ) TYPE=MyISAM";
213
214                 // Update notes (these will be set as task text!)
215                 $UPDATE_NOTES = "Theme-Support integriert. Bitte laden Sie sich zu dieser Version das <A href=\"http://www.mxchange.org\">281-Patch</A> (wenn Ihr Script v0.2.0-pre7 ist) herunter, da ansonsten die Themes nicht klappen werden!";
216                 break;
217
218         case "0.1.5": // SQL queries for v0.1.5
219                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_extensions DROP ext_has_admin";
220
221                 // Update notes (these will be set as task text!)
222                 $UPDATE_NOTES = "Spalte <U>ext_has_admin</U> aus der Tabelle <U>"._MYSQL_PREFIX."_extensions</U> entfernt, da sie keinen Sinn mehr macht.";
223                 break;
224
225         case "0.1.6": // SQL queries for v0.1.6
226                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD enable_title_deco enum('Y', 'N') not null default 'Y'";
227                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD title_left varchar(10) not null default '[--'";
228                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD title_middle varchar(10) not null default '-'";
229                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD title_right varchar(10) not null default '--]'";
230                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD enable_mod_title enum('Y', 'N') not null default 'Y'";
231                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD enable_what_title enum('Y', 'N') not null default 'Y'";
232                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('setup', 'config_title', 'Seitentitel &auml;ndern', 'De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8)";
233
234                 // Update notes (these will be set as task text!)
235                 $UPDATE_NOTES = "Dekorationen des Seitentiteles lassen sich ein- und ausschalten und selber definieren; Modul-Titel und Titel der <STRONG>what</STRONG>-Dateien kann hinzugef&uuml;gt werden.";
236                 break;
237
238         case "0.1.7": // SQL queries for v0.1.7
239                 // Update notes (these will be set as task text!)
240                 $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
241                 break;
242
243         case "0.1.8": // SQL queries for v0.1.8
244                 // Update notes (these will be set as task text!)
245                 $UPDATE_NOTES = "mad_counter und last_mad werden nun aus der Datenbank geladen";
246                 break;
247
248         case "0.1.9": // SQL queries for v0.1.9
249                 // Update notes (these will be set as task text!)
250                 $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
251                 break;
252
253         case "0.2.0": // SQL queries for v0.2.0
254                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_jackpot CHANGE points points double(22,5) not null default '0.00000'";
255
256                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_payments CHANGE payment payment double(22,5) not null default '0.00000'";
257                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_payments CHANGE price price double(22,5) not null default '0.00000'";
258
259                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data CHANGE used_points used_points double(22,5) not null default '0.00000'";
260                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_points CHANGE points points double(22,5) not null default '0.00000'";
261                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_points CHANGE locked_points locked_points double(22,5) not null default '0.00000'";
262
263                 // Update notes (these will be set as task text!)
264                 $UPDATE_NOTES = "5 Nachkommastellen implementiert";
265                 break;
266
267         case "0.2.1": // SQL queries for v0.2.1
268                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD css_php enum('DIRECT', 'FILE') not null default 'FILE'";
269
270                 // Update notes (these will be set as task text!)
271                 $UPDATE_NOTES = "Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.";
272                 break;
273
274         case "0.2.2": // SQL queries for v0.2.2
275                 // Update notes (these will be set as task text!)
276                 $UPDATE_NOTES = "Erweiterung bleibt wegen integrierten Schalters immer aktiv.";
277                 break;
278
279         case "0.2.3": // SQL queries for v0.2.3
280                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD guest_menu enum('Y', 'N') not null default 'Y'";
281                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD member_menu enum('Y', 'N') not null default 'Y'";
282                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD youre_here enum('Y', 'N') not null default 'Y'";
283
284                 // Update notes (these will be set as task text!)
285                 $UPDATE_NOTES = "Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.";
286                 break;
287
288         case "0.2.4": // SQL queries for v0.2.4
289                 $auto_type = "png"; // PNG image is the default
290                 if ((file_exists(PATH."theme/".GET_CURR_THEME()."/images/code_bg.jpg")) && function_exists('imagecreatefromjpeg'))
291                 {
292                         // Switch to JPEG format
293                         $auto_type = "jpg";
294                 }
295                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD img_type enum('jpg', 'png') not null default '".$auto_type."'";
296
297                 // Update notes (these will be set as task text!)
298                 $UPDATE_NOTES = "Generierung des Mailbest&auml;tigungscodes h&auml;ngt davon ab, ob die PHP-Funktion <U>imagecreatefromjpeg()</U> und das JPEG-Bild vorhanden sind oder nicht.";
299                 break;
300
301         case "0.2.5": // SQL queries for v0.2.5
302                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data CHANGE receive_mails receive_mails bigint(20) not null default '0'";
303                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data CHANGE max_mails max_mails bigint(20) not null default '0'";
304
305                 // Update notes (these will be set as task text!)
306                 $UPDATE_NOTES = "Spalten <U>max_mails</U> und <U>receive_mails</U> auf bigint(20) gesetzt.";
307                 break;
308
309         case "0.2.6": // SQL queries for v0.2.6
310                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('user', 'sub_points', '{!POINTS!} abziehen', 'Allen oder einem Mitglied {!POINTS!} abziehen.', 8)";
311
312                 // Update notes (these will be set as task text!)
313                 $UPDATE_NOTES = "Abzug von {!POINTS!} nun m&ouml;glich.";
314                 break;
315
316         case "0.2.7": // SQL queries for v0.2.7
317                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, sort) VALUES ('main', 'themes', 'Designs', 6)";
318                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD curr_theme varchar(255) not null default 'default'";
319                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD stats_limit bigint(20) not null default '10'";
320                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_admin_menu SET what='config_stats' WHERE what='stats' LIMIT 1";
321
322                 // Update notes (these will be set as task text!)
323                 $UPDATE_NOTES = "<OL>
324 <LI>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</LI>
325 <LI>Mitgliederstatistik mit Seitennavigation.</LI>
326 </OL>";
327                 break;
328
329         case "0.2.8": // SQL queries for v0.2.8
330                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD last_login varchar(10) not null default '0'";
331
332                 // Update notes (these will be set as task text!)
333                 $UPDATE_NOTES = "Letzter Login wird gespeichert, Cache wird bei installierter Cache-Erweiterung bei Sprachen&auml;nderung aufgefrischt.";
334                 break;
335
336         case "0.2.9": // SQL queries for v0.2.9
337                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD mt_word varchar(255) not null default 'Mailtausch'";
338                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD mt_word2 varchar(255) not null default 'Mailtausches'";
339                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD mt_word3 varchar(255) not null default 'Mailtauscher'";
340
341                 // Update notes (these will be set as task text!)
342                 $UPDATE_NOTES = "W&ouml;rter <STRONG>Mailtausch</STRONG>, <STRONG>Mailtausches</STRONG> und <STRONG>Mailtauscher</STRONG> sind austauschbar.";
343                 break;
344
345         case "0.3.0": // SQL queries for v0.3.0
346                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_admin_menu SET title='{!POINTS!}/Referral-Ebenen' WHERE what='config_points' LIMIT 1";
347                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_admin_menu SET title='Mailverg&uuml;tungen...' WHERE what='payments' LIMIT 1";
348
349                 // Update notes (these will be set as task text!)
350                 $UPDATE_NOTES = "Zwei Men&uuml;punkte umbenannt.";
351                 break;
352
353         case "0.3.1": // SQL queries for v0.3.1
354                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_extensions ADD UNIQUE KEY (ext_name)";
355                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_themes ADD UNIQUE KEY (theme_path)";
356                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_themes ADD INDEX (theme_active)";
357                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_admins ADD UNIQUE KEY (login)";
358                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD INDEX (status)";
359                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_refbanner ADD INDEX (visible)";
360                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_refdepths ADD UNIQUE KEY (level)";
361                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_refsystem ADD INDEX (level)";
362                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_pool ADD INDEX (data_type)";
363                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_mod_reg ADD UNIQUE KEY (module)";
364                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_admin_menu ADD INDEX (action)";
365                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_admin_menu ADD INDEX (what)";
366                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_task_system ADD INDEX (task_type)";
367                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_task_system ADD INDEX (status)";
368                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_task_system ADD INDEX (task_created)";
369                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_task_system ADD FULLTEXT (subject)";
370                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_task_system ADD INDEX (subject)";
371                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_extensions ADD INDEX (ext_active)";
372                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD INDEX (status)";
373                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD FULLTEXT (family)";
374                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD INDEX (max_mails)";
375                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data ADD INDEX (password)";
376                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_guest_menu ADD INDEX (action)";
377                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_guest_menu ADD INDEX (what)";
378                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_guest_menu ADD INDEX (sort)";
379                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_guest_menu ADD INDEX (visible)";
380                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_guest_menu ADD INDEX (locked)";
381                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_member_menu ADD INDEX (what)";
382                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_member_menu ADD INDEX (sort)";
383                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_member_menu ADD INDEX (visible)";
384                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_member_menu ADD INDEX (locked)";
385                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_cats ADD INDEX (visible)";
386                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_cats ADD INDEX (sort)";
387
388                 // Update notes (these will be set as task text!)
389                 $UPDATE_NOTES = "Eindeutige Schl&uuml;ssel (UNIQUE KEY) und normale Schl&uuml;ssel (INDEX) gesetzt.";
390                 break;
391
392         case "0.3.2": // SQL queries for v0.3.2
393                 // Connection table between the menu system and the "logical area" system
394                 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_admin_menu_las";
395                 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_admin_menu_las (
396 id bigint(20) not null auto_increment,
397 la_id varchar(255) not null default '',
398 la_action varchar(255) not null default '',
399 la_what varchar(255) not null default '',
400 INDEX (la_id),
401 INDEX (la_action),
402 INDEX (la_what),
403 PRIMARY KEY(id)
404 ) TYPE=MyISAM";
405                 // All "logical areas" together
406                 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_admin_menu_las_data";
407                 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_admin_menu_las_data (
408 id bigint(20) not null auto_increment,
409 la_id varchar(255) not null default '',
410 la_title varchar(255) not null default '',
411 la_posx bigint(20) not null default '0',
412 la_posy bigint(20) not null default '0',
413 UNIQUE KEY (la_id),
414 INDEX (la_posx),
415 INDEX (la_posy),
416 PRIMARY KEY(id)
417 ) TYPE=MyISAM";
418                 // Which menu do you like?
419                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD admin_menu enum('NEW', 'OLD') not null default 'OLD'";
420
421                 // Insert menus
422                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('setup', 'config_admin', 'Adminmen&uuml;', 'Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9)";
423
424                 // Update notes (these will be set as task text!)
425                 $UPDATE_NOTES = "Logische Bereiche (Logical Areas = LAs) eingef&uuml;hrt. Dadurch wird das immer st&auml;rker anwachsende Admin-Men&uuml; in grosse Hauptgruppen unterteilt, wodurch ein Auffinden von Men&uuml;punkten verbessert wird.";
426                 break;
427
428         case "0.3.3": // SQL queries for v0.3.3
429                 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
430                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD admin_menu_sorter enum('Y', 'N') not null default 'Y'";
431
432                 // The statistics table
433                 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_admin_menu_stats";
434                 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_admin_menu_stats (
435 id bigint(20) not null auto_increment,
436 aid bigint(20) not null default '0',
437 type enum('la', 'action', 'what') not null default 'what',
438 clicks bigint(20) not null default '0',
439 INDEX (aid),
440 PRIMARY KEY (id)
441 ) TYPE=MyISAM";
442
443                 // Update notes (these will be set as task text!)
444                 $UPDATE_NOTES = "Admin-abh&auml;ngig werden nun Klicks im Admin-Men&uuml; gez&auml;hlt, die zur automatischen Anpassung des Men&uuml;s in den logischen Bereichen diennen. Dieses &quot;intelligente Unbauen&quot; k&ouml;nnen Sie auch ganz abschalten.";
445                 break;
446
447         case "0.3.4": // SQL queries for v0.3.4
448                 // List accounts with no referral
449                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('user', 'list_norefs', 'Mitglieder ohne Werber', 'Finden Sie hier alle Mitglieder-Accounts, die von niemandem ({--MAIN_TITLE--} wird in der Mail als Werber angegebenen) geworben wurden.', 7)";
450
451                 // Update notes (these will be set as task text!)
452                 $UPDATE_NOTES = "F&uuml;gt den Men&uuml;punkt &quot;Mitglieder ohne Werber&quot; in die Mitglieder-Management hinzu. Mit dieser neuen Funktion k&ouml;nnen Sie nach Mitglieder-Accounts ohne Werber suchen. TODO-ID #2 CLOSED";
453                 break;
454
455         case "0.3.5": // SQL queries for v0.3.5
456                 // List accounts with no referral
457                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, sort, visible, locked) VALUES ('stats', '', 'Statistiken', 4, 'Y', 'N')";
458                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, sort, visible, locked) VALUES ('stats', 'stats2', 'Framekiller-Mails', 2, 'Y', 'N')";
459                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, sort, visible, locked) VALUES ('extras', '', 'Extras', 5, 'Y', 'N')";
460                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, sort, visible, locked) VALUES ('rals', '', 'Rallyes', 6, 'Y', 'N')";
461                 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, sort, visible, locked) VALUES ('account', '', 'Ihr Account', 7, 'Y', 'N')";
462                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET sort='8' WHERE action='themes' LIMIT 1";
463                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET action='stats', sort='1', title='Klick-Mails' WHERE what='stats' LIMIT 1";
464                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET action='account', sort='1', title='Designs' WHERE what='themes' LIMIT 1";
465                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET action='extras', sort='3' WHERE what='reflinks' LIMIT 1";
466
467                 // Update notes (these will be set as task text!)
468                 $UPDATE_NOTES = "Mitgliedsmen&uuml; komplett umgebaut.";
469                 break;
470
471         case "0.3.6": // SQL queries for v0.3.6
472                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD salt_length tinyint(4) not null default '9'";
473                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD pass_scramble varchar(255) not null default ''";
474                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data MODIFY password varchar(255) not null default ''";
475                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_user_data MODIFY user_hash varchar(255) not null default ''";
476                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_admins MODIFY password varchar(255) not null default ''";
477                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD rand_no bigint(20) not null default '0'";
478                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD file_hash varchar(255) not null default ''";
479                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD master_salt varchar(255) not null default ''";
480                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_config SET rand_no=(ROUND(RAND() * 99999) + 100000) WHERE config=0 LIMIT 1";
481                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_mod_reg ADD has_menu enum('Y', 'N') NOT NULL default 'N'";
482                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_mod_reg SET has_menu='Y' WHERE module='admin' OR module='index' OR module='login' LIMIT 3";
483
484                 // Update notes (these will be set as task text!)
485                 $UPDATE_NOTES = "Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)";
486                 break;
487
488         case "0.3.7": // SQL queries for v0.3.7
489                 $UPDATE_NOTES = "Problem w&auml;hrend des Installationsvorganges behoben.";
490                 break;
491
492         case "0.3.8": // SQL queries for v0.3.8
493                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_admin_menu CHANGE descr descr MEDIUMTEXT NULL";
494                 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_pool CHANGE `text` `text` LONGTEXT NOT NULL";
495
496                 // Update notes (these will be set as task text!)
497                 $UPDATE_NOTES = "Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.";
498                 break;
499
500         case "0.3.9": // SQL queries for v0.3.9
501                 $SQLs[] = "UPDATE  "._MYSQL_PREFIX."_admin_menu SET title = REPLACE(title, '--POINTS--', '!POINTS!') WHERE title LIKE '%--POINTS--%'";
502                 $SQLs[] = "UPDATE  "._MYSQL_PREFIX."_admin_menu SET descr = REPLACE(descr, '--POINTS--', '!POINTS!') WHERE descr LIKE '%--POINTS--%'";
503                 $SQLs[] = "UPDATE  "._MYSQL_PREFIX."_guest_menu SET title = REPLACE(title, '--POINTS--', '!POINTS!') WHERE title LIKE '%--POINTS--%'";
504                 $SQLs[] = "UPDATE  "._MYSQL_PREFIX."_member_menu SET title = REPLACE(title, '--POINTS--', '!POINTS!') WHERE title LIKE '%--POINTS--%'";
505
506                 // Update notes (these will be set as task text!)
507                 $UPDATE_NOTES = "Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.";
508                 break;
509
510         case "0.4.0": // SQL queries for v0.4.0
511                 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_admin_menu SET title = 'Email-Management' WHERE action = 'email' AND what='' LIMIT 1";
512
513                 // Update notes (these will be set as task text!)
514                 $UPDATE_NOTES = "Email-Verwaltung nach Email-Management umbenannt.";
515                 break;
516
517         case "0.4.1": // SQL queries for v0.4.1
518                 $SQLs[] = "ALTER TABLE `"._MYSQL_PREFIX."_user_data` DROP INDEX `status` , ADD INDEX `status` ( `status` , `max_mails` )";
519                 $SQLs[] = "ALTER TABLE `"._MYSQL_PREFIX."_config` ADD `show_timings` ENUM ('Y','N') NOT NULL DEFAULT 'Y'";
520
521                 // Update notes (these will be set as task text!)
522                 $UPDATE_NOTES = "Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.";
523                 break;
524
525         case "0.4.2": // SQL queries for v0.4.2
526                 $SQLs[] = "ALTER TABLE `"._MYSQL_PREFIX."_online` ADD INDEX `admin_member` (`is_admin`, `is_member`)";
527                 break;
528         }
529         break;
530
531 default: // Do stuff when extension is loaded
532         $dummy = LOAD_CONFIG();
533
534         // When the sql_patches is not installed we cannot load it's configuration... *sigh*
535         if (GET_EXT_VERSION("sql_patches") != "") {
536                 $_CONFIG['ext_autopurge']     = $dummy['ext_autopurge'];
537                 $_CONFIG['mails_page']        = $dummy['mails_page'];
538                 $_CONFIG['index_home']        = $dummy['index_home'];
539                 $_CONFIG['verbose_sql']       = $dummy['verbose_sql'];
540                 $_CONFIG['middot']            = $dummy['menu_blur_spacer'];
541                 $_CONFIG['reg_points_mode']   = $dummy['reg_points_mode'];
542                 $_CONFIG['index_delay']       = $dummy['index_delay'];
543                 $_CONFIG['index_cookie']      = $dummy['index_cookie'];
544                 $_CONFIG['def_refid']         = $dummy['def_refid'];
545                 $_CONFIG['refid_target']      = $dummy['refid_target'];
546                 $_CONFIG['default_theme']     = $dummy['default_theme'];
547                 $_CONFIG['title_decoration']  = $dummy['enable_title_deco'];
548                 $_CONFIG['title_mod_show']    = $dummy['enable_mod_title'];
549                 $_CONFIG['title_what_show']   = $dummy['enable_what_title'];
550                 $_CONFIG['title_left']        = $dummy['title_left'];
551                 $_CONFIG['title_middle']      = $dummy['title_middle'];
552                 $_CONFIG['title_right']       = $dummy['title_right'];
553                 $_CONFIG['mad_counter']       = $dummy['mad_count'];
554                 $_CONFIG['last_mad']          = $dummy['mad_timestamp'];
555                 $_CONFIG['css_php']           = $dummy['css_php'];
556                 $_CONFIG['guest_menu']        = $dummy['guest_menu'];
557                 $_CONFIG['member_menu']       = $dummy['member_menu'];
558                 $_CONFIG['youre_here']        = $dummy['youre_here'];
559                 $_CONFIG['img_type']          = $dummy['img_type'];
560                 $_CONFIG['stats_limit']       = $dummy['stats_limit'];
561                 $_CONFIG['admin_menu']        = $dummy['admin_menu'];
562                 $_CONFIG['admin_menu_sorter'] = $dummy['admin_menu_sorter'];
563                 $_CONFIG['salt_length']       = $dummy['salt_length'];
564                 $_CONFIG['pass_scramble']     = trim($dummy['pass_scramble']);
565                 $_CONFIG['file_hash']         = trim($dummy['file_hash']);
566                 $_CONFIG['master_salt']       = trim($dummy['master_salt']);
567                 $_CONFIG['secret_key']        = "";
568                 $_CONFIG['show_timings']      = $dummy['show_timings'];
569
570                 // Read key from secret file
571                 if ((empty($_CONFIG['file_hash'])) || (empty($_CONFIG['master_salt'])) || (empty($_CONFIG['pass_scramble'])))
572                 {
573                         // Maybe need setup of secret key!
574                         require_once(PATH."inc/gen_sql_patches.php");
575
576                         if (GET_EXT_VERSION("cache") >= "0.1.2")
577                         {
578                                 // Remove extensions and mod_reg cache file
579                                 require_once(PATH."inc/libs/cache_functions.php");
580                                 require_once(PATH."inc/extensions/ext-cache.php");
581                                 if ($cacheInstance->cache_file("extensions", true)) $cacheInstance->cache_destroy();
582                                 if ($cacheInstance->cache_file("mod_reg", true)) $cacheInstance->cache_destroy();
583                         }
584                 }
585
586                 // Test again
587                 if ((!empty($_CONFIG['file_hash'])) && (!empty($_CONFIG['master_salt'])) && (!empty($_CONFIG['pass_scramble'])))
588                 {
589                         // File hash fas generated so we can also file the secret file... hopefully.
590                         if ((file_exists(PATH."inc/.secret/.".$_CONFIG['file_hash'])) && (is_readable(PATH."inc/.secret/.".$_CONFIG['file_hash'])))
591                         {
592                                 $_CONFIG['secret_key'] = implode("", file(PATH."inc/.secret/.".$_CONFIG['file_hash']));
593                         }
594                          else
595                         {
596                                 // Cannot read secret file!
597                                 mxchange_die("Cannot read secret file!");
598                         }
599                 }
600
601                 // Transfer words/numbers to constants
602                 define('POINTS'  , $dummy['points_word']);
603                 define('MT_WORD' , $dummy['mt_word']);
604                 define('MT_WORD2', $dummy['mt_word2']);
605                 define('MT_WORD3', $dummy['mt_word3']);
606                 define('_MAX'    , $dummy['rand_no']);
607         } else {
608                 // Set some lame ;-) default settings
609                 $_CONFIG['def_refid'] = 0;
610                 $_CONFIG['title_decoration'] = 'N';
611                 $_CONFIG['title_mod_show']   = 'Y';
612                 $_CONFIG['title_middle']     = "-";
613                 //$_CONFIG['verbose_sql']      = 'N';
614                 define('MT_WORD' , DEFAULT_MT_WORD );
615                 define('MT_WORD2', DEFAULT_MT_WORD2);
616                 define('POINTS'  , DEFAULT_POINTS);
617         }
618
619         // Remove dummy config array
620         unset($dummy);
621         break;
622 }
623
624 // Language file prefix (hmmm, what shall I write with SQL fixes? ;-) )
625 $EXT_LANG_PREFIX = "sql_patches";
626
627 // Extension is always active?
628 $EXT_ALWAYS_ACTIVE = 'Y';
629
630 //
631 ?>