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 ((ereg(basename(__FILE__), $_SERVER['PHP_SELF'])))
37 $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
44 // Auto-set extension version
45 if (!isset($EXT_VER)) $EXT_VER = $EXT_VERSION;
47 // Version history array (add more with , "0.1" and so on)
48 $EXT_VER_HISTORY = array("0.0");
50 switch ($EXT_LOAD_MODE)
52 case "register": // Do stuff when installtion is running (modules.php?module=admin&action=login is called)
53 // SQL commands to run
54 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_accounts";
55 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_accounts (
56 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
57 uid BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
58 account_created BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
59 account_locked BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
60 locked_reason TINYTEXT,
61 status ENUM('NEW', 'ACTIVE', 'LOCKED') NOT NULL DEFAULT 'NEW',
62 account_balance DOUBLE(20,5) UNSIGNED NOT NULL DEFAULT '0.00000',
63 output_mode ENUM('LOGIN', 'EMAIL', 'DISABLED'),
64 pin VARCHAR(50) NOT NULL DEFAULT '',
65 tan_mode ENUM('NORMAL', 'INDEXED'),
66 tan_list_status ENUM('PENDING', 'ACTIVE', 'INVALID', 'LOCKED') NOT NULL DEFAULT 'PENDING',
67 tan_key VARCHAR(50) NOT NULL DEFAULT '',
68 month_transfered BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
69 last_tan VARCHAR(5) NOT NULL DEFAULT '00000',
70 last_tan_stamp BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
71 last_tan_purpose TINYTEXT,
72 account_type ENUM('CHECK', 'SAVING') NOT NULL DEFAULT 'CHECK',
73 overdraft_credit DOUBLE(20,5) UNSIGNED NOT NULL DEFAULT '0.00000',
76 INDEX `uid_type` (uid, account_type),
77 INDEX (account_created),
78 INDEX (account_locked),
79 INDEX (last_tan_stamp)
81 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_transfers";
82 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_transfers (
83 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
84 to_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
85 from_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
86 points_amount DOUBLE(20,5) UNSIGNED NOT NULL DEFAULT '0.00000',
87 day_bookkeeping CHAR(4) NOT NULL DEFAULT '0000',
88 day_available CHAR(4) NOT NULL DEFAULT '0000',
89 transfer_purpose TINYTEXT,
91 INDEX (to_account_id, from_account_id),
92 INDEX (day_bookkeeping, day_available)
94 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_packages";
95 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_packages (
96 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
97 title VARCHAR(255) NOT NULL DEFAULT '',
99 account_fee DOUBLE(20,5) UNSIGNED NOT NULL DEFAULT '0.00000',
100 free_transfers INT(7) UNSIGNED NOT NULL DEFAULT '0',
101 transfer_fee DOUBLE(20,5) UNSIGNED NOT NULL DEFAULT '0.00000',
102 available TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
103 output_system_mode ENUM('LOGIN', 'EMAIL', 'DISABLED'),
104 package_active ENUM('Y', 'N') NOT NULL DEFAULT 'N',
105 free_months_no_fee TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
106 interest_plus FLOAT(7,5) UNSIGNED NOT NULL DEFAULT '0.00000',
107 interest_minus FLOAT(7,5) UNSIGNED NOT NULL DEFAULT '0.00000',
108 first_payment DOUBLE(20,5) UNSIGNED NOT NULL DEFAULT '0.00000',
109 free_account_income DOUBLE(20,5) UNSIGNED NOT NULL DEFAULT '0.00000',
110 free_account_stuff TINYTEXT null,
111 tan_lock TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
114 // free_account_stuff will be a list of columns of the table _bank_packages
115 // what the member shall get for the specified income. output_system_mode
116 // must be extended with the mode you get for free: output_system_mode:LOGIN
117 // should be fine. More than one entry and not DISABLED ;) are not supported.
118 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_tanlist";
119 $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_tanlist (
120 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
121 idx TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
122 account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT '0',
123 tan VARCHAR(50) NOT NULL DEFAULT '',
124 used ENUM('Y', 'N') NOT NULL DEFAULT 'N',
126 UNIQUE (account_id, tan)
129 // Admin menu queries
130 $SQLs[] = "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)";
131 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('bank', 'add_bank_package', 'Angebotspaket hinzufügen', 'Neues Angebotspaket erstellen.', 1)";
132 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('bank', 'list_bank_package', 'Angebotspakete auflisten', 'Listet alle erstellten Angebotspakete auf.', 2)";
133 $SQLs[] = "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)";
134 $SQLs[] = "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)";
135 $SQLs[] = "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)";
136 $SQLs[] = "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)";
137 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('bank', 'list_bank_account', 'Konten auflisten', 'Auflistung aller Konto oder eines ausw&auuml;hlbaren Mitglieds.', 7)";
138 $SQLs[] = "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)";
139 $SQLs[] = "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)";
140 $SQLs[] = "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)";
141 $SQLs[] = "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)";
142 $SQLs[] = "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)";
143 $SQLs[] = "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)";
146 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', NULL, 'Bank-Account', 'N', 'Y', 3)";
147 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_infos', 'Angebotspakete', 'N', 'Y', 1)";
148 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_create', 'Konto anlegen', 'N', 'Y', 2)";
149 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_deposit', 'Einzahlen', 'N', 'Y', 3)";
150 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_withdraw', 'Auszahlen', 'N', 'Y', 4)";
151 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_output', 'Kontoauszug', 'N', 'Y', 5)";
152 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_change', 'Paket wechseln', 'N', 'Y', 6)";
153 $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_remove', 'Kündigen', 'N', 'Y', 7)";
156 case "remove": // Do stuff when removing extension
157 // SQL commands to run
158 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_accounts";
159 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_transfers";
160 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_packages";
161 $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_tanlist";
162 $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE action='bank' LIMIT 14";
163 $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_member_menu WHERE action='bank' LIMIT 8";
166 case "activate": // Do stuff when admin activates this extension
167 // SQL commands to run
168 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET visible='Y', locked='N' WHERE action='bank' LIMIT 8";
171 case "deactivate": // Do stuff when admin deactivates this extension
172 // SQL commands to run
173 $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET visible='N', locked='Y' WHERE action='bank' LIMIT 8";
176 case "update": // Update an extension
179 case "0.0.1": // SQL queries for v0.0.1
182 // Update notes (these will be set as task text!)
188 default: // Do stuff when extension is loaded
192 // Language file prefix
193 $EXT_LANG_PREFIX = "bank";
195 // Extension is always active?
196 $EXT_ALWAYS_ACTIVE = "N";