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 * Needs to be in all Files and every File needs "svn propset *
18 * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
19 * -------------------------------------------------------------------- *
20 * Copyright (c) 2003 - 2009 by Roland Haeder *
21 * Copyright (c) 2009, 2010 by Mailer Developer Team *
22 * For more information visit: http://www.mxchange.org *
24 * This program is free software; you can redistribute it and/or modify *
25 * it under the terms of the GNU General Public License as published by *
26 * the Free Software Foundation; either version 2 of the License, or *
27 * (at your option) any later version. *
29 * This program is distributed in the hope that it will be useful, *
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
32 * GNU General Public License for more details. *
34 * You should have received a copy of the GNU General Public License *
35 * along with this program; if not, write to the Free Software *
36 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
38 ************************************************************************/
40 // Some security stuff...
41 if (!defined('__SECURITY')) {
46 setThisExtensionVersion('0.2.9');
48 // Version history array (add more with , '0.1.0' and so on)
49 setExtensionVersionHistory(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'));
51 switch (getExtensionMode()) {
52 case 'register': // Do stuff when installation is running
53 // SQL commands to run
54 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_user_transfers_in`');
55 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_user_transfers_out`');
57 // Transfer from a member
58 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_user_transfers_in` (
59 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
60 userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
61 from_userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
62 points BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
63 reason VARCHAR(255) NOT NULL DEFAULT '',
64 time_trans VARCHAR(14) NOT NULL DEFAULT 0,
65 trans_id VARCHAR(12) NOT NULL DEFAULT '',
69 ) Type={?_TABLE_TYPE?}");
71 // Transfers to a member
72 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_user_transfers_out` (
73 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
74 userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
75 to_userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
76 points BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
77 reason VARCHAR(255) NOT NULL DEFAULT '',
78 time_trans VARCHAR(14) NOT NULL DEFAULT 0,
79 trans_id VARCHAR(12) NOT NULL DEFAULT '',
83 ) Type={?_TABLE_TYPE?}");
86 addAdminMenuSql('transfer', NULL, '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Transfer','Verwalten Sie hier die {OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Transaktionen zwischen Ihren Mitgliedern.', 7);
87 addAdminMenuSql('transfer','list_transfer','Auflisten','Hier bekommen Sie alle ein- und ausgehende Transaktionen aufgelistet.', 1);
88 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);
89 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);
92 addMemberMenuSql('main','transfer','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Transfer','N','Y', 5);
95 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `transfer_max` BIGINT(20) UNSIGNED NOT NULL DEFAULT 50");
96 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `transfer_age` BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('ONE_DAY')*28));
97 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `transfer_timeout` BIGINT(20) UNSIGNED NOT NULL DEFAULT {?ONE_DAY?}");
98 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `transfer_balance` BIGINT(20) UNSIGNED NOT NULL DEFAULT 100");
99 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `transfer_code` BIGINT(20) UNSIGNED NOT NULL DEFAULT 5");
101 // Add row(s) to user's data
102 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD opt_in ENUM('Y','N') NOT NULL DEFAULT 'N'");
105 case 'remove': // Do stuff when removing extension
106 // SQL commands to run
107 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_user_transfers_in`');
108 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_user_transfers_out`');
109 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='transfer'");
110 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='transfer'");
111 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` DROP `opt_in`");
114 case 'activate': // Do stuff when admin activates this extension
115 // SQL commands to run
116 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='transfer' LIMIT 1");
119 case 'deactivate': // Do stuff when admin deactivates this extension
120 // SQL commands to run
121 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='transfer' LIMIT 1");
124 case 'update': // Update an extension
125 switch (getCurrentExtensionVersion()) {
126 case '0.0.2': // SQL queries for v0.0.2
127 // Update notes (these will be set as task text!)
128 setExtensionUpdateNotes("Fehler <div class=\"admin_failed\">Warning: Missing argument 2 for create_timestamp_from_selections() in {?PATH?}inc/libs/pro_functions.php on line 227</div> behoben.");
131 case '0.0.3': // SQL queries for v0.0.3
132 // Update notes (these will be set as task text!)
133 setExtensionUpdateNotes("Überflüssige unset()-Anweisungen aus der what-config_transfer.php entfernt. Dies wird bereits von der eigenen Funktion adminSaveSettings() erledigt.");
136 case '0.0.3': // SQL queries for v0.0.3
137 // Update notes (these will be set as task text!)
138 setExtensionUpdateNotes("Fehlende Abfrage im Mitlieder-Modul, on Erweiterung auch aktiviert ist.");
141 case '0.0.5': // SQL queries for v0.0.5
142 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD ap_transfer ENUM('Y','N') NOT NULL DEFAULT 'Y'");
144 // Update notes (these will be set as task text!)
145 setExtensionUpdateNotes("Link <em>Auflisten</em> 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!");
148 case '0.0.6': // SQL queries for v0.0.6
149 // Update notes (these will be set as task text!)
150 setExtensionUpdateNotes("Wegen des Theme-Supportes hat sich die URL zur CSS-Datei geändert.");
153 case '0.0.7': // SQL queries for v0.0.7
154 // Update notes (these will be set as task text!)
155 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
158 case '0.0.8': // SQL queries for v0.0.8
159 // Update notes (these will be set as task text!)
160 setExtensionUpdateNotes("Problem mit E in Transaktionsnummer beseitigt.");
163 case '0.0.9': // SQL queries for v0.0.9
164 // Update notes (these will be set as task text!)
165 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
168 case '0.1.0': // SQL queries for v0.2.1
169 // Update notes (these will be set as task text!)
170 setExtensionUpdateNotes("Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
173 case '0.1.1': // SQL queries for v0.1.1
174 // Update notes (these will be set as task text!)
175 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
178 case '0.1.2': // SQL queries for v0.1.2
179 // Update notes (these will be set as task text!)
180 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
183 case '0.1.3': // SQL queries for v0.1.3
184 // Update notes (these will be set as task text!)
185 setExtensionUpdateNotes("IP-Nummer und Browserbezeichnung wird in Admin-Mails eingesetzt.");
188 case '0.1.4': // SQL queries for v0.1.4
189 // Update notes (these will be set as task text!)
190 setExtensionUpdateNotes("Link zum Mitgliedsprofil in Funktion <u>generateUserProfileLink()</u> ausgelagert.");
193 case '0.1.5': // SQL queries for v0.1.5
194 // Update notes (these will be set as task text!)
195 setExtensionUpdateNotes("Template <u>admin_config_transfer_pro.tpl</u> ist überflüssig geworden. Bitte löschen Sie dies!");
198 case '0.1.6': // SQL queries for v0.1.6
199 // Update notes (these will be set as task text!)
200 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
203 case '0.1.7': // SQL queries for v0.1.7
204 // Update notes (these will be set as task text!)
205 setExtensionUpdateNotes("Wort <strong>Punkte</strong> dynamisiert.");
208 case '0.1.8': // SQL queries for v0.1.8
209 // Update notes (these will be set as task text!)
210 setExtensionUpdateNotes("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.");
213 case '0.1.9': // SQL queries for v0.1.9
214 // Update notes (these will be set as task text!)
215 setExtensionUpdateNotes("Parser-Error im Mitgliedsbereich beseitigt.");
218 case '0.2.0': // SQL queries for v0.2.0
219 // Update notes (these will be set as task text!)
220 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
223 case '0.2.1': // SQL queries for v0.2.1
224 // Update notes (these will be set as task text!)
225 setExtensionUpdateNotes("Durchführung des Transfers korregiert.");
228 case '0.2.2': // SQL queries for v0.2.2
229 // Update notes (these will be set as task text!)
230 setExtensionUpdateNotes("Sicherheitsupdate für die Include-Befehle.");
233 case '0.2.3': // SQL queries for v0.2.3
234 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu_las` (la_id, la_action, la_what) VALUES ('member', '', 'list_transfer')");
235 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu_las` (la_id, la_action, la_what) VALUES ('member', '', 'del_transfer')");
236 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_admin_menu_las` (la_id, la_action, la_what) VALUES ('config', '', 'config_transfer')");
238 // Depends on sql_patches (or you have to execute these both SQL statements by phpMyAdmin
239 addExtensionUpdateDependency('sql_patches');
241 // Update notes (these will be set as task text!)
242 setExtensionUpdateNotes("Erweiterung in's neue Menüsystem integriert.");
245 case '0.2.4': // SQL queries for v0.2.4
246 // Update notes (these will be set as task text!)
247 setExtensionUpdateNotes("<strong>Touring-Code wiederholen</strong> nach <strong>Touring-Code eingeben</strong> hin geändert.");
250 case '0.2.5': // SQL queries for v0.2.5
251 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=5 WHERE `what`='transfer' LIMIT 1");
253 // Update notes (these will be set as task text!)
254 setExtensionUpdateNotes("Mitgliedsmenü komplett geändert.");
257 case '0.2.6': // SQL queries for v0.2.6
258 // Update notes (these will be set as task text!)
259 setExtensionUpdateNotes("Hash-Erstellung von <strong>md5()</strong> auf bessere Funktion <strong>generateHash()</strong> umgestellt.");
262 case '0.2.7': // SQL queries for v0.2.7
263 // Update notes (these will be set as task text!)
264 setExtensionUpdateNotes("Die {?POINTS?} können nun wieder wie gewohnt transferiert werden. Der Grund für <em>{--TRANSFER_INVALID_PASSWORD--}</em> war, dass der Cookie-Hash ein anderer ist, als der in der Datenbank... :-/");
267 case '0.2.8': // SQL queries for v0.2.8
268 // Update notes (these will be set as task text!)
269 setExtensionUpdateNotes("Fehlermeldung <em>Notice: Undefined index: to_userid in {?PATH?}/inc/modules/member/what-transfer.php on line 301</em> gefixt. Danke an <a href=\"http://forum.mxchange.org/profile-8.html\" target=\"_blank\" title=\"Forumprofil von Piter01\">Piter01</a>.");
272 case '0.2.9': // SQL queries for v0.2.9
273 // Update notes (these will be set as task text!)
274 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
279 case 'modify': // When the extension got modified
282 case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
285 case 'init': // When extension is initialized
286 if ((isResetModeEnabled()) && (getConfig('ap_transfer') == 'Y')) {
287 // Automatically remove outdated or not displayed transactions
288 autoPurgeTransfers(getConfig('transfer_max'), getConfig('transfer_age'));
292 default: // Unknown extension mode
293 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));