2 /************************************************************************
\r
3 * MXChange v0.2.1 Start: 06/19/2004 *
\r
4 * ================ Last change: 12/26/2004 *
\r
6 * -------------------------------------------------------------------- *
\r
7 * File : ext-rallye.php *
\r
8 * -------------------------------------------------------------------- *
\r
9 * Short description : Referal rallye *
\r
10 * -------------------------------------------------------------------- *
\r
11 * Kurzbeschreibung : Ref-Rallyes starten *
\r
12 * -------------------------------------------------------------------- *
\r
14 * -------------------------------------------------------------------- *
\r
15 * Copyright (c) 2003 - 2008 by Roland Haeder *
\r
16 * For more information visit: http://www.mxchange.org *
\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
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
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
34 // Some security stuff...
\r
35 if ((ereg(basename(__FILE__), $_SERVER['PHP_SELF'])))
\r
37 $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
\r
42 $EXT_VERSION = "0.3.4";
\r
44 // Auto-set extension version
\r
45 if (empty($EXT_VER)) $EXT_VER = $EXT_VERSION;
\r
47 // Version history array (add more with , "0.1" and so on)
\r
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");
\r
50 switch ($EXT_LOAD_MODE)
\r
52 case "register": // Do stuff when installtion is running (modules.php?module=admin&action=login is called)
\r
53 // SQL commands to run
\r
54 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_rallye_data";
\r
55 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_rallye_prices";
\r
56 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_rallye_users";
\r
57 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_rallye_data (
\r
58 id bigint(20) not null auto_increment,
\r
59 admin_id bigint(20) not null default '0',
\r
60 title varchar(255) not null default '',
\r
61 descr longblob not null,
\r
62 template varchar(255) not null default '',
\r
63 start_time varchar(10) not null default '0',
\r
64 end_time varchar(10) not null default '0',
\r
65 auto_add_new_user enum('Y', 'N') not null default 'Y',
\r
66 is_active enum('Y', 'N') not null default 'N',
\r
67 send_notify enum('Y', 'N') not null default 'Y',
\r
68 notified enum('Y', 'N') not null default 'N',
\r
72 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_rallye_prices (
\r
73 id bigint(20) not null auto_increment,
\r
74 rallye_id bigint(20) not null default '0',
\r
75 price_level bigint(20) not null default '0',
\r
76 points bigint(20) not null default '0',
\r
77 info longblob not null,
\r
81 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_rallye_users (
\r
82 id bigint(20) not null auto_increment,
\r
83 rallye_id bigint(20) not null default '0',
\r
84 userid bigint(20) not null default '0',
\r
85 refs bigint(20) not null default '0',
\r
91 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES('rallye', '', 'Rallye-Management', 'Richten Sie neue Ref-Rallyes ein, die zeitgesteuert anfangen und aufhöhren. Dabei wird alles weitere automatisch geregelt.', '9')";
\r
92 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES('rallye', 'add_rallye', 'Neue Rallye hinzufügen', 'Neue Ref-Rallye hinzufügen.', '1')";
\r
93 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES('rallye', 'config_rallye_prices', 'Preise einrichten', 'Richten Sie Preise zu den Rallyes ein.', '2')";
\r
94 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES('rallye', 'list_rallyes', 'Rallyes verwalten', 'Alle bestehenden Ref-Rallyes auflisten, bearbeiten, stoppen, löschen usw.', '3')";
\r
96 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_guest_menu (action, what, title, visible, locked, sort) VALUES ('main', 'rallyes', 'Ref-Rallyes', 'Y', 'Y', '9')";
\r
98 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES('main', 'rallyes', 'Ref-Rallyes', 'Y', 'Y', '9')";
\r
101 case "remove": // Do stuff when removing extension
\r
102 // SQL commands to run
\r
103 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_rallye_data";
\r
104 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_rallye_prices";
\r
105 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_rallye_users";
\r
106 $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE action='rallye' LIMIT 4";
\r
107 $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_guest_menu WHERE what='rallye' LIMIT 1";
\r
108 $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_member_menu WHERE what='rallye' LIMIT 1";
\r
111 case "activate": // Do stuff when admin activates this extension
\r
112 // SQL commands to run
\r
113 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_guest_menu SET visible='Y', locked='N' WHERE what='rallyes' LIMIT 1";
\r
114 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET visible='Y', locked='N' WHERE what='rallyes' LIMIT 1";
\r
117 case "deactivate": // Do stuff when admin deactivates this extension
\r
118 // SQL commands to run
\r
119 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_guest_menu SET visible='Y', locked='Y' WHERE what='rallyes' LIMIT 1";
\r
120 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET visible='Y', locked='Y' WHERE what='rallyes' LIMIT 1";
\r
123 case "update": // Update an extension
\r
126 case "0.0.1": // SQL queries for v0.0.1
\r
127 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_rallye_data ADD expired enum('Y', 'N') not null default 'N'";
\r
129 // Update notes (these will be set as task text!)
\r
130 $UPDATE_NOTES = "Ablaufen der Rallyes intergriert.";
\r
133 case "0.0.2": // SQL queries for v0.0.2
\r
134 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_rallye_users ADD curr_points double(23,3) not null default '0.000'";
\r
136 // Update notes (these will be set as task text!)
\r
137 $UPDATE_NOTES = "Aktueller {!POINTS!}-Stand wird beachtet.";
\r
140 case "0.0.6": // SQL queries for v0.0.6
\r
141 // Update notes (these will be set as task text!)
\r
142 $UPDATE_NOTES = "Fehler <I>Unknown column 'd.useid' in 'on clause'</I> behoben.";
\r
145 case "0.0.7": // SQL queries for v0.0.7
\r
146 // Update notes (these will be set as task text!)
\r
147 $UPDATE_NOTES = "Fehlende Abfrage im Mitlieder-Modul, on Erweiterung auch aktiviert ist.";
\r
150 case "0.0.8": // SQL queries for v0.0.8
\r
151 // Update notes (these will be set as task text!)
\r
152 $UPDATE_NOTES = "Fehler <U>Template nicht gefunden</U> behoben und Admin-Formulare ausgelagert";
\r
155 case "0.0.9": // SQL queries for v0.0.9
\r
156 // Update notes (these will be set as task text!)
\r
157 $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist. Und der vorherige Fehler <U>Template nicht gefunden</U> ist endlich beseitigt.";
\r
160 case "0.1.0": // SQL queries for v0.1.0
\r
161 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_rallye_users CHANGE curr_points curr_points double(23,5) not null default '0.00000'";
\r
163 // Update notes (these will be set as task text!)
\r
164 $UPDATE_NOTES = "5 Nachkommastellen implementiert.";
\r
167 case "0.1.1": // SQL queries for v0.1.1
\r
168 // Update notes (these will be set as task text!)
\r
169 $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
\r
172 case "0.1.2": // SQL queries for v0.1.2
\r
173 // Update notes (these will be set as task text!)
\r
174 $UPDATE_NOTES = "Problem mit Speicherung der Einstellungen beseitigt.";
\r
177 case "0.1.3": // SQL queries for v0.1.3
\r
178 // Update notes (these will be set as task text!)
\r
179 $UPDATE_NOTES = "Anzeigefehler im Gast-/Mitgliedsbereich behoben.";
\r
182 case "0.1.4": // SQL queries for v0.1.4
\r
183 // Update notes (these will be set as task text!)
\r
184 $UPDATE_NOTES = "Admin-Mails korregiert.";
\r
187 case "0.1.5": // SQL queries for v0.1.5
\r
188 // Update notes (these will be set as task text!)
\r
189 $UPDATE_NOTES = "Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.";
\r
192 case "0.1.6": // SQL queries for v0.1.6
\r
193 // Update notes (these will be set as task text!)
\r
194 $UPDATE_NOTES = "Seit <A href=\"".SERVER_URL."/patches/340-Gast_Mitgliedsmenue_Deaktivieren.zip\">Patch 340</A> überflüssige HTML-Tags entfernt.";
\r
197 case "0.1.7": // SQL queries for v0.1.7
\r
198 // Update notes (these will be set as task text!)
\r
199 $UPDATE_NOTES = "Aktivierte bzw. abgelaufene Rallyes werden nur ausserhalb des CSS-Modus geladen (wenn also nicht css.php aufgerufen wurde)";
\r
202 case "0.1.8": // SQL queries for v0.1.8
\r
203 // Update notes (these will be set as task text!)
\r
204 $UPDATE_NOTES = "Weitere Templates vom Admin-Bereich ausgelagert und Referral-Anazahl in der Mail zur Rallye-Ankündigung repariert.";
\r
207 case "0.1.9": // SQL queries for v0.1.9
\r
208 // Update notes (these will be set as task text!)
\r
209 $UPDATE_NOTES = "Funktion ADMIN_USER_PROFILE_LINK() mit Verlinkung auf Referral-Liste implementiert.";
\r
212 case "0.2.0": // SQL queries for v0.2.0
\r
213 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_rallye_data ADD min_users bigint(20) not null default '0'";
\r
214 $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_rallye_data ADD min_prices bigint(20) not null default '3'";
\r
216 // Update notes (these will be set as task text!)
\r
217 $UPDATE_NOTES = "Ablaufen der Rallyes intergriert. Bauen Sie in Ihr Template <STRONG>templates/de/emails/member/member_rallye_notifty.tpl</STRONG> folgende zwei Zeilen ein:<BR>
\r
219 <LI>$DATA[min_users]</LI>
\r
220 <LI>$DATA[min_prices]</LI>
\r
222 Zudem sollten Sie mindestens folgende Templates (in <STRONG>templates/".GET_LANGUAGE()."/html/guest/</STRONG> !) aktualisieren:<BR>
\r
224 <LI><STRONG>guest_rallye_footer.tpl</STRONG></LI>
\r
225 <LI><STRONG>guest_rallye_header.tpl</STRONG></LI>
\r
229 case "0.2.1": // SQL queries for v0.2.1
\r
230 // Update notes (these will be set as task text!)
\r
231 $UPDATE_NOTES = "Wörter <STRONG>Mailtausch</STRONG>, <STRONG>Mailtausches</STRONG> und <STRONG>Mailtauscher</STRONG> sind austauschbar.";
\r
234 case "0.2.2": // SQL queries for v0.2.2
\r
235 // Update notes (these will be set as task text!)
\r
236 $UPDATE_NOTES = "Links wegen <STRONG>what=admins_contct</STRONG> geändert.";
\r
239 case "0.2.3": // SQL queries for v0.2.3
\r
240 // Update notes (these will be set as task text!)
\r
241 $UPDATE_NOTES = "HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.";
\r
244 case "0.2.4": // SQL queries for v0.2.4
\r
245 // Update notes (these will be set as task text!)
\r
246 $UPDATE_NOTES = "Abspeichern von Einstellungen repariert.";
\r
249 case "0.2.5": // SQL queries for v0.2.5
\r
250 // Update notes (these will be set as task text!)
\r
251 $UPDATE_NOTES = "Menüpunkt "Rallyes verwalten" repariert.";
\r
254 case "0.2.6": // SQL queries for v0.2.6
\r
255 // Update notes (these will be set as task text!)
\r
256 $UPDATE_NOTES = "Automatisches Starten von Referral-Rallyes repariert.";
\r
259 case "0.2.7": // SQL queries for v0.2.7
\r
260 // Update notes (these will be set as task text!)
\r
261 $UPDATE_NOTES = "Fatalen Fehler beseitigt.";
\r
264 case "0.2.8": // SQL queries for v0.2.8
\r
265 // Update notes (these will be set as task text!)
\r
267 $UPDATE_NOTES = "Vorbereitung auf die neue Mediendaten v0.0.4.";
\r
270 case "0.2.9": // SQL queries for v0.2.9
\r
271 // Update notes (these will be set as task text!)
\r
272 $UPDATE_NOTES = "Sicherheitsupdate für die Include-Befehle.";
\r
275 case "0.3.0": // SQL queries for v0.3.0
\r
276 // Update notes (these will be set as task text!)
\r
277 $UPDATE_NOTES = "if-Anweisungen auf Funktion <STRONG>empty()</STRONG> umgestellt.";
\r
280 case "0.3.1": // SQL queries for v0.3.1
\r
281 // Update notes (these will be set as task text!)
\r
282 $UPDATE_NOTES = "Erweiterung für automatisch generierte Admin-Kontaktlinks geändert.";
\r
285 case "0.3.2": // SQL queries for v0.3.2
\r
286 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET action='rals', sort='1', title='Referral-Rallye' WHERE what='rallyes' LIMIT 1";
\r
288 // Update notes (these will be set as task text!)
\r
289 $UPDATE_NOTES = "Mitgliedsmenü komplett umgebaut.";
\r
292 case "0.3.3": // SQL queries for v0.3.3
\r
293 // Update notes (these will be set as task text!)
\r
294 $UPDATE_NOTES = "Rallyes werden nun nur dann automatisch beseitigt, wenn die Erweiterung <strong>autopurge</strong> installiert und aktiviert ist.";
\r
297 case "0.3.4": // SQL queries for v0.3.4
\r
298 // Update notes (these will be set as task text!)
\r
299 $UPDATE_NOTES = "Fehlerhinweis bei deaktivierter Erweiterung verbessert.";
\r
304 default: // Do stuff when extension is loaded
\r
305 // Do stuff only when not in CSS mode
\r
306 if (($CSS != "1") && ($CSS != "-1"))
\r
308 // Get total member count
\r
309 $TOTAL = GET_TOTAL_DATA("CONFIRMED", "user_data", "userid", "status", true);
\r
311 // Add more data on higher versions
\r
312 $ADD1 = ""; $ADD2 = ""; $OR = "";
\r
313 if (GET_EXT_VERSION("rallye") >= "0.2.0")
\r
315 $ADD1 = ", min_users, min_prices";
\r
316 $ADD2 = ", d.min_users, d.min_prices";
\r
317 $OR = " OR (d.min_users <= ".$TOTAL." AND d.min_users > 0)";
\r
320 // Check for new started but not notified rallyes
\r
321 $result = SQL_QUERY("SELECT SQL_SMALL_RESULT id, title, start_time, end_time, send_notify".$ADD1."
\r
322 FROM "._MYSQL_PREFIX."_rallye_data
\r
323 WHERE is_active='Y' AND notified='N' AND expired='N' AND start_time <= ".time()." AND end_time > ".time()."
\r
324 LIMIT 1", __FILE__, __LINE__);
\r
325 if (SQL_NUMROWS($result) == 1)
\r
328 RALLYE_AUTOSTART_RALLYES($result);
\r
332 SQL_FREERESULT($result);
\r
334 // Check for expired rallyes
\r
335 $result = SQL_QUERY("SELECT SQL_SMALL_RESULT d.id, d.title, d.start_time, d.end_time, d.send_notify".$ADD2."
\r
336 FROM "._MYSQL_PREFIX."_rallye_data AS d
\r
337 WHERE d.is_active='Y' AND d.notified='Y' AND d.expired='N' AND (d.end_time <= ".time()."".$OR.")
\r
338 LIMIT 1", __FILE__, __LINE__);
\r
339 if ((SQL_NUMROWS($result) == 1) && (EXT_IS_ACTIVE("autopurge")))
\r
341 // End rallye here...
\r
342 RALLYE_EXPIRE_RALLYES($result);
\r
346 SQL_FREERESULT($result);
\r
351 // Language file prefix
\r
352 $EXT_LANG_PREFIX = "rallye";
\r
354 // Extension is always active?
\r
355 $EXT_ALWAYS_ACTIVE = "N";
\r