Updated copyright year.
[mailer.git] / inc / extensions / ext-bank.php
index d61297a76f9d50e7af00779fe82966509b53f95c..3559e7ab9a3677421d1c5a0eea32a613e5842658 100644 (file)
@@ -16,8 +16,8 @@
  * $Author::                                                          $ *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
- * Copyright (c) 2009, 2010 by Mailer Developer Team                    *
- * For more information visit: http://www.mxchange.org                  *
+ * Copyright (c) 2009 - 2016 by Mailer Developer Team                   *
+ * For more information visit: http://mxchange.org                      *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
  * it under the terms of the GNU General Public License as published by *
@@ -41,62 +41,64 @@ if (!defined('__SECURITY')) {
 } // END - if
 
 // Version number
-setThisExtensionVersion('0.0');
+setThisExtensionVersion('0.0.0');
 
-// Version history array (add more with , '0.1.0' and so on)
-setExtensionVersionHistory(array('0.0'));
+// Version history array (add more with , '0.0.1' and so on)
+setExtensionVersionHistory(array('0.0.0'));
 
 // This extension is in development (non-productive)
-enableExtensionProductive(false);
+enableExtensionProductive(FALSE);
 
 switch (getExtensionMode()) {
-       case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
+       case 'setup': // Do stuff when installation is running
                // SQL commands to run
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_accounts`');
-               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_bank_accounts` (
-id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
-userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-account_created BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-account_locked BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-locked_reason TINYTEXT,
-status ENUM('NEW','ACTIVE','LOCKED') NOT NULL DEFAULT 'NEW',
-account_balance FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
-output_mode ENUM('LOGIN','EMAIL','DISABLED'),
-pin VARCHAR(50) NOT NULL DEFAULT '',
-tan_mode ENUM('NORMAL','INDEXED'),
-tan_list_status ENUM('PENDING','ACTIVE','INVALID','LOCKED') NOT NULL DEFAULT 'PENDING',
-tan_key VARCHAR(50) NOT NULL DEFAULT '',
-month_transfered BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-last_tan VARCHAR(5) NOT NULL DEFAULT '00000',
-last_tan_stamp BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-last_tan_purpose TINYTEXT,
-account_type ENUM('CHECK','SAVING') NOT NULL DEFAULT 'CHECK',
-overdraft_credit FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
-PRIMARY KEY (id),
-UNIQUE KEY (pin),
-INDEX `userid_type` (userid, account_type),
-INDEX (account_created),
-INDEX (account_locked),
-INDEX (last_tan_stamp)
-) TYPE={?_TABLE_TYPE?}");
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_transfers`');
-               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_bank_transfers` (
-id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
-to_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-from_account_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-points_amount FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
-day_bookkeeping CHAR(4) NOT NULL DEFAULT '0000',
-day_available CHAR(4) NOT NULL DEFAULT '0000',
-transfer_purpose TINYTEXT,
-PRIMARY KEY (id),
-INDEX (to_account_id, from_account_id),
-INDEX (day_bookkeeping, day_available)
-) TYPE={?_TABLE_TYPE?}");
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_packages`');
-               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_bank_packages` (
+               addDropTableSql('bank_accounts');
+               addCreateTableSql('bank_accounts', "
+`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+`userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`account_created` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`account_locked` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`locked_reason` TINYTEXT NOT NULL,
+`status` ENUM('NEW','ACTIVE','LOCKED') NOT NULL DEFAULT 'NEW',
+`account_balance` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
+`output_mode` ENUM('LOGIN','EMAIL','DISABLED'),
+`pin` VARCHAR(50) NOT NULL DEFAULT '',
+`tan_mode` ENUM('NORMAL','INDEXED'),
+`tan_list_status` ENUM('PENDING','ACTIVE','INVALID','LOCKED') NOT NULL DEFAULT 'PENDING',
+`tan_key` VARCHAR(50) NOT NULL DEFAULT '',
+`month_transfered` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`last_tan` VARCHAR(5) NOT NULL DEFAULT '00000',
+`last_tan_stamp` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`last_tan_purpose` TINYTEXT NOT NULL,
+`account_type` ENUM('CHECK','SAVING') NOT NULL DEFAULT 'CHECK',
+`overdraft_credit` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
+PRIMARY KEY (`id`),
+UNIQUE INDEX (`pin`),
+INDEX `userid_type` (`userid`, `account_type`),
+INDEX (`account_created`),
+INDEX (`account_locked`),
+INDEX (`last_tan_stamp`)",
+                       'User bank accounts data');
+
+               addDropTableSql('bank_transfers');
+               addCreateTableSql('bank_transfers', "
+`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+`to_account_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`from_account_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`points_amount` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
+`day_bookkeeping` CHAR(4) NOT NULL DEFAULT '0000',
+`day_available` CHAR(4) NOT NULL DEFAULT '0000',
+`transfer_purpose` TINYTEXT NOT NULL,
+PRIMARY KEY (`id`),
+INDEX (`to_account_id`, `from_account_id`),
+INDEX (`day_bookkeeping`, `day_available`)",
+                       'Bank user->user transfers');
+
+               addDropTableSql('bank_packages');
+               addCreateTableSql('bank_packages', "
 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 `title` VARCHAR(255) NOT NULL DEFAULT '',
-`description` TINYTEXT,
+`description` TINYTEXT NOT NULL,
 `account_fee` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
 `free_transfers` INT(7) UNSIGNED NOT NULL DEFAULT 0,
 `transfer_fee` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
@@ -110,68 +112,69 @@ INDEX (day_bookkeeping, day_available)
 `free_account_income` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000,
 `free_account_stuff` TINYTEXT null,
 `tan_lock` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
-PRIMARY KEY (`id`)
-) TYPE={?_TABLE_TYPE?}");
-               // free_account_stuff will be a list of columns of the table _bank_packages
+PRIMARY KEY (`id`)",
+                       'Bank account packages');
+
+               // Free_account_stuff will be a list of columns of the table _bank_packages
                // what the member shall get for the specified income. output_system_mode
                // must be extended with the mode you get for free: output_system_mode:LOGIN
                // should be fine. More than one entry and not DISABLED ;) are not supported.
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_tanlist`');
-               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_bank_tanlist` (
+               addDropTableSql('bank_tanlist');
+               addCreateTableSql('bank_tanlist', "
 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 `idx` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
 `account_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 `tan` VARCHAR(50) NOT NULL DEFAULT '',
 `used` ENUM('Y','N') NOT NULL DEFAULT 'N',
 PRIMARY KEY (`id`),
-UNIQUE (`account_id`, `tan`)
-) TYPE={?_TABLE_TYPE?}");
+UNIQUE INDEX (`account_id`, `tan`)",
+                       'Bank TAN lists per user');
 
                // Admin menu queries
-               addAdminMenuSql('bank', NULL, 'Bank-Accounts','Verwalten Sie hier alle Bank-Accounts Ihrer Mitglieder, sowie Angebotspakete und Überweisungen.', 6);
-               addAdminMenuSql('bank','add_bank_package','Angebotspaket hinzufügen','Neues Angebotspaket erstellen.', 1);
-               addAdminMenuSql('bank','list_bank_package','Angebotspakete auflisten','Listet alle erstellten Angebotspakete auf.', 2);
-               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);
-               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);
-               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);
-               addAdminMenuSql('bank','add_bank_account','Konto anlegen','Legen Sie hier Konten für die Mitglieder an (falls Ihre Mitglieder nicht zurecht kommen).', 6);
-               addAdminMenuSql('bank','list_bank_account','Konten auflisten','Auflistung aller Konto oder eines auswählbaren Mitglieds.', 7);
-               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);
-               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);
-               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);
-               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);
-               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);
-               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);
+               addAdminMenuSql('bank', NULL, 'Bank-Accounts', 'Verwalten Sie hier alle Bank-Accounts Ihrer Mitglieder, sowie Angebotspakete und Überweisungen.', 6);
+               addAdminMenuSql('bank', 'add_bank_package', 'Angebotspaket hinzufügen', 'Neues Angebotspaket erstellen.', 1);
+               addAdminMenuSql('bank', 'list_bank_package', 'Angebotspakete auflisten', 'Listet alle erstellten Angebotspakete auf.', 2);
+               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);
+               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);
+               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);
+               addAdminMenuSql('bank', 'add_bank_account', 'Konto anlegen', 'Legen Sie hier Konten für die Mitglieder an (falls Ihre Mitglieder nicht zurecht kommen).', 6);
+               addAdminMenuSql('bank', 'list_bank_account', 'Konten auflisten', 'Auflistung aller Konto oder eines auswählbaren Mitglieds.', 7);
+               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);
+               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);
+               addAdminMenuSql('bank', 'del_bank_account', 'Konto löschen', 'Löschen von Konten mit Bestätigungsmail. Wenn Sie ein Mitgliedaccount löschen, so müssen Sie derzeit seine angelegten Konten auch löschen!', 10);
+               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);
+               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);
+               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);
 
                // Member menu
-               addMemberMenuSql('bank', NULL, 'Bank-Account','N','Y', 3);
-               addMemberMenuSql('bank','bank_infos','Angebotspakete','N','Y', 1);
-               addMemberMenuSql('bank','bank_create','Konto anlegen','N','Y', 2);
-               addMemberMenuSql('bank','bank_deposit','Auf Konto einzahlen','N','Y', 3);
-               addMemberMenuSql('bank','bank_withdraw','Vom Konto abheben','N','Y', 4);
-               addMemberMenuSql('bank','bank_output','Kontoauszug','N','Y', 5);
-               addMemberMenuSql('bank','bank_change','Paket wechseln','N','Y', 6);
-               addMemberMenuSql('bank','bank_remove','Konto Kündigen','N','Y', 7);
+               addMemberMenuSql('bank', NULL, 'Bank-Account', 3);
+               addMemberMenuSql('bank', 'bank_infos', 'Angebotspakete', 1);
+               addMemberMenuSql('bank', 'bank_create', 'Konto anlegen', 2);
+               addMemberMenuSql('bank', 'bank_deposit', 'Auf Konto einzahlen', 3);
+               addMemberMenuSql('bank', 'bank_withdraw', 'Vom Konto abheben', 4);
+               addMemberMenuSql('bank', 'bank_output', 'Kontoauszug', 5);
+               addMemberMenuSql('bank', 'bank_change', 'Paket wechseln', 6);
+               addMemberMenuSql('bank', 'bank_remove', 'Konto Kündigen', 7);
                break;
 
        case 'remove': // Do stuff when removing extension
                // SQL commands to run
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_accounts`');
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_transfers`');
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_packages`');
-               addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bank_tanlist`');
+               addDropTableSql('bank_accounts');
+               addDropTableSql('bank_transfers');
+               addDropTableSql('bank_packages');
+               addDropTableSql('bank_tanlist');
                addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='bank'");
                addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='bank'");
                break;
 
        case 'activate': // Do stuff when admin activates this extension
                // SQL commands to run
-               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `action`='bank' LIMIT 8");
+               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `action`='bank' LIMIT 8");
                break;
 
        case 'deactivate': // Do stuff when admin deactivates this extension
                // SQL commands to run
-               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `action`='bank' LIMIT 8");
+               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `action`='bank' LIMIT 8");
                break;
 
        case 'update': // Update an extension
@@ -188,14 +191,14 @@ UNIQUE (`account_id`, `tan`)
        case 'modify': // When the extension got modified
                break;
 
-       case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
+       case 'test': // For testing purposes
                break;
 
        case 'init': // Do stuff when extension is initialized
                break;
 
        default: // Unknown extension mode
-               logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
+               reportBug(__FILE__, __LINE__, sprintf('Unknown extension mode %s in extension %s detected.', getExtensionMode(), getCurrentExtensionName()));
                break;
 } // END - switch