Misc fixes / improves
[mailer.git] / inc / extensions / ext-transfer.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 10/07/2004 *
4  * ===================                          Last change: 07/08/2007 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-transfer.php                                 *
8  * -------------------------------------------------------------------- *
9  * Short description : Point transfers between members                  *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Punktetransfers zwischen Mitgliedern             *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
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                  *
23  *                                                                      *
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.                                  *
28  *                                                                      *
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.                         *
33  *                                                                      *
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,               *
37  * MA  02110-1301  USA                                                  *
38  ************************************************************************/
39
40 // Some security stuff...
41 if (!defined('__SECURITY')) {
42         die();
43 } // END - if
44
45 // Version number
46 setThisExtensionVersion('0.2.9');
47
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'));
50
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`");
56
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 '',
66 KEY (userid),
67 KEY (from_userid),
68 PRIMARY KEY (id)
69 ) Type={?_TABLE_TYPE?}");
70
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 '',
80 KEY (userid),
81 KEY (to_userid),
82 PRIMARY KEY (id)
83 ) Type={?_TABLE_TYPE?}");
84
85                 // Admin menu
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&uuml;rfen. Die evtl. installierte autopurge-Erweiterung kann dann automatisch die veralteten Transktionen l&ouml;schen.', 2);
89                 addAdminMenuSql('transfer','del_transfer','Manuell l&ouml;schen','Hier k&ouml;nnen Sie - abgesehen von der automatischen L&ouml;schung - Transaktionen selber l&ouml;schen. Bitte beachten Sie, dass immer aus- und eingehende Transaktionen gleichzeitig gel&ouml;scht werden.', 3);
90
91                 // Member menu
92                 addMemberMenuSql('main','transfer','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Transfer','N','Y', 5);
93
94                 // Add config values
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 '".getConfig('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");
100
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'");
103                 break;
104
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`");
112                 break;
113
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");
117                 break;
118
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");
122                 break;
123
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.");
129                                 break;
130
131                         case '0.0.3': // SQL queries for v0.0.3
132                                 // Update notes (these will be set as task text!)
133                                 setExtensionUpdateNotes("&Uuml;berfl&uuml;ssige unset()-Anweisungen aus der what-config_transfer.php entfernt. Dies wird bereits von der eigenen Funktion adminSaveSettings() erledigt.");
134                                 break;
135
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.");
139                                 break;
140
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'");
143
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&ouml;schen von veraltete Eintr&auml;gen kann unabh&auml;ngig von der autopurge-Erweiterung de-/aktiviert werden. Bitte aktualisieren Sie auch die beiden Admin-Templates!");
146                                 break;
147
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&auml;ndert.");
151                                 break;
152
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.");
156                                 break;
157
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.");
161                                 break;
162
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.");
166                                 break;
167
168                         case '0.1.0': // SQL queries for v0.2.1
169                                 // Update notes (these will be set as task text!)
170                                 setExtensionUpdateNotes("Men&uuml;punkte im Gast-/Mitgliedsbereich k&ouml;nnen nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
171                                 break;
172
173                         case '0.1.1': // SQL queries for v0.1.1
174                                 // Update notes (these will be set as task text!)
175                                 setExtensionUpdateNotes("Design &quot;Solid-Business&quot; eingebaut.");
176                                 break;
177
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> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
181                                 break;
182
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.");
186                                 break;
187
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.");
191                                 break;
192
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 &uuml;berfl&uuml;ssig geworden. Bitte l&ouml;schen Sie dies!");
196                                 break;
197
198                         case '0.1.6': // SQL queries for v0.1.6
199                                 // Update notes (these will be set as task text!)
200                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
201                                 break;
202
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.");
206                                 break;
207
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.");
211                                 break;
212
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.");
216                                 break;
217
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.");
221                                 break;
222
223                         case '0.2.1': // SQL queries for v0.2.1
224                                 // Update notes (these will be set as task text!)
225                                 setExtensionUpdateNotes("Durchf&uuml;hrung des Transfers korregiert.");
226                                 break;
227
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&uuml;r die Include-Befehle.");
231                                 break;
232
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')");
237
238                                 // Depends on sql_patches (or you have to execute these both SQL statements by phpMyAdmin
239                                 addExtensionUpdateDependency('sql_patches');
240
241                                 // Update notes (these will be set as task text!)
242                                 setExtensionUpdateNotes("Erweiterung in's neue Men&uuml;system integriert.");
243                                 break;
244
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&auml;ndert.");
248                                 break;
249
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");
252
253                                 // Update notes (these will be set as task text!)
254                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett ge&auml;ndert.");
255                                 break;
256
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.");
260                                 break;
261
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&ouml;nnen nun wieder wie gewohnt transferiert werden. Der Grund f&uuml;r <em>{--TRANSFER_INVALID_PASSWORD--}</em> war, dass der Cookie-Hash ein anderer ist, als der in der Datenbank... :-/");
265                                 break;
266
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>.");
270                                 break;
271
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.");
275                                 break;
276                 }
277                 break;
278
279         case 'modify': // When the extension got modified
280                 break;
281
282         case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
283                 break;
284
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'));
289                 } // END - if
290                 break;
291
292         default: // Unknown extension mode
293                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
294                 break;
295 }
296
297 // [EOF]
298 ?>