454e7e64bfdad6a8959da4e920a1acc48b5a950e
[mailer.git] / 0.2.1 / inc / extensions / ext-bank.php
1 <?php\r
2 /************************************************************************\r
3  * MXChange v0.2.1                                    Start: 05/28/2007 *\r
4  * ================                             Last change: 05/31/2007 *\r
5  *                                                                      *\r
6  * -------------------------------------------------------------------- *\r
7  * File              : ext-bank.php                                     *\r
8  * -------------------------------------------------------------------- *\r
9  * Short description : A little bank account                            *\r
10  * -------------------------------------------------------------------- *\r
11  * Kurzbeschreibung  : Ein einfaches Bankaccount                        *\r
12  * -------------------------------------------------------------------- *\r
13  *                                                                      *\r
14  * -------------------------------------------------------------------- *\r
15  * Copyright (c) 2003 - 2007 by Roland Haeder                           *\r
16  * For more information visit: http://www.mxchange.org                  *\r
17  *                                                                      *\r
18  * This program is free software; you can redistribute it and/or modify *\r
19  * it under the terms of the GNU General Public License as published by *\r
20  * the Free Software Foundation; either version 2 of the License, or    *\r
21  * (at your option) any later version.                                  *\r
22  *                                                                      *\r
23  * This program is distributed in the hope that it will be useful,      *\r
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *\r
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *\r
26  * GNU General Public License for more details.                         *\r
27  *                                                                      *\r
28  * You should have received a copy of the GNU General Public License    *\r
29  * along with this program; if not, write to the Free Software          *\r
30  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *\r
31  * MA  02110-1301  USA                                                  *\r
32  ************************************************************************/\r
33 \r
34 // Some security stuff...\r
35 if ((ereg(basename(__FILE__), $_SERVER['PHP_SELF'])))\r
36 {\r
37         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";\r
38         require($INC);\r
39 }\r
40 \r
41 // Version number\r
42 $EXT_VERSION = "0.0";\r
43 \r
44 // Auto-set extension version\r
45 if (!isset($EXT_VER)) $EXT_VER = $EXT_VERSION;\r
46 \r
47 // Version history array (add more with , "0.1" and so on)\r
48 $EXT_VER_HISTORY = array("0.0");\r
49 \r
50 switch ($EXT_LOAD_MODE)\r
51 {\r
52 case "register": // Do stuff when installtion is running (modules.php?module=admin&action=login is called)\r
53         // SQL commands to run\r
54         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_accounts";\r
55         $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_accounts (\r
56 id bigint(20) not null auto_increment,\r
57 uid bigint(20) not null default '0',\r
58 account_created bigint(20) not null default '0',\r
59 account_locked bigint(20) not null default '0',\r
60 locked_reason tinytext,\r
61 status enum('NEW', 'ACTIVE', 'LOCKED') not null default 'NEW',\r
62 account_balance double(20,5) not null default '0.00000',\r
63 output_mode enum('LOGIN', 'EMAIL', 'DISABLED'),\r
64 pin varchar(50) not null default '',\r
65 tan_mode enum('NORMAL', 'INDEXED'),\r
66 tan_list_status enum('PENDING', 'ACTIVE', 'INVALID', 'LOCKED') not null default 'PENDING',\r
67 tan_key varchar(50) not null default '',\r
68 month_transfered bigint(20) not null default '0',\r
69 last_tan varchar(5) not null default '00000',\r
70 last_tan_stamp bigint(20) not null default '0',\r
71 last_tan_purpose tinytext,\r
72 account_type enum('CHECK', 'SAVING') not null default 'CHECK',\r
73 overdraft_credit double(20,5) not null default '0.00000',\r
74 PRIMARY KEY (id),\r
75 UNIQUE KEY (pin),\r
76 INDEX `uid_type` (uid, account_type),\r
77 INDEX (account_created),\r
78 INDEX (account_locked),\r
79 INDEX (last_tan_stamp)\r
80 ) TYPE=MyISAM";\r
81         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_transfers";\r
82         $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_transfers (\r
83 id bigint(20) not null auto_increment,\r
84 to_account_id bigint(20) not null default '0',\r
85 from_account_id bigint(20) not null default '0',\r
86 points_amount double(20,5) not null default '0.00000',\r
87 day_bookkeeping char(4) not null default '0000',\r
88 day_available char(4) not null default '0000',\r
89 transfer_purpose tinytext,\r
90 PRIMARY KEY (id),\r
91 INDEX (to_account_id, from_account_id),\r
92 INDEX (day_bookkeeping, day_available)\r
93 ) TYPE=MyISAM";\r
94         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_packages";\r
95         $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_packages (\r
96 id bigint(20) not null auto_increment,\r
97 title varchar(255) not null default '',\r
98 description tinytext,\r
99 account_fee double(20,5) not null default '0.00000',\r
100 free_transfers int(7) not null default '0',\r
101 transfer_fee double(20,5) not null default '0.00000',\r
102 available varchar(8) not null default '19700101',\r
103 output_system_mode enum('LOGIN', 'EMAIL', 'DISABLED'),\r
104 package_active enum('Y', 'N') not null default 'N',\r
105 free_months_no_fee tinyint(3) not null default '0',\r
106 interest_plus float(7,5) not null default '0.00000',\r
107 interest_minus float(7,5) not null default '0.00000',\r
108 first_payment double(20,5) not null default '0.00000',\r
109 free_account_income double(20,5) not null default '0.00000',\r
110 free_account_stuff tinytext null,\r
111 tan_lock tinyint(3) not null default '0',\r
112 PRIMARY KEY (id)\r
113 ) TYPE=MyISAM";\r
114         // free_account_stuff will be a list of columns of the table _bank_packages\r
115         // what the member shall get for the specified income. output_system_mode\r
116         // must be extended with the mode you get for free: output_system_mode:LOGIN\r
117         // should be fine. More than one entry and not DISABLED ;) are not supported.\r
118         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_tanlist";\r
119         $SQLs[] = "CREATE TABLE "._MYSQL_PREFIX."_bank_tanlist (\r
120 id bigint(20) not null auto_increment,\r
121 idx tinyint(3) not null default '0',\r
122 account_id bigint(20) not null default '0',\r
123 tan varchar(50) not null default '',\r
124 used enum('Y', 'N') not null default 'N',\r
125 PRIMARY KEY (id),\r
126 UNIQUE (account_id, tan)\r
127 ) TYPE=MyISAM";\r
128 \r
129         // Admin menu queries\r
130         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('bank', '', 'Bank-Accounts', 'Verwalten Sie hier alle Bank-Accounts Ihrer Mitglieder, sowie Angebotspakete und &Uuml;berweisungen.', 6)";\r
131         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('bank', 'add_bank_package', 'Angebotspaket hinzuf&uuml;gen', 'Neues Angebotspaket erstellen.', 1)";\r
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)";\r
133         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('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)";\r
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&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)";\r
135         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('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)";\r
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&uuml;r die Mitglieder an (falls dieses nicht zurecht kommt).', 6)";\r
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)";\r
138         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('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)";\r
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&ouml;glich. Eine Benachrichtigung per Mail wird dann an das Mitglied ausgesendet.', 9)";\r
140         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('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)";\r
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&ouml;tigen auf, anschliessend kann die Liste dann ausgesendet werden.', 11)";\r
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&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)";\r
143         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('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)";\r
144 \r
145         // Member menu\r
146         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', '', 'Bank-Account', 'N', 'Y', 3)";\r
147         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_infos', 'Angebotspakete', 'N', 'Y', 1)";\r
148         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_create', 'Konto anlegen', 'N', 'Y', 2)";\r
149         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_deposit', 'Einzahlen', 'N', 'Y', 3)";\r
150         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_withdraw', 'Auszahlen', 'N', 'Y', 4)";\r
151         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_output', 'Kontoauszug', 'N', 'Y', 5)";\r
152         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_change', 'Paket wechseln', 'N', 'Y', 6)";\r
153         $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_member_menu (action, what, title, visible, locked, sort) VALUES ('bank', 'bank_remove', 'K&uuml;ndigen', 'N', 'Y', 7)";\r
154         break;\r
155 \r
156 case "remove": // Do stuff when removing extension\r
157         // SQL commands to run\r
158         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_accounts";\r
159         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_transfers";\r
160         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_packages";\r
161         $SQLs[] = "DROP TABLE IF EXISTS "._MYSQL_PREFIX."_bank_tanlist";\r
162         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE action='bank' LIMIT 14";\r
163         $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_member_menu WHERE action='bank' LIMIT 8";\r
164         break;\r
165 \r
166 case "activate": // Do stuff when admin activates this extension\r
167         // SQL commands to run\r
168         $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET visible='Y', locked='N' WHERE action='bank' LIMIT 8";\r
169         break;\r
170 \r
171 case "deactivate": // Do stuff when admin deactivates this extension\r
172         // SQL commands to run\r
173         $SQLs[] = "UPDATE "._MYSQL_PREFIX."_member_menu SET visible='N', locked='Y' WHERE action='bank' LIMIT 8";\r
174         break;\r
175 \r
176 case "update": // Update an extension\r
177         switch ($EXT_VER)\r
178         {\r
179         case "0.0.1": // SQL queries for v0.0.1\r
180                 $SQLs[] = "";\r
181 \r
182                 // Update notes (these will be set as task text!)\r
183                 $UPDATE_NOTES = "";\r
184                 break;\r
185         }\r
186         break;\r
187 \r
188 default: // Do stuff when extension is loaded\r
189         break;\r
190 }\r
191 \r
192 // Language file prefix\r
193 $EXT_LANG_PREFIX = "bank";\r
194 \r
195 // Extension is always active?\r
196 $EXT_ALWAYS_ACTIVE = "N";\r
197 \r
198 //\r
199 ?>\r