d31fbb0cb6db257f84f03defb775a21febba5ae3
[mailer.git] / inc / extensions / ext-register.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 04/29/2004 *
4  * ===================                          Last change: 11/23/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-register.php                                 *
8  * -------------------------------------------------------------------- *
9  * Short description : Swapped out registration system for new members  *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Ausgelagertes Anmeldesystem fuer Mitglieder      *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
17  * -------------------------------------------------------------------- *
18  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
19  * Copyright (c) 2009 - 2012 by Mailer Developer Team                   *
20  * For more information visit: http://mxchange.org                      *
21  *                                                                      *
22  * This program is free software; you can redistribute it and/or modify *
23  * it under the terms of the GNU General Public License as published by *
24  * the Free Software Foundation; either version 2 of the License, or    *
25  * (at your option) any later version.                                  *
26  *                                                                      *
27  * This program is distributed in the hope that it will be useful,      *
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
30  * GNU General Public License for more details.                         *
31  *                                                                      *
32  * You should have received a copy of the GNU General Public License    *
33  * along with this program; if not, write to the Free Software          *
34  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
35  * MA  02110-1301  USA                                                  *
36  ************************************************************************/
37
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
40         die();
41 } // END - if
42
43 // Version number
44 setThisExtensionVersion('0.5.7');
45
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0', '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', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7'));
48
49 switch (getExtensionMode()) {
50         case 'register': // Do stuff when installation is running
51                 // SQL commands to run
52                 addGuestMenuSql('members', 'register', 'Anmeldung', 2);
53                 break;
54
55         case 'remove': // Do stuff when removing extension
56                 // SQL commands to run
57                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_register' LIMIT 1");
58                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='register' LIMIT 1");
59                 addDropTableSql('must_register');
60
61                 // Unregister points data
62                 unregisterExtensionPointsData('register_welcome');
63                 unregisterExtensionPointsData('referral_bonus');
64                 unregisterExtensionPointsData('referral_bonus_ref');
65
66                 // Unregister filter
67                 unregisterFilter(__FILE__, __LINE__, 'register_must_fillout', 'REGISTER_MUST_FILLOUT', TRUE, isExtensionDryRun());
68                 unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'PRE_USER_REGISTRATION_GENERIC', TRUE, isExtensionDryRun());
69                 break;
70
71         case 'activate': // Do stuff when admin activates this extension
72                 // SQL commands to run
73                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `locked`='N',`visible`='Y' WHERE `what`='register' LIMIT 1");
74                 break;
75
76         case 'deactivate': // Do stuff when admin deactivates this extension
77                 // SQL commands to run
78                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `locked`='Y',`visible`='N' WHERE `what`='register' LIMIT 1");
79                 break;
80
81         case 'update': // Update an extension
82                 switch (getCurrentExtensionVersion()) {
83                         case '0.1.0': // SQL queries for v0.1.0
84                                 addDropTableSql('must_register');
85                                 addCreateTableSql('must_register', "
86 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
87 `field_name` VARCHAR(255) NOT NULL DEFAULT '',
88 `field_required` ENUM('Y','N') NOT NULL DEFAULT 'Y',
89 PRIMARY KEY (`id`)",
90                                         'Data which fields the user must fill out');
91
92                                 // Add all entries as required (DO NOT DELETE THEM FROM DATABASE!)
93                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('surname', 'Y')");
94                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('family', 'Y')");
95                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('street_nr', 'Y')");
96                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('cntry', 'Y')");
97                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('zip', 'Y')");
98                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('city', 'Y')");
99
100                                 // Add admin menu
101                                 addAdminMenuSql('setup','config_register','Pflichtfelder','Stellen Sie hier die Pflichtfelder sowohl im Anmeldeformular, als auch im Mitgliedsbereich unter <strong>Profildaten &auml;ndern</strong> ein.', 12);
102
103                                 // Update notes (these will be set as task text!)
104                                 setExtensionUpdateNotes("Einstellbare Pflichtfelder hinzugef&uuml;gt.");
105                                 break;
106
107                         case '0.1.1': // SQL queries for v0.1.1
108                                 // Update notes (these will be set as task text!)
109                                 setExtensionUpdateNotes("Veraltetes Update entfernt.");
110                                 break;
111
112                         case '0.1.3': // SQL queries for v0.1.3
113                                 // Update notes (these will be set as task text!)
114                                 setExtensionUpdateNotes("Standard Referral-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
115                                 break;
116
117                         case '0.1.4': // SQL queries for v0.1.4
118                                 // Update notes (these will be set as task text!)
119                                 setExtensionUpdateNotes("Wegen des Theme-Supportes hat sich die URL zur CSS-Datei ge&auml;ndert.");
120                                 break;
121
122                         case '0.1.5': // SQL queries for v0.1.5
123                                 // Update notes (these will be set as task text!)
124                                 setExtensionUpdateNotes("Konfiguration der Pflichtangaben ausgelagert in Template");
125                                 break;
126
127                         case '0.1.6': // SQL queries for v0.1.6
128                                 // Update notes (these will be set as task text!)
129                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
130                                 break;
131
132                         case '0.1.7': // SQL queries for v0.1.7
133                                 // Update notes (these will be set as task text!)
134                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
135                                 break;
136
137                         case '0.1.8': // SQL queries for v0.1.8
138                                 // Update notes (these will be set as task text!)
139                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
140                                 break;
141
142                         case '0.1.9': // SQL queries for v0.1.9
143                                 // Update notes (these will be set as task text!)
144                                 setExtensionUpdateNotes("Pflichtfelder wieder eingebaut (waren irgentwie ausgebaut???)");
145                                 break;
146
147                         case '0.2.0': // SQL queries for v0.2.0
148                                 // Update notes (these will be set as task text!)
149                                 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
150                                 break;
151
152                         case '0.2.1': // SQL queries for v0.2.1
153                                 // Update notes (these will be set as task text!)
154                                 setExtensionUpdateNotes("Men&uuml;punkte im Gast-/Mitgliedsbereich k&ouml;nnen nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
155                                 break;
156
157                         case '0.2.2': // SQL queries for v0.2.2
158                                 // Update notes (these will be set as task text!)
159                                 setExtensionUpdateNotes("S&auml;mtliche Sperren bei eingeloggten Admin deaktiviert.");
160                                 break;
161
162                         case '0.2.3': // SQL queries for v0.2.3
163                                 // Update notes (these will be set as task text!)
164                                 setExtensionUpdateNotes("Cookie <u>refid</u> aus Anmeldeformular entfernt.");
165                                 break;
166
167                         case '0.2.4': // SQL queries for v0.2.4
168                                 // Update notes (these will be set as task text!)
169                                 setExtensionUpdateNotes("Design &quot;Solid-Business&quot; eingebaut.");
170                                 break;
171
172                         case '0.2.5': // SQL queries for v0.2.5
173                                 // Update notes (these will be set as task text!)
174                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
175                                 break;
176
177                         case '0.2.6': // SQL queries for v0.2.6
178                                 // Update notes (these will be set as task text!)
179                                 setExtensionUpdateNotes("IP-Nummer und Browserbezeichnung wird in Admin-Mails eingesetzt.");
180                                 break;
181
182                         case '0.2.7': // SQL queries for v0.2.7
183                                 // Update notes (these will be set as task text!)
184                                 setExtensionUpdateNotes("Referral-Id wird endlich korrekt gesetzt.");
185                                 break;
186
187                         case '0.2.8': // SQL queries for v0.2.8
188                                 // Update notes (these will be set as task text!)
189                                 setExtensionUpdateNotes("Parse error in <u>what-register.php</u> beseitigt.");
190                                 break;
191
192                         case '0.2.9': // SQL queries for v0.2.9
193                                 // Update notes (these will be set as task text!)
194                                 setExtensionUpdateNotes("Anrede &quot;Firma&quot; hinzugef&uuml;gt.");
195                                 break;
196
197                         case '0.3.0': // SQL queries for v0.3.0
198                                 // Update notes (these will be set as task text!)
199                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
200                                 break;
201
202                         case '0.3.1': // SQL queries for v0.3.1
203                                 // Update notes (these will be set as task text!)
204                                 setExtensionUpdateNotes("Email-Adresse wird vor dem Speichern auf G&uml;tigkeit hin getestet.");
205                                 break;
206
207                         case '0.3.2': // SQL queries for v0.3.2
208                                 // Update notes (these will be set as task text!)
209                                 setExtensionUpdateNotes("Einbindung der Erweiterung <strong>country</strong>, die Sie sich noch optional von <strike>meiner Seite herunterladen</strike> m&uuml;ssen.<br />
210 <br />
211 <strong>Wichtig: Laden Sie noch das Template <strong>guest_register.tpl</strong> mit hoch, welches unter templates/".getLanguage()."/html/guest/ zu finden ist!</strong>");
212                                 break;
213
214                         case '0.3.3': // SQL queries for v0.3.3
215                                 // Update notes (these will be set as task text!)
216                                 setExtensionUpdateNotes("Es werden dem Mitglied nur aktivierte L&auml;ndercodes zur Auswahl angeboten.");
217                                 break;
218
219                         case '0.3.4': // SQL queries for v0.3.4
220                                 // Update notes (these will be set as task text!)
221                                 setExtensionUpdateNotes("Auf Grund der Integration der neue Erweiterung <strong>country</strong> in die Anmeldephase klappte die Anmeldung nicht. Die dazu n&uuml;tige Verkn&uuml;pfung ist nun eingebaut und die Anmeldung klappt wieder. Vielen Dank nochmals an den Bug-Reporter (Fehlermelder)!");
222                                 break;
223
224                         case '0.3.5': // SQL queries for v0.3.5
225                                 // Update notes (these will be set as task text!)
226                                 setExtensionUpdateNotes("Design wird nach Anmeldung auch endlich im Mitgliedsmen&uuml; &uuml;bernommen.");
227                                 break;
228
229                         case '0.3.6': // SQL queries for v0.3.6
230                                 // Update notes (these will be set as task text!)
231                                 setExtensionUpdateNotes("Fehlermeldung <strong>Fatal error: Call to undefined function: get_theme() in /../../guest/what-register.php on line 190</strong> beseitigt.");
232                                 break;
233
234                         case '0.3.7': // SQL queries for v0.3.7
235                                 // Update notes (these will be set as task text!)
236                                 setExtensionUpdateNotes("Fehlermeldung <strong>Fatal error: Call to undefined function: get_curr_theme<u>e</u>() in /../../guest/what-register.php on line 190</strong> beseitigt.");
237                                 break;
238
239                         case '0.3.8': // SQL queries for v0.3.8
240                                 // Update notes (these will be set as task text!)
241                                 setExtensionUpdateNotes("Weitere SQL-Befehle abgesichert.");
242                                 break;
243
244                         case '0.3.9': // SQL queries for v0.3.9
245                                 // Update notes (these will be set as task text!)
246                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
247                                 break;
248
249                         case '0.4.0': // SQL queries for v0.4.0
250                                 // Update notes (these will be set as task text!)
251                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
252                                 break;
253
254                         case '0.4.1': // SQL queries for v0.4.1
255                                 // Update notes (these will be set as task text!)
256                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
257                                 break;
258
259                         case '0.4.2': // SQL queries for v0.4.2
260                                 addConfigAddSql('register_default', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
261
262                                 // Update notes (these will be set as task text!)
263                                 setExtensionUpdateNotes("Bei der Anmeldung kann die Standard-Auswahl zwischen Ja/Nein umgeschaltet werden. Das &Auml;ndern des Templates <strong>templates/".getLanguage()."/html/guest/guest_register.tpl</strong> ist nicht mehr n&ouml;tig.");
264                                 break;
265
266                         case '0.4.3': // SQL queries for v0.4.3
267                                 // Update notes (these will be set as task text!)
268                                 setExtensionUpdateNotes("Parser-Error in <strong>inc/modules/guest/what-register.php</strong> beseitigt.");
269                                 break;
270
271                         case '0.4.4': // SQL queries for v0.4.4
272                                 // Update notes (these will be set as task text!)
273                                 setExtensionUpdateNotes("Anmeldefehler (EMail-Adresse war immer ein Ausrufezeichen) beseitigt.");
274                                 break;
275
276                         case '0.4.5': // SQL queries for v0.4.5
277                                 // Update notes (these will be set as task text!)
278                                 setExtensionUpdateNotes("if-Anweisungen auf Funktion <strong>empty()</strong> umgestellt.");
279                                 break;
280
281                         case '0.4.6': // SQL queries for v0.4.6
282                                 // Update notes (these will be set as task text!)
283                                 setExtensionUpdateNotes("Einstellung nach {?POINTS?}-Einstellungen verlagert.");
284                                 break;
285
286                         case '0.4.7': // SQL queries for v0.4.7
287                                 // Update notes (these will be set as task text!)
288                                 setExtensionUpdateNotes("<strong>setSession()</strong> mit @-Zeichen gegen ungewollte Ausgaben abgesichert.");
289                                 break;
290
291                         case '0.4.8': // SQL queries for v0.4.8
292                                 // Update notes (these will be set as task text!)
293                                 setExtensionUpdateNotes("Hash-Erstellung von <strong>md5()</strong> auf bessere Funktion <strong>generateHash()</strong> umgestellt.");
294                                 break;
295
296                         case '0.4.9': // SQL queries for v0.4.9
297                                 // Update notes (these will be set as task text!)
298                                 setExtensionUpdateNotes("Problem mit nicht anzeigbaren Kategorien in der Anmeldung beseitigt.");
299                                 break;
300
301                         case '0.5.0': // SQL queries for v0.5.0
302                                 // Update notes (these will be set as task text!)
303                                 setExtensionUpdateNotes("Fehlermeldung <span class=\"bad\"><strong>Fatal error:</strong> Call to undefined function registerGenerateCategoryTable() in <strong>{?PATH?}/inc/modules/guest/what-register.php</strong> on line <strong>434</strong></span> beseitigt.");
304                                 break;
305
306                         case '0.5.1': // SQL queries for v0.5.1
307                                 // Update notes (these will be set as task text!)
308                                 setExtensionUpdateNotes("Mail-Template <strong>register-member.tpl</strong> gefixt. Danke an <a href=\"http://forum.mxchange.org/profile-59.html\" target=\"_blank\" title=\"Mitgliedsprofil aufrufen\">wliepe</a> f&uuml;r die Fehlerfindung!");
309                                 break;
310
311                         case '0.5.2': // SQL queries for v0.5.2
312                                 // Update notes (these will be set as task text!)
313                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
314                                 break;
315
316                         case '0.5.3': // SQL queries for v0.5.3
317                                 // Register a filter
318                                 registerFilter(__FILE__, __LINE__, 'register_must_fillout', 'REGISTER_MUST_FILLOUT', FALSE, TRUE, isExtensionDryRun());
319
320                                 // Run these SQLs
321                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('gender','Y')");
322                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('email','Y')");
323                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('birthday','Y')");
324                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_must_register` (`field_name`, `field_required`) VALUES ('marker','Y')");
325
326                                 // Update notes (these will be set as task text!)
327                                 setExtensionUpdateNotes("Filter <strong>register_must_fillout</strong> hinzugef&uuml;gt, weitere Felder in <span class=\"bad\">{?_MYSQL_PREFIX?}_must_register</span> eingef&uuml;gt.");
328                                 break;
329
330                         case '0.5.4': // SQL queries for v0.5.4
331                                 addAdminMenuSql('setup', 'config_register2', 'Anmeldeformular', 'Stellen Sie ein, wie viel Kategorien der Gast bei der Anmeldung mindestens einstellen muss. Diese Einstellung gilt nachher auch im Mitgliedsbereich!', 8);
332
333                                 // Update notes (these will be set as task text!)
334                                 setExtensionUpdateNotes("Weiteren Men&uuml;punkt aus <strong>menu-{?DEFAULT_LANG?} heraus geholt.");
335                                 break;
336
337                         case '0.5.5': // SQL queries for v0.5.5
338                                 addConfigAddSql('register_generate_password_empty', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
339
340                                 // Update notes (these will be set as task text!)
341                                 setExtensionUpdateNotes("Weiteren Men&uuml;punkt aus <strong>menu-{?DEFAULT_LANG?} heraus geholt.");
342                                 break;
343
344                         case '0.5.6': // SQL queries for v0.5.6
345                                 // Register points data
346                                 registerExtensionPointsData('register_welcome', 'points', 'LOCKED', 'DIRECT');
347
348                                 // Update notes
349                                 setExtensionUpdateNotes("Anmeldewillkommensgutschrift wird nun &uuml;ber die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
350                                 break;
351
352                         case '0.5.7': // SQL queries for v0.5.7
353                                 // Register a filter
354                                 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'PRE_USER_REGISTRATION_GENERIC', FALSE, TRUE, isExtensionDryRun());
355
356                                 // Register points data
357                                 registerExtensionPointsData('referral_bonus', 'points', 'LOCKED', 'DIRECT');
358                                 registerExtensionPointsData('referral_bonus_ref', 'points', 'LOCKED', 'DIRECT');
359
360                                 // Update notes
361                                 setExtensionUpdateNotes("Anmeldeformular komplett auf drei Filter umgestrickt (mehr dazu siehe Wiki) und weitere Verwendungszwecke registriert.");
362                                 break;
363                 } // END - switch
364                 break;
365
366         case 'modify': // When the extension got modified
367                 break;
368
369         case 'test': // For testing purposes
370                 break;
371
372         case 'init': // Do stuff when extension is initialized
373                 break;
374
375         default: // Unknown extension mode
376                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
377                 break;
378 } // END - switch
379
380 // [EOF]
381 ?>