2 /************************************************************************
3 * MXChange v0.2.1 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 * -------------------------------------------------------------------- *
14 * -------------------------------------------------------------------- *
15 * Copyright (c) 2003 - 2008 by Roland Haeder *
16 * For more information visit: http://www.mxchange.org *
18 * This program is free software; you can redistribute it and/or modify *
19 * it under the terms of the GNU General Public License as published by *
20 * the Free Software Foundation; either version 2 of the License, or *
21 * (at your option) any later version. *
23 * This program is distributed in the hope that it will be useful, *
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
26 * GNU General Public License for more details. *
28 * You should have received a copy of the GNU General Public License *
29 * along with this program; if not, write to the Free Software *
30 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
32 ************************************************************************/
34 // Some security stuff...
35 if (!defined('__SECURITY')) {
36 $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
41 EXT_SET_VERSION("0.0");
43 // Version history array (add more with , "0.1" and so on)
44 EXT_SET_VER_HISTORY(array("0.0"));
46 switch ($EXT_LOAD_MODE)
48 case "register": // Do stuff when installation is running (modules.php?module=admin&action=login is called)
49 // SQL commands to run
50 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_accounts`");
51 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_bank_accounts` (
52 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
53 uid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
54 account_created BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
55 account_locked BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
56 locked_reason TINYTEXT,
57 status ENUM('NEW','ACTIVE','LOCKED') NOT NULL DEFAULT 'NEW',
58 account_balance FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
59 output_mode ENUM('LOGIN','EMAIL','DISABLED'),
60 pin VARCHAR(50) NOT NULL DEFAULT '',
61 tan_mode ENUM('NORMAL','INDEXED'),
62 tan_list_status ENUM('PENDING','ACTIVE','INVALID','LOCKED') NOT NULL DEFAULT 'PENDING',
63 tan_key VARCHAR(50) NOT NULL DEFAULT '',
64 month_transfered BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
65 last_tan VARCHAR(5) NOT NULL DEFAULT '00000',
66 last_tan_stamp BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
67 last_tan_purpose TINYTEXT,
68 account_type ENUM('CHECK','SAVING') NOT NULL DEFAULT 'CHECK',
69 overdraft_credit FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
72 INDEX `uid_type` (uid, account_type),
73 INDEX (account_created),
74 INDEX (account_locked),
75 INDEX (last_tan_stamp)
76 ) TYPE={!_TABLE_TYPE!}");
77 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_transfers`");
78 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_bank_transfers` (
79 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
80 to_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
81 from_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
82 points_amount FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
83 day_bookkeeping CHAR(4) NOT NULL DEFAULT '0000',
84 day_available CHAR(4) NOT NULL DEFAULT '0000',
85 transfer_purpose TINYTEXT,
87 INDEX (to_account_id, from_account_id),
88 INDEX (day_bookkeeping, day_available)
89 ) TYPE={!_TABLE_TYPE!}");
90 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_packages`");
91 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_bank_packages` (
92 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
93 title VARCHAR(255) NOT NULL DEFAULT '',
95 account_fee FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
96 free_transfers INT(7) UNSIGNED NOT NULL DEFAULT 0,
97 transfer_fee FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
98 available TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
99 output_system_mode ENUM('LOGIN','EMAIL','DISABLED'),
100 package_active ENUM('Y','N') NOT NULL DEFAULT 'N',
101 free_months_no_fee TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
102 interest_plus FLOAT(7,5) UNSIGNED NOT NULL DEFAULT 0.00000,
103 interest_minus FLOAT(7,5) UNSIGNED NOT NULL DEFAULT 0.00000,
104 first_payment FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
105 free_account_income FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
106 free_account_stuff TINYTEXT null,
107 tan_lock TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
109 ) TYPE={!_TABLE_TYPE!}");
110 // free_account_stuff will be a list of columns of the table _bank_packages
111 // what the member shall get for the specified income. output_system_mode
112 // must be extended with the mode you get for free: output_system_mode:LOGIN
113 // should be fine. More than one entry and not DISABLED ;) are not supported.
114 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_tanlist`");
115 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_bank_tanlist` (
116 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
117 idx TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
118 account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
119 tan VARCHAR(50) NOT NULL DEFAULT '',
120 used ENUM('Y','N') NOT NULL DEFAULT 'N',
122 UNIQUE (account_id, tan)
123 ) TYPE={!_TABLE_TYPE!}");
125 // Admin menu queries
126 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('bank', NULL, 'Bank-Accounts','Verwalten Sie hier alle Bank-Accounts Ihrer Mitglieder, sowie Angebotspakete und Überweisungen.', 6)");
127 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('bank','add_bank_package','Angebotspaket hinzufügen','Neues Angebotspaket erstellen.', 1)");
128 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('bank','list_bank_package','Angebotspakete auflisten','Listet alle erstellten Angebotspakete auf.', 2)");
129 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
130 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
131 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
132 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('bank','add_bank_account','Konto anlegen','Legen Sie hier Konten für die Mitglieder an (falls Ihre Mitglieder nicht zurecht kommen).', 6)");
133 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('bank','list_bank_account','Konten auflisten','Auflistung aller Konto oder eines auswählbaren Mitglieds.', 7)");
134 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
135 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
136 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
137 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
138 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('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)");
139 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('bank','list_bank_trans','Überweisungen auflisten','Nach Auswahl eines Mitgliedes und einem Konto (benötgt JavaScript!) können Sie seitenweise die Überweisungen durchschauen.', 13)");
142 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank', NULL, 'Bank-Account','N','Y', 3)");
143 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank','bank_infos','Angebotspakete','N','Y', 1)");
144 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank','bank_create','Konto anlegen','N','Y', 2)");
145 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank','bank_deposit','Auf Konto einzahlen','N','Y', 3)");
146 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank','bank_withdraw','Vom Konto abheben','N','Y', 4)");
147 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank','bank_output','Kontoauszug','N','Y', 5)");
148 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank','bank_change','Paket wechseln','N','Y', 6)");
149 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('bank','bank_remove','Konto Kündigen','N','Y', 7)");
152 case "remove": // Do stuff when removing extension
153 // SQL commands to run
154 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_accounts`");
155 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_transfers`");
156 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_packages`");
157 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_bank_tanlist`");
158 ADD_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE `action`='bank' LIMIT 14");
159 ADD_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_member_menu` WHERE `action`='bank' LIMIT 8");
162 case "activate": // Do stuff when admin activates this extension
163 // SQL commands to run
164 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `visible`='Y', `locked`='N' WHERE `action`='bank' LIMIT 8");
167 case "deactivate": // Do stuff when admin deactivates this extension
168 // SQL commands to run
169 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `visible`='N', `locked`='Y' WHERE `action`='bank' LIMIT 8");
172 case "update": // Update an extension
175 case "0.0.1": // SQL queries for v0.0.1
178 // Update notes (these will be set as task text!)
179 EXT_SET_UPDATE_NOTES("");
184 case "modify": // When the extension got modified
187 case "test": // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
190 default: // Do stuff when extension is loaded