2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 10/07/2004 *
4 * =================== Last change: 07/08/2007 *
6 * -------------------------------------------------------------------- *
7 * File : ext-transfer.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Point transfers between members *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Punktetransfers zwischen Mitgliedern *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
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 *
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. *
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. *
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, *
36 ************************************************************************/
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
44 setThisExtensionVersion('0.3.0');
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.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'));
49 switch (getExtensionMode()) {
50 case 'register': // Do stuff when installation is running
51 // Transfer from a member
52 addDropTableSql('user_transfers_in');
53 addCreateTableSql('user_transfers_in', "
54 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
55 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
56 `from_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
57 `points` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
58 `reason` VARCHAR(255) NOT NULL DEFAULT '',
59 `time_trans` VARCHAR(14) NOT NULL DEFAULT 0,
60 `trans_id` VARCHAR(12) NOT NULL DEFAULT '',
63 INDEX (`from_userid`)",
64 'Ingoing points transfers');
66 // Transfers to a member
67 addDropTableSql('user_transfers_out');
68 addCreateTableSql('user_transfers_out', "
69 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
70 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
71 `to_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
72 `points` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
73 `reason` VARCHAR(255) NOT NULL DEFAULT '',
74 `time_trans` VARCHAR(14) NOT NULL DEFAULT 0,
75 `trans_id` VARCHAR(12) NOT NULL DEFAULT '',
79 'Outgoing points transfers');
82 addAdminMenuSql('transfer', NULL, '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Transfer','Verwalten Sie hier die {OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Transaktionen zwischen Ihren Mitgliedern.', 7);
83 addAdminMenuSql('transfer','list_transfer','Auflisten','Hier bekommen Sie alle ein- und ausgehende Transaktionen aufgelistet.', 1);
84 addAdminMenuSql('transfer','config_transfer','Einstellungen','Stellen Sie ein, wie viele Transaktionen aufgelistet werden sollen und wie alt diese werden dürfen. Die evtl. installierte autopurge-Erweiterung kann dann automatisch die veralteten Transktionen löschen.', 2);
85 addAdminMenuSql('transfer','del_transfer','Manuell löschen','Hier können Sie - abgesehen von der automatischen Löschung - Transaktionen selber löschen. Bitte beachten Sie, dass immer aus- und eingehende Transaktionen gleichzeitig gelöscht werden.', 3);
88 addMemberMenuSql('extras', 'transfer', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Transfer', 5);
91 addConfigAddSql('transfer_max', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 50');
92 addConfigAddSql('transfer_age', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 28));
93 addConfigAddSql('transfer_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT {?ONE_DAY?}');
94 addConfigAddSql('transfer_balance', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 100');
95 addConfigAddSql('transfer_code', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 5');
97 // Add row(s) to user's data
98 addExtensionAddTableColumnSql('user_data', 'opt_in', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
101 case 'remove': // Do stuff when removing extension
102 // SQL commands to run
103 addDropTableSql('user_transfers_in');
104 addDropTableSql('user_transfers_out');
105 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='transfer'");
106 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='transfer' LIMIT 1");
107 addExtensionDropTableColumnSql('user_data', 'opt_in');
109 // Unregister points data
110 unregisterExtensionPointsData('transfer');
113 case 'activate': // Do stuff when admin activates this extension
114 // SQL commands to run
115 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what`='transfer' LIMIT 1");
118 case 'deactivate': // Do stuff when admin deactivates this extension
119 // SQL commands to run
120 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what`='transfer' LIMIT 1");
123 case 'update': // Update an extension
124 switch (getCurrentExtensionVersion()) {
125 case '0.0.2': // SQL queries for v0.0.2
126 // Update notes (these will be set as task text!)
127 setExtensionUpdateNotes("Fehler <div class=\"notice\">Warning: Missing argument 2 for create_timestamp_from_selections() in {?PATH?}inc/libs/pro_functions.php on line 227</div> behoben.");
130 case '0.0.3': // SQL queries for v0.0.3
131 // Update notes (these will be set as task text!)
132 setExtensionUpdateNotes("Überflüssige unset()-Anweisungen aus der what-config_transfer.php entfernt. Dies wird bereits von der eigenen Funktion adminSaveSettings() erledigt.");
135 case '0.0.3': // SQL queries for v0.0.3
136 // Update notes (these will be set as task text!)
137 setExtensionUpdateNotes("Fehlende Abfrage im Mitlieder-Modul, on Erweiterung auch aktiviert ist.");
140 case '0.0.5': // SQL queries for v0.0.5
141 addConfigAddSql('ap_transfer', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
143 // Update notes (these will be set as task text!)
144 setExtensionUpdateNotes("Link <span class=\"bad\">Auflisten</span> im Admin-Bereich hatte das eingeloggte Mitglied und nicht den eingeloggten Admin abgefragt. Automatisches Löschen von veraltete Einträgen kann unabhängig von der autopurge-Erweiterung de-/aktiviert werden. Bitte aktualisieren Sie auch die beiden Admin-Templates!");
147 case '0.0.6': // SQL queries for v0.0.6
148 // Update notes (these will be set as task text!)
149 setExtensionUpdateNotes("Wegen des Theme-Supportes hat sich die URL zur CSS-Datei geändert.");
152 case '0.0.7': // SQL queries for v0.0.7
153 // Update notes (these will be set as task text!)
154 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
157 case '0.0.8': // SQL queries for v0.0.8
158 // Update notes (these will be set as task text!)
159 setExtensionUpdateNotes("Problem mit E in Transaktionsnummer beseitigt.");
162 case '0.0.9': // SQL queries for v0.0.9
163 // Update notes (these will be set as task text!)
164 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
167 case '0.1.0': // SQL queries for v0.2.1
168 // Update notes (these will be set as task text!)
169 setExtensionUpdateNotes("Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
172 case '0.1.1': // SQL queries for v0.1.1
173 // Update notes (these will be set as task text!)
174 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
177 case '0.1.2': // SQL queries for v0.1.2
178 // Update notes (these will be set as task text!)
179 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
182 case '0.1.3': // SQL queries for v0.1.3
183 // Update notes (these will be set as task text!)
184 setExtensionUpdateNotes("IP-Nummer und Browserbezeichnung wird in Admin-Mails eingesetzt.");
187 case '0.1.4': // SQL queries for v0.1.4
188 // Update notes (these will be set as task text!)
189 setExtensionUpdateNotes("Link zum Mitgliedsprofil in Funktion <u>generateUserProfileLink()</u> ausgelagert.");
192 case '0.1.5': // SQL queries for v0.1.5
193 // Update notes (these will be set as task text!)
194 setExtensionUpdateNotes("Template <u>admin_config_transfer_pro.tpl</u> ist überflüssig geworden. Bitte löschen Sie dies!");
197 case '0.1.6': // SQL queries for v0.1.6
198 // Update notes (these will be set as task text!)
199 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
202 case '0.1.7': // SQL queries for v0.1.7
203 // Update notes (these will be set as task text!)
204 setExtensionUpdateNotes("Wort <strong>Punkte</strong> dynamisiert.");
207 case '0.1.8': // SQL queries for v0.1.8
208 // Update notes (these will be set as task text!)
209 setExtensionUpdateNotes("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.");
212 case '0.1.9': // SQL queries for v0.1.9
213 // Update notes (these will be set as task text!)
214 setExtensionUpdateNotes("Parser-Error im Mitgliedsbereich beseitigt.");
217 case '0.2.0': // SQL queries for v0.2.0
218 // Update notes (these will be set as task text!)
219 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
222 case '0.2.1': // SQL queries for v0.2.1
223 // Update notes (these will be set as task text!)
224 setExtensionUpdateNotes("Durchführung des Transfers korregiert.");
227 case '0.2.2': // SQL queries for v0.2.2
228 // Update notes (these will be set as task text!)
229 setExtensionUpdateNotes("Sicherheitsupdate für die Include-Befehle.");
232 case '0.2.3': // SQL queries for v0.2.3
233 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu_las` (`la_id`, `la_action`, `la_what`) VALUES ('member', '', 'list_transfer')");
234 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu_las` (`la_id`, `la_action`, `la_what`) VALUES ('member', '', 'del_transfer')");
235 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu_las` (`la_id`, `la_action`, `la_what`) VALUES ('config', '', 'config_transfer')");
237 // Depends on ext-sql_patches (or you have to execute these both SQL statements by phpMyAdmin
238 addExtensionDependency('sql_patches');
240 // Update notes (these will be set as task text!)
241 setExtensionUpdateNotes("Erweiterung in's neue Menüsystem integriert.");
244 case '0.2.4': // SQL queries for v0.2.4
245 // Update notes (these will be set as task text!)
246 setExtensionUpdateNotes("<strong>Touring-Code wiederholen</strong> nach <strong>Touring-Code eingeben</strong> hin geändert.");
249 case '0.2.5': // SQL queries for v0.2.5
250 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=5 WHERE `what`='transfer' LIMIT 1");
252 // Update notes (these will be set as task text!)
253 setExtensionUpdateNotes("Eintrag im Mitgliedsmenü verschoben.");
256 case '0.2.6': // SQL queries for v0.2.6
257 // Update notes (these will be set as task text!)
258 setExtensionUpdateNotes("Hash-Erstellung von <strong>md5()</strong> auf bessere Funktion <strong>generateHash()</strong> umgestellt.");
261 case '0.2.7': // SQL queries for v0.2.7
262 // Update notes (these will be set as task text!)
263 setExtensionUpdateNotes("Die {?POINTS?} können nun wieder wie gewohnt transferiert werden. Der Grund für <span class=\"bad\">{--MEMBER_TRANSFER_INVALID_PASSWORD--}</span> war, dass der Cookie-Hash ein anderer ist, als der in der Datenbank... :-/");
266 case '0.2.8': // SQL queries for v0.2.8
267 // Update notes (these will be set as task text!)
268 setExtensionUpdateNotes("Fehlermeldung <span class=\"bad\">Notice: Undefined index: to_userid in {?PATH?}/inc/modules/member/what-transfer.php on line 301</span> gefixt. Danke an <a href=\"http://forum.mxchange.org/profile-8.html\" target=\"_blank\" title=\"Forumprofil von Piter01\">Piter01</a>.");
271 case '0.2.9': // SQL queries for v0.2.9
272 // Update notes (these will be set as task text!)
273 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
276 case '0.3.0': // SQL queries for v0.3.0
277 // Register points data
278 registerExtensionPointsData('transfer', 'points', 'LOCKED', 'DIRECT');
280 // This depends on ext-sql_patches
281 addExtensionDependency('sql_patches');
284 setExtensionUpdateNotes("Ünerweisungen anderer Mitglieder werden nun über die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
289 case 'modify': // When the extension got modified
292 case 'test': // For testing purposes
295 case 'init': // When extension is initialized
296 if ((isResetModeEnabled()) && (getConfig('ap_transfer') == 'Y')) {
297 // Automatically remove outdated or not displayed transactions
298 autoPurgeTransfers(getConfig('transfer_max'), getConfig('transfer_age'));
302 default: // Unknown extension mode
303 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));