mailer project continued:
[mailer.git] / inc / extensions / ext-payout.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 04/11/2004 *
4  * ===================                          Last change: 11/15/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-payout.php                                   *
8  * -------------------------------------------------------------------- *
9  * Short description : Payout extension                                 *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Auszahlung-Erweiterung                           *
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 of this extension
44 setThisExtensionVersion('0.3.8');
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'));
48
49 switch (getExtensionMode()) {
50         case 'register': // Do stuff when installation is running
51                 // SQL commands to run
52                 addDropTableSql('user_payouts');
53                 addCreateTableSql('user_payouts', "
54 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
55 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
56 `payout_total` FLOAT(22,3) UNSIGNED NOT NULL DEFAULT 0.000,
57 `target_account` VARCHAR(255) NOT NULL DEFAULT '',
58 `target_bank` VARCHAR(255) NOT NULL DEFAULT '',
59 `payout_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
60 `payout_timestamp` VARCHAR(10) NOT NULL DEFAULT 0,
61 `status` ENUM('NEW','ACCEPTED','REJECTED') NOT NULL DEFAULT 'NEW',
62 PRIMARY KEY (`id`),
63 INDEX (`userid`),
64 INDEX (`payout_id`)",
65                         'Done user payouts (and status)');
66
67                 addDropTableSql('payout_types');
68                 addCreateTableSql('payout_types', "
69 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
70 `type` VARCHAR(255) NOT NULL DEFAULT '',
71 `rate` FLOAT(22,3) UNSIGNED NOT NULL DEFAULT 0.000,
72 `min_points` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
73 PRIMARY KEY (`id`)",
74                         'Payout types');
75
76                 // Admin menu
77                 addAdminMenuSql('setup','config_payouts','Auszahlungen','Auszahlungsarten einstellen, neu anlegen oder l&ouml;schen.',15);
78                 addAdminMenuSql('payouts','list_payouts','Anfragen auflisten','Listet alle Auszahlungsanfragen Ihrer Mitglieder auf.',16);
79
80                 // Member menu
81                 addMemberMenuSql('main', 'payout', 'Auszahlungen', 11);
82                 break;
83
84         case 'remove': // Do stuff when removing extension
85                 // SQL commands to run
86                 addDropTableSql('user_payouts');
87                 addDropTableSql('payout_types');
88                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='payouts'");
89                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='payout'");
90                 break;
91
92         case 'activate': // Do stuff when admin activates this extension
93                 // SQL commands to run
94                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what`='payout' LIMIT 1");
95                 break;
96
97         case 'deactivate': // Do stuff when admin deactivates this extension
98                 // SQL commands to run
99                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `what`='payout' LIMIT 1");
100                 break;
101
102         case 'update': // Update an extension
103                 switch (getCurrentExtensionVersion()) {
104                         case '0.1.2': // SQL queries for v0.1.2
105                                 addAdminMenuSql('payouts', NULL, 'Auszahlungsmanagement','Management der Auszahlungsarten.',8);
106                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `action`='payouts',`title`='Einstellungen' WHERE `action`='setup' AND `what`='config_payouts' LIMIT 1");
107                                 break;
108
109                         case '0.1.3': // SQL queries for v0.1.3
110                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` ADD from_account VARCHAR(255) NOT NULL DEFAULT ''");
111                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` ADD from_pass VARCHAR(255) NOT NULL DEFAULT ''");
112                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` ADD engine_url VARCHAR(255) NOT NULL DEFAULT ''");
113                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` ADD engine_ret_ok VARCHAR(255) NOT NULL DEFAULT ''");
114                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` ADD engine_ret_failed VARCHAR(255) NOT NULL DEFAULT ''");
115                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` ADD pass_enc ENUM('md5','base64','none') NOT NULL DEFAULT 'md5'");
116                                 break;
117
118                         case '0.1.4': // SQL queries for v0.1.4
119                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_payouts` ADD password VARCHAR(255) NOT NULL DEFAULT ''");
120                                 break;
121
122                         case '0.1.5': // SQL queries for v0.1.5
123                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_payouts` ADD target_url LONGTEXT NOT NULL");
124                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_payouts` ADD banner_url LONGTEXT NOT NULL");
125                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_payouts` ADD link_text VARCHAR(30) NOT NULL DEFAULT ''");
126                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` ADD allow_url ENUM('Y','N') NOT NULL DEFAULT 'N'");
127                                 break;
128
129                         case '0.1.6': // SQL queries for v0.1.6
130                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` CHANGE `pass_enc` `pass_enc` ENUM('md5','base64','xxx') NOT NULL DEFAULT 'xxx'");
131                                 break;
132
133                         case '0.1.8': // SQL queries for v0.1.8
134                                 // Update notes (these will be set as task text!)
135                                 setExtensionUpdateNotes("Auflistung der Auszahlungen ausgelagert in Template <span class=\"bad\">member_payout.tpl</span>.");
136                                 break;
137
138                         case '0.1.9': // SQL queries for v0.1.9
139                                 // Update notes (these will be set as task text!)
140                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
141                                 break;
142
143                         case '0.2.0': // SQL queries for v0.2.0
144                                 // Update notes (these will be set as task text!)
145                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert.");
146                                 break;
147
148                         case '0.2.1': // SQL queries for v0.2.1
149                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_payouts` CHANGE `payout_total` `payout_total` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
150                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payout_types` CHANGE `rate` `rate` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
151
152                                 // Update notes (these will be set as task text!)
153                                 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
154
155                         case '0.2.2': // SQL queries for v0.2.2
156                                 // Update notes (these will be set as task text!)
157                                 setExtensionUpdateNotes("Buttons aus Aufgabenauflisten ausgelagert");
158                                 break;
159
160                         case '0.2.3': // SQL queries for v0.2.3
161                                 // Update notes (these will be set as task text!)
162                                 setExtensionUpdateNotes("Men&uuml;punkte im Gast-/Mitgliedsbereich k&ouml;nnen nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
163                                 break;
164
165                         case '0.2.4': // SQL queries for v0.2.4
166                                 // Update notes (these will be set as task text!)
167                                 setExtensionUpdateNotes("Ausgabe der Auszahlungsm&ouml;glichkeiten im Mitgliedsbereich repariert.");
168                                 break;
169
170                         case '0.2.5': // SQL queries for v0.2.5
171                                 // Update notes (these will be set as task text!)
172                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
173                                 break;
174
175                         case '0.2.6': // SQL queries for v0.2.6
176                                 // Update notes (these will be set as task text!)
177                                 setExtensionUpdateNotes("IP-Nummer und Browserbezeichnung wird in Admin-Mails eingesetzt.");
178                                 break;
179
180                         case '0.2.7': // SQL queries for v0.2.7
181                                 // Update notes (these will be set as task text!)
182                                 setExtensionUpdateNotes("Link zum Mitgliedsprofil in Funktion <u>generateUserProfileLink()</u> ausgelagert.");
183                                 break;
184
185                         case '0.2.8': // SQL queries for v0.2.8
186                                 // Update notes (these will be set as task text!)
187                                 setExtensionUpdateNotes("Work-Arount-L&ouml;sung zu tempor&auml;ren Problemen mit der Task-Id eingebaut.");
188                                 break;
189
190                         case '0.2.9': // SQL queries for v0.2.9
191                                 // Update notes (these will be set as task text!)
192                                 setExtensionUpdateNotes("Nachricht an Admin bei Auszahlungsanfrage wird endlich versendet.");
193                                 break;
194
195                         case '0.3.0': // SQL queries for v0.3.0
196                                 // Update notes (these will be set as task text!)
197                                 setExtensionUpdateNotes("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.");
198                                 break;
199
200                         case '0.3.1': // SQL queries for v0.3.1
201                                 // Update notes (these will be set as task text!)
202                                 setExtensionUpdateNotes("Fehler in Auszahlungsfunktion beseitigt, wenn Umrechnungsrate ungleich 1 eingestellt ist.");
203                                 break;
204
205                         case '0.3.2': // SQL queries for v0.3.2
206                                 // Update notes (these will be set as task text!)
207                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
208                                 break;
209
210                         case '0.3.3': // SQL queries for v0.3.3
211                                 // Update notes (these will be set as task text!)
212                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
213                                 break;
214
215                         case '0.3.4': // SQL queries for v0.3.4
216                                 // Update notes (these will be set as task text!)
217                                 setExtensionUpdateNotes("Anzahl zu &uuml;berweisende {?POINTS?} m&uuml;ssen immer gr&ouml;sser 0 sein, ansonsten bricht das Script mit einer Fehlermeldung an das Mitglied ab.");
218                                 break;
219
220                         case '0.3.5': // SQL queries for v0.3.5
221                                 // Update notes (these will be set as task text!)
222                                 setExtensionUpdateNotes("Sicherheitsupdate f&uuml;r die Include-Befehle.");
223                                 break;
224
225                         case '0.3.6': // SQL queries for v0.3.6
226                                 // Update notes (these will be set as task text!)
227                                 setExtensionUpdateNotes("Hash-Erstellung von <strong>md5()</strong> auf bessere Funktion <strong>generateHash()</strong> umgestellt.");
228                                 break;
229
230                         case '0.3.7': // SQL queries for v0.3.7
231                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Auszahlungsmanagement' WHERE `action`='payouts' AND (`what`='' OR `what` IS NULL) LIMIT 1");
232
233                                 // Update notes (these will be set as task text!)
234                                 setExtensionUpdateNotes("Verwaltung nach Management umgestellt.");
235                                 break;
236
237                         case '0.3.8': // SQL queries for v0.3.8
238                                 // Update notes (these will be set as task text!)
239                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
240                                 break;
241                 } // END - switch
242                 break;
243
244         case 'modify': // When the extension got modified
245                 break;
246
247         case 'test': // For testing purposes
248                 break;
249
250         case 'init': // Do stuff when extension is initialized
251                 break;
252
253         default: // Unknown extension mode
254                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
255                 break;
256 } // END - switch
257
258 // [EOF]
259 ?>