2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 05/28/2007 *
4 * =================== Last change: 05/31/2007 *
6 * -------------------------------------------------------------------- *
7 * File : ext-bank.php *
8 * -------------------------------------------------------------------- *
9 * Short description : A little bank account *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Ein einfaches Bankaccount *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
17 * -------------------------------------------------------------------- *
18 * Copyright (c) 2003 - 2009 by Roland Haeder *
19 * Copyright (c) 2009, 2010 by Mailer Developer Team *
20 * For more information visit: http://www.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.0');
46 // Version history array (add more with , '0.1.0' and so on)
47 setExtensionVersionHistory(array('0.0'));
49 // This extension is in development (non-productive)
50 enableExtensionProductive(false);
52 switch (getExtensionMode()) {
53 case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
54 // SQL commands to run
55 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_accounts`');
56 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_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,
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,
73 account_type ENUM('CHECK','SAVING') NOT NULL DEFAULT 'CHECK',
74 overdraft_credit FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
77 INDEX `userid_type` (userid, account_type),
78 INDEX (account_created),
79 INDEX (account_locked),
80 INDEX (last_tan_stamp)
81 ) TYPE={?_TABLE_TYPE?}");
82 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_transfers`');
83 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_bank_transfers` (
84 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
85 to_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
86 from_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
87 points_amount FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
88 day_bookkeeping CHAR(4) NOT NULL DEFAULT '0000',
89 day_available CHAR(4) NOT NULL DEFAULT '0000',
90 transfer_purpose TINYTEXT,
92 INDEX (to_account_id, from_account_id),
93 INDEX (day_bookkeeping, day_available)
94 ) TYPE={?_TABLE_TYPE?}");
95 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_packages`');
96 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_bank_packages` (
97 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
98 `title` VARCHAR(255) NOT NULL DEFAULT '',
99 `description` TINYTEXT,
100 `account_fee` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
101 `free_transfers` INT(7) UNSIGNED NOT NULL DEFAULT 0,
102 `transfer_fee` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
103 `available` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
104 `output_system_mode` ENUM('LOGIN','EMAIL','DISABLED'),
105 `package_active` ENUM('Y','N') NOT NULL DEFAULT 'N',
106 `free_months_no_fee` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
107 `interest_plus` FLOAT(7,5) UNSIGNED NOT NULL DEFAULT 0.00000,
108 `interest_minus` FLOAT(7,5) UNSIGNED NOT NULL DEFAULT 0.00000,
109 `first_payment` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
110 `free_account_income` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
111 `free_account_stuff` TINYTEXT null,
112 `tan_lock` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
114 ) TYPE={?_TABLE_TYPE?}");
115 // free_account_stuff will be a list of columns of the table _bank_packages
116 // what the member shall get for the specified income. output_system_mode
117 // must be extended with the mode you get for free: output_system_mode:LOGIN
118 // should be fine. More than one entry and not DISABLED ;) are not supported.
119 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_tanlist`');
120 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_bank_tanlist` (
121 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
122 `idx` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
123 `account_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
124 `tan` VARCHAR(50) NOT NULL DEFAULT '',
125 `used` ENUM('Y','N') NOT NULL DEFAULT 'N',
127 UNIQUE (`account_id`, `tan`)
128 ) TYPE={?_TABLE_TYPE?}");
130 // Admin menu queries
131 addAdminMenuSql('bank', NULL, 'Bank-Accounts','Verwalten Sie hier alle Bank-Accounts Ihrer Mitglieder, sowie Angebotspakete und Überweisungen.', 6);
132 addAdminMenuSql('bank','add_bank_package','Angebotspaket hinzufügen','Neues Angebotspaket erstellen.', 1);
133 addAdminMenuSql('bank','list_bank_package','Angebotspakete auflisten','Listet alle erstellten Angebotspakete auf.', 2);
134 addAdminMenuSql('bank','edit_bank_package','Angebotspaket ändern','Nach Auswahl eines Angebotspaketes können Sie dieses hier verändern. Bitte beachten Sie, dass Ihre Mitglieder keine Mail dabei erhalten!', 3);
135 addAdminMenuSql('bank','lock_bank_package','Angebotspaket ent-/sperren','Nehmen Sie Angebotspakete zur temporären Überarbeitung zuvor heraus, dann können Sie in Ruhe drüber nachdenken und Berechnungen anstellen. Freigabe ist hier auch möglich.', 4);
136 addAdminMenuSql('bank','del_bank_package','Angebotspaket löschen','Nach Auswahl eines Angebotspaketes können Sie mit abschliessender Bestätigung Angebotspakete ganz löschen. Bitte beachten Sie, dass dies nur möglich ist, wenn auch alle Accounts dieses nicht mehr nutzen!', 5);
137 addAdminMenuSql('bank','add_bank_account','Konto anlegen','Legen Sie hier Konten für die Mitglieder an (falls Ihre Mitglieder nicht zurecht kommen).', 6);
138 addAdminMenuSql('bank','list_bank_account','Konten auflisten','Auflistung aller Konto oder eines auswählbaren Mitglieds.', 7);
139 addAdminMenuSql('bank','edit_bank_account','Konto ändern','Ändern Sie hier bestehende Konten, z.B. den Dispositionskredit usw. PINs und TANs sind hier nicht änderbar! Bestätigungsmails sind optional versendbar.', 8);
140 addAdminMenuSql('bank','lock_bank_account','Konto ent-/sperren','Sperren Sie hier Konten bei Bedarf. Auch das Freischalten ist hier möglich. Eine Benachrichtigung per Mail wird dann an das Mitglied ausgesendet.', 9);
141 addAdminMenuSql('bank','del_bank_account','Konto löschen','Löschen von Konten mit Bestätigungsmail. Wenn Sie ein Mitglieder-Account löschen, so müssen Sie derzeit seine angelegten Konten auch löschen!', 10);
142 addAdminMenuSql('bank','send_bank_tanlist','TAN-Liste aussenden','Listet zuerst Anfragen von Mitgliedern auf, die eine neue (i)TAN-Liste benötigen, anschliessend kann die Liste dann ausgesendet werden.', 11);
143 addAdminMenuSql('bank','lock_bank_tanlist','TAN-Liste ent-/sperren','Bestehende TAN-Listen kö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);
144 addAdminMenuSql('bank','list_bank_trans','Überweisungen auflisten','Nach Auswahl eines Mitgliedes und einem Konto (benötgt JavaScript!) können Sie seitenweise die Überweisungen durchschauen.', 13);
147 addMemberMenuSql('bank', NULL, 'Bank-Account','N','Y', 3);
148 addMemberMenuSql('bank','bank_infos','Angebotspakete','N','Y', 1);
149 addMemberMenuSql('bank','bank_create','Konto anlegen','N','Y', 2);
150 addMemberMenuSql('bank','bank_deposit','Auf Konto einzahlen','N','Y', 3);
151 addMemberMenuSql('bank','bank_withdraw','Vom Konto abheben','N','Y', 4);
152 addMemberMenuSql('bank','bank_output','Kontoauszug','N','Y', 5);
153 addMemberMenuSql('bank','bank_change','Paket wechseln','N','Y', 6);
154 addMemberMenuSql('bank','bank_remove','Konto Kündigen','N','Y', 7);
157 case 'remove': // Do stuff when removing extension
158 // SQL commands to run
159 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_accounts`');
160 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_transfers`');
161 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_packages`');
162 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_tanlist`');
163 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='bank'");
164 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='bank'");
167 case 'activate': // Do stuff when admin activates this extension
168 // SQL commands to run
169 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `action`='bank' LIMIT 8");
172 case 'deactivate': // Do stuff when admin deactivates this extension
173 // SQL commands to run
174 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `action`='bank' LIMIT 8");
177 case 'update': // Update an extension
178 switch (getCurrentExtensionVersion()) {
179 case '0.0.1': // SQL queries for v0.0.1
182 // Update notes (these will be set as task text!)
183 setExtensionUpdateNotes('');
188 case 'modify': // When the extension got modified
191 case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
194 case 'init': // Do stuff when extension is initialized
197 default: // Unknown extension mode
198 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));