Better report this instead of silent logging
[mailer.git] / inc / extensions / ext-bank.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 05/28/2007 *
4  * ===================                          Last change: 05/31/2007 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-bank.php                                     *
8  * -------------------------------------------------------------------- *
9  * Short description : A little bank account                            *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Ein einfaches Bankaccount                        *
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 number
44 setThisExtensionVersion('0.0.0');
45
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0'));
48
49 // This extension is in development (non-productive)
50 enableExtensionProductive(FALSE);
51
52 switch (getExtensionMode()) {
53         case 'register': // Do stuff when installation is running
54                 // SQL commands to run
55                 addDropTableSql('bank_accounts');
56                 addCreateTableSql('bank_accounts', "
57 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
58 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
59 `account_created` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
60 `account_locked` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
61 `locked_reason` TINYTEXT NOT NULL,
62 `status` ENUM('NEW','ACTIVE','LOCKED') NOT NULL DEFAULT 'NEW',
63 `account_balance` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
64 `output_mode` ENUM('LOGIN','EMAIL','DISABLED'),
65 `pin` VARCHAR(50) NOT NULL DEFAULT '',
66 `tan_mode` ENUM('NORMAL','INDEXED'),
67 `tan_list_status` ENUM('PENDING','ACTIVE','INVALID','LOCKED') NOT NULL DEFAULT 'PENDING',
68 `tan_key` VARCHAR(50) NOT NULL DEFAULT '',
69 `month_transfered` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
70 `last_tan` VARCHAR(5) NOT NULL DEFAULT '00000',
71 `last_tan_stamp` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
72 `last_tan_purpose` TINYTEXT NOT NULL,
73 `account_type` ENUM('CHECK','SAVING') NOT NULL DEFAULT 'CHECK',
74 `overdraft_credit` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
75 PRIMARY KEY (`id`),
76 UNIQUE INDEX (`pin`),
77 INDEX `userid_type` (`userid`, `account_type`),
78 INDEX (`account_created`),
79 INDEX (`account_locked`),
80 INDEX (`last_tan_stamp`)",
81                         'User bank accounts data');
82
83                 addDropTableSql('bank_transfers');
84                 addCreateTableSql('bank_transfers', "
85 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
86 `to_account_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
87 `from_account_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
88 `points_amount` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
89 `day_bookkeeping` CHAR(4) NOT NULL DEFAULT '0000',
90 `day_available` CHAR(4) NOT NULL DEFAULT '0000',
91 `transfer_purpose` TINYTEXT NOT NULL,
92 PRIMARY KEY (`id`),
93 INDEX (`to_account_id`, `from_account_id`),
94 INDEX (`day_bookkeeping`, `day_available`)",
95                         'Bank user->user transfers');
96
97                 addDropTableSql('bank_packages');
98                 addCreateTableSql('bank_packages', "
99 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
100 `title` VARCHAR(255) NOT NULL DEFAULT '',
101 `description` TINYTEXT NOT NULL,
102 `account_fee` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
103 `free_transfers` INT(7) UNSIGNED NOT NULL DEFAULT 0,
104 `transfer_fee` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
105 `available` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
106 `output_system_mode` ENUM('LOGIN','EMAIL','DISABLED'),
107 `package_active` ENUM('Y','N') NOT NULL DEFAULT 'N',
108 `free_months_no_fee` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
109 `interest_plus` FLOAT(7,5) UNSIGNED NOT NULL DEFAULT 0.00000,
110 `interest_minus` FLOAT(7,5) UNSIGNED NOT NULL DEFAULT 0.00000,
111 `first_payment` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
112 `free_account_income` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
113 `free_account_stuff` TINYTEXT null,
114 `tan_lock` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
115 PRIMARY KEY (`id`)",
116                         'Bank account packages');
117
118                 // Free_account_stuff will be a list of columns of the table _bank_packages
119                 // what the member shall get for the specified income. output_system_mode
120                 // must be extended with the mode you get for free: output_system_mode:LOGIN
121                 // should be fine. More than one entry and not DISABLED ;) are not supported.
122                 addDropTableSql('bank_tanlist');
123                 addCreateTableSql('bank_tanlist', "
124 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
125 `idx` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
126 `account_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
127 `tan` VARCHAR(50) NOT NULL DEFAULT '',
128 `used` ENUM('Y','N') NOT NULL DEFAULT 'N',
129 PRIMARY KEY (`id`),
130 UNIQUE INDEX (`account_id`, `tan`)",
131                         'Bank TAN lists per user');
132
133                 // Admin menu queries
134                 addAdminMenuSql('bank', NULL, 'Bank-Accounts', 'Verwalten Sie hier alle Bank-Accounts Ihrer Mitglieder, sowie Angebotspakete und &Uuml;berweisungen.', 6);
135                 addAdminMenuSql('bank', 'add_bank_package', 'Angebotspaket hinzuf&uuml;gen', 'Neues Angebotspaket erstellen.', 1);
136                 addAdminMenuSql('bank', 'list_bank_package', 'Angebotspakete auflisten', 'Listet alle erstellten Angebotspakete auf.', 2);
137                 addAdminMenuSql('bank', 'edit_bank_package', 'Angebotspaket &auml;ndern', 'Nach Auswahl eines Angebotspaketes k&ouml;nnen Sie dieses hier ver&auml;ndern. Bitte beachten Sie, dass Ihre Mitglieder keine Mail dabei erhalten!', 3);
138                 addAdminMenuSql('bank', 'lock_bank_package', 'Angebotspaket ent-/sperren', 'Nehmen Sie Angebotspakete zur tempor&auml;ren &Uuml;berarbeitung zuvor heraus, dann k&ouml;nnen Sie in Ruhe dr&uuml;ber nachdenken und Berechnungen anstellen. Freigabe ist hier auch m&ouml;glich.', 4);
139                 addAdminMenuSql('bank', 'del_bank_package', 'Angebotspaket l&ouml;schen', 'Nach Auswahl eines Angebotspaketes k&ouml;nnen Sie mit abschliessender Best&auml;tigung Angebotspakete ganz l&ouml;schen. Bitte beachten Sie, dass dies nur m&ouml;glich ist, wenn auch alle Accounts dieses nicht mehr nutzen!', 5);
140                 addAdminMenuSql('bank', 'add_bank_account', 'Konto anlegen', 'Legen Sie hier Konten f&uuml;r die Mitglieder an (falls Ihre Mitglieder nicht zurecht kommen).', 6);
141                 addAdminMenuSql('bank', 'list_bank_account', 'Konten auflisten', 'Auflistung aller Konto oder eines ausw&auml;hlbaren Mitglieds.', 7);
142                 addAdminMenuSql('bank', 'edit_bank_account', 'Konto &auml;ndern', '&Auml;ndern Sie hier bestehende Konten, z.B. den Dispositionskredit usw. PINs und TANs sind hier nicht &auml;nderbar! Best&auml;tigungsmails sind optional versendbar.', 8);
143                 addAdminMenuSql('bank', 'lock_bank_account', 'Konto ent-/sperren', 'Sperren Sie hier Konten bei Bedarf. Auch das Freischalten ist hier m&ouml;glich. Eine Benachrichtigung per Mail wird dann an das Mitglied ausgesendet.', 9);
144                 addAdminMenuSql('bank', 'del_bank_account', 'Konto l&ouml;schen', 'L&ouml;schen von Konten mit Best&auml;tigungsmail. Wenn Sie ein Mitglieder-Account l&ouml;schen, so m&uuml;ssen Sie derzeit seine angelegten Konten auch l&ouml;schen!', 10);
145                 addAdminMenuSql('bank', 'send_bank_tanlist', 'TAN-Liste aussenden', 'Listet zuerst Anfragen von Mitgliedern auf, die eine neue (i)TAN-Liste ben&ouml;tigen, anschliessend kann die Liste dann ausgesendet werden.', 11);
146                 addAdminMenuSql('bank', 'lock_bank_tanlist', 'TAN-Liste ent-/sperren', 'Bestehende TAN-Listen k&ouml;nnen auf Kundenwunsch hin gesperrt und wieder entsperrt werden. Dies passiert auch, wenn der Kunde x-mal (siehe Angebotspakete) eine verkehrte TAN eingegeben hat. Einzelne TANs sind nicht ent-/sperrbar.', 12);
147                 addAdminMenuSql('bank', 'list_bank_trans', '&Uuml;berweisungen auflisten', 'Nach Auswahl eines Mitgliedes und einem Konto (ben&ouml;tgt JavaScript!) k&ouml;nnen Sie seitenweise die &Uuml;berweisungen durchschauen.', 13);
148
149                 // Member menu
150                 addMemberMenuSql('bank', NULL, 'Bank-Account', 3);
151                 addMemberMenuSql('bank', 'bank_infos', 'Angebotspakete', 1);
152                 addMemberMenuSql('bank', 'bank_create', 'Konto anlegen', 2);
153                 addMemberMenuSql('bank', 'bank_deposit', 'Auf Konto einzahlen', 3);
154                 addMemberMenuSql('bank', 'bank_withdraw', 'Vom Konto abheben', 4);
155                 addMemberMenuSql('bank', 'bank_output', 'Kontoauszug', 5);
156                 addMemberMenuSql('bank', 'bank_change', 'Paket wechseln', 6);
157                 addMemberMenuSql('bank', 'bank_remove', 'Konto K&uuml;ndigen', 7);
158                 break;
159
160         case 'remove': // Do stuff when removing extension
161                 // SQL commands to run
162                 addDropTableSql('bank_accounts');
163                 addDropTableSql('bank_transfers');
164                 addDropTableSql('bank_packages');
165                 addDropTableSql('bank_tanlist');
166                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='bank'");
167                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='bank'");
168                 break;
169
170         case 'activate': // Do stuff when admin activates this extension
171                 // SQL commands to run
172                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `action`='bank' LIMIT 8");
173                 break;
174
175         case 'deactivate': // Do stuff when admin deactivates this extension
176                 // SQL commands to run
177                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `action`='bank' LIMIT 8");
178                 break;
179
180         case 'update': // Update an extension
181                 switch (getCurrentExtensionVersion()) {
182                         case '0.0.1': // SQL queries for v0.0.1
183                                 addExtensionSql('');
184
185                                 // Update notes (these will be set as task text!)
186                                 setExtensionUpdateNotes('');
187                                 break;
188                 } // END - switch
189                 break;
190
191         case 'modify': // When the extension got modified
192                 break;
193
194         case 'test': // For testing purposes
195                 break;
196
197         case 'init': // Do stuff when extension is initialized
198                 break;
199
200         default: // Unknown extension mode
201                 reportBug(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
202                 break;
203 } // END - switch
204
205 // [EOF]
206 ?>