Renamed dtaus.php and prepared for PAIN.
authorAndreas Schiermeier <andreas@schiermeier.name>
Mon, 30 Dec 2013 22:58:46 +0000 (23:58 +0100)
committerAndreas Schiermeier <andreas@schiermeier.name>
Mon, 30 Dec 2013 22:58:46 +0000 (23:58 +0100)
include/directdebit.php [new file with mode: 0644]
include/dtaus.php [deleted file]
index.php

diff --git a/include/directdebit.php b/include/directdebit.php
new file mode 100644 (file)
index 0000000..b258cd7
--- /dev/null
@@ -0,0 +1,453 @@
+<?php
+
+
+function action_directdebit() {
+    $members = db_get_members();
+    if (empty($members)) return;
+
+    $debits = array();
+    $cash_payments = array();
+    foreach ($members as $member) {
+               if (empty($member['directdebit'])) {
+                       // Barzahler
+                       $open = bcsub(fees_sum_for_member($member['id'], time()), bcadd(finance_get_paid_fees_for_member($member['id']), finance_get_paid_fees_for_member($member['id'], true)));
+                       if (bccomp($open, 0) != 1) continue;
+                       $cash_payments[] = array(
+                               'member_id'     => $member['id'],
+                               'member_number' => $member['number'],
+                               'nickname'      => $member['nickname'],
+                               'amount'        => $open
+                       );
+                       continue;
+               }
+        $info = fee_next_directdebit_for_member($member['id'], time());
+        if (empty($info)) continue;
+        $debits[] = array(
+            'member_id'     => $member['id'],
+            'member_number' => $member['number'],
+            'nickname'      => $member['nickname'],
+            'accountholder' => $member['accountholder'],
+            'accountnumber' => $member['accountnumber'],
+            'bankcode'      => $member['bankcode'],
+//          'bankname'      => $member['bankname'],
+            'amount'        => $info['value'],
+            'amountcent'    => '' . (int)round(bcmul($info['value'], 100)),
+            'purpose'       => $info['info']
+        );
+    }
+
+    js_modal_windows();
+    js_get_master_key();
+
+?>
+    <noscript>
+        <p class="error">
+            <strong>Achtung:</strong> Ohne JavaScript geht hier gar nichts. Bitte aktivieren!
+        </p>
+    </noscript>
+<?php if (!empty($cash_payments)) : ?>
+<h2>Barzahler</h2>
+<table>
+    <tr>
+        <th>Mitgliedsnummer</th>
+        <th>Nickname</th>
+        <th style="text-align: right;">Betrag</th>
+               <th></th>
+       </tr>
+<?php foreach ($cash_payments as $payment) : ?>
+    <tr>
+        <td><a href="<?=html_escape(link_to('fees', array('member_id'=> $payment['member_id'])))?>"><?=html_escape($payment['member_number'])?></a></td>
+        <td><?=html_escape($payment['nickname'])?></td>
+        <td style="text-align: right;"><?=html_escape(format_money($payment['amount']))?></td>
+               <td>
+                       <form action="<?=link_to('create_earning')?>" method="post" class="clearfix">
+                               <?=html_hidden_field('date', format_date(time()))?>
+                               <?=html_hidden_field('type', 'fee')?>
+                               <?=html_hidden_field('status', 'paid')?>
+                               <?=html_hidden_field('value', format_money($payment['amount']))?>
+                               <?=html_hidden_field('member_id', $payment['member_id'])?>
+                               <?=html_hidden_field('description', '')?>
+                               <?=html_hidden_field('account', 'cash')?>
+                               <input class="submit" type="submit" name="submit" value="Einnahme verbuchen"/>
+                       </form>
+               </td>
+    </tr>
+<?php endforeach ?>
+</table>
+<?php endif ?>
+
+<h2>Bankeinzug</h2>
+<table>
+    <tr>
+        <th>Mitgliedsnummer</th>
+        <th>Nickname</th>
+        <th>Verwendungszweck</th>
+        <th style="text-align: right;">Betrag</th>
+    </tr>
+<?php $total = 0; ?>
+<?php foreach ($debits as $debit) : ?>
+    <tr>
+        <td><a href="<?=html_escape(link_to('fees', array('member_id'=> $debit['member_id'])))?>"><?=html_escape($debit['member_number'])?></a></td>
+        <td><?=html_escape($debit['nickname'])?></td>
+        <td><?=html_escape($debit['purpose'])?></td>
+        <td style="text-align: right;"><?=html_escape(format_money($debit['amount']))?></td>
+    </tr>
+    <?php $total = bcadd($total, $debit['amount']); ?>
+<?php endforeach ?>
+    <tr class="total">
+        <td>Gesamt</td>
+        <td></td>
+        <td></td>
+        <td style="text-align: right;"><?=html_escape(format_money($total))?></td>
+    </tr>
+</table>
+
+<!-- ?=html_hidden_field('directdebittype', 'pain')? -->
+<?=html_list_box('Dateiformat', 'directdebittype', array('dtaus' => 'DTAUS', 'pain' => 'PAIN'), 'pain');?>
+<input class="submit" type="button" name="btn_directdebit" value="Datei erzeugen" onclick="ask_for_password()" id="btn_directdebit"/>
+<br/>
+<br/>
+<form action="<?=link_to('create_earnings')?>" method="post" class="clearfix">
+<?php $count = 0; ?>
+<?php foreach ($debits as $debit) : ?>
+    <?=html_hidden_field(sprintf('earnings[%d][date]',        $count), format_date(time()))?>
+    <?=html_hidden_field(sprintf('earnings[%d][type]',        $count), 'fee')?>
+    <?=html_hidden_field(sprintf('earnings[%d][status]',      $count), 'paid')?>
+    <?=html_hidden_field(sprintf('earnings[%d][value]',       $count), $debit['amount'])?>
+    <?=html_hidden_field(sprintf('earnings[%d][member_id]',   $count), $debit['member_id'])?>
+    <?=html_hidden_field(sprintf('earnings[%d][description]', $count), $debit['purpose'])?>
+    <?php $count++; ?>
+<?php endforeach ?>
+<input class="submit" type="submit" name="btn_create_earnings" value="Einnahmen verbuchen"/>
+</form>
+
+<a href="<?=link_to('export_ibanhin')?>">IBAN-hin Export</a>
+
+<div id="password_popup" class="modal_window">
+    <fieldset>
+        <legend>Passwortabfrage</legend>
+        <?=html_password_field('Passwort', 'password')?>
+        <input class="submit" type="button" name="btn_generate_directdebit" value="DTAUS erzeugen" onclick="generate_directdebit()"/>
+        <input class="submit" type="button" name="btn_cancel" value="Abbrechen" onclick="cancel_ask_for_password()"/>
+    </fieldset>
+</div>
+<div id="directdebit_popup" class="modal_window">
+    <fieldset>
+        <legend>DTAUS</legend>
+            <textarea id="directdebit_content" style="width: 100%" rows="30" readonly="readonly"></textarea>
+            <input class="submit" type="button" name="btn_directdebit_close" value="Schließen" onclick="directdebit_close()"/>
+    </fieldset>
+</div>
+
+<script type="text/javascript">
+
+var debits = new Array(
+    <?=join(",\n", array_map('json_encode', $debits)) ?>
+);
+
+
+$(document).ready(function(){  
+    $('#password').keypress( function(event) { if (event.keyCode == '13') { generate_directdebit(); } });
+    $('#btn_directdebit').focus();
+});  
+
+
+function ask_for_password() {/*{{{*/
+    modal_window_show($("#password_popup"));
+    $("#password").focus();
+    return;
+}/*}}}*/
+
+function cancel_ask_for_password() {/*{{{*/
+    modal_window_hide();
+    $("#btn_directdebit").focus();
+    return;
+}/*}}}*/
+
+
+function generate_directdebit() {/*{{{*/
+
+    var password = $('#password').val();
+    var directdebitcontent = "";
+    $("#password").val('');
+
+    // We pass a closure so that get_master_key may defer execution
+    get_master_key(password, function(masterkey) {
+
+        modal_window_replace($("#directdebit_popup"));
+
+    switch ($('#directdebittype').val()) {
+        case "dtaus":
+           if (!DTAUS.setAccountFileSender('<?=dtaus_string(ACCOUNT_HOLDER)?>', '<?=BANK_CODE?>', '<?=ACCOUNT_NUMBER?>')) {
+               $('#directdebit_content').val(DTAUS.errormsg);
+               return;
+           }
+
+           for (var i = 0; i < debits.length; i++) {
+               var accountholder = debits[i]['accountholder'];
+               var accountnumber = debits[i]['accountnumber'];
+               var bankcode      = debits[i]['bankcode'];
+
+               // Encrypt/Decrypt data using AES with masterkey
+               if (accountholder != "") accountholder = Crypto.charenc.UTF8.bytesToString(Crypto.AES.decrypt(accountholder, masterkey));
+               if (accountnumber != "") accountnumber = Crypto.charenc.UTF8.bytesToString(Crypto.AES.decrypt(accountnumber, masterkey));
+               if (bankcode      != "") bankcode      = Crypto.charenc.UTF8.bytesToString(Crypto.AES.decrypt(bankcode,      masterkey));
+
+               accountholder = DTAUS.prepareString(accountholder);
+
+               if (!DTAUS.addExchange(accountholder, bankcode, accountnumber, '', debits[i]['amountcent'], debits[i]['purpose'])) {
+                   $('#directdebit_content').val('Mitglied ' + debits[i]['member_number'] + ' ' + accountholder + '\n' + DTAUS.errormsg);
+                   return;
+               }
+           }
+           directdebitcontent = DTAUS.getFileContent();
+           break;
+           
+       case "pain":
+           // TODO
+
+           directdebitcontent = "Schmerz lass nach!";
+            break;
+        }
+        $('#directdebit_content').val(directdebitcontent);
+        $('#directdebit_content').focus();
+        $('#directdebit_content').select();
+    });
+
+}/*}}}*/
+
+function directdebit_close() {/*{{{*/
+    modal_window_hide();
+    $("#directdebit_content").val('');
+}/*}}}*/
+
+
+
+</script>
+<?
+}
+
+// borrowed from PEARs Payment_DTA
+function dtaus_string($string) {
+    if (strlen($string) == 0) return '';
+    $special_chars = array(
+        'á' => 'a',
+        'à' => 'a',
+        'ä' => 'ae',
+        'â' => 'a',
+        'ã' => 'a',
+        'å' => 'a',
+        'æ' => 'ae',
+        'ā' => 'a',
+        'ă' => 'a',
+        'ą' => 'a',
+        'ȁ' => 'a',
+        'ȃ' => 'a',
+        'Á' => 'A',
+        'À' => 'A',
+        'Ä' => 'Ae',
+        'Â' => 'A',
+        'Ã' => 'A',
+        'Å' => 'A',
+        'Æ' => 'AE',
+        'Ā' => 'A',
+        'Ă' => 'A',
+        'Ą' => 'A',
+        'Ȁ' => 'A',
+        'Ȃ' => 'A',
+        'ç' => 'c',
+        'ć' => 'c',
+        'ĉ' => 'c',
+        'ċ' => 'c',
+        'č' => 'c',
+        'Ç' => 'C',
+        'Ć' => 'C',
+        'Ĉ' => 'C',
+        'Ċ' => 'C',
+        'Č' => 'C',
+        'ď' => 'd',
+        'đ' => 'd',
+        'Ď' => 'D',
+        'Đ' => 'D',
+        'é' => 'e',
+        'è' => 'e',
+        'ê' => 'e',
+        'ë' => 'e',
+        'ē' => 'e',
+        'ĕ' => 'e',
+        'ė' => 'e',
+        'ę' => 'e',
+        'ě' => 'e',
+        'ȅ' => 'e',
+        'ȇ' => 'e',
+        'É' => 'E',
+        'È' => 'E',
+        'Ê' => 'E',
+        'Ë' => 'E',
+        'Ē' => 'E',
+        'Ĕ' => 'E',
+        'Ė' => 'E',
+        'Ę' => 'E',
+        'Ě' => 'E',
+        'Ȅ' => 'E',
+        'Ȇ' => 'E',
+        'ĝ' => 'g',
+        'ğ' => 'g',
+        'ġ' => 'g',
+        'ģ' => 'g',
+        'Ĝ' => 'G',
+        'Ğ' => 'G',
+        'Ġ' => 'G',
+        'Ģ' => 'G',
+        'ĥ' => 'h',
+        'ħ' => 'h',
+        'Ĥ' => 'H',
+        'Ħ' => 'H',
+        'ì' => 'i',
+        'ì' => 'i',
+        'î' => 'i',
+        'ï' => 'i',
+        'ĩ' => 'i',
+        'ī' => 'i',
+        'ĭ' => 'i',
+        'į' => 'i',
+        'ı' => 'i',
+        'ij' => 'ij',
+        'ȉ' => 'i',
+        'ȋ' => 'i',
+        'Í' => 'I',
+        'Ì' => 'I',
+        'Î' => 'I',
+        'Ï' => 'I',
+        'Ĩ' => 'I',
+        'Ī' => 'I',
+        'Ĭ' => 'I',
+        'Į' => 'I',
+        'İ' => 'I',
+        'IJ' => 'IJ',
+        'Ȉ' => 'I',
+        'Ȋ' => 'I',
+        'ĵ' => 'j',
+        'Ĵ' => 'J',
+        'ķ' => 'k',
+        'Ķ' => 'K',
+        'ĺ' => 'l',
+        'ļ' => 'l',
+        'ľ' => 'l',
+        'ŀ' => 'l',
+        'ł' => 'l',
+        'Ĺ' => 'L',
+        'Ļ' => 'L',
+        'Ľ' => 'L',
+        'Ŀ' => 'L',
+        'Ł' => 'L',
+        'ñ' => 'n',
+        'ń' => 'n',
+        'ņ' => 'n',
+        'ň' => 'n',
+        'ʼn' => 'n',
+        'Ñ' => 'N',
+        'Ń' => 'N',
+        'Ņ' => 'N',
+        'Ň' => 'N',
+        'ó' => 'o',
+        'ò' => 'o',
+        'ö' => 'oe',
+        'ô' => 'o',
+        'õ' => 'o',
+        'ø' => 'o',
+        'ō' => 'o',
+        'ŏ' => 'o',
+        'ő' => 'o',
+        'œ' => 'oe',
+        'ȍ' => 'o',
+        'ȏ' => 'o',
+        'Ó' => 'O',
+        'Ò' => 'O',
+        'Ö' => 'Oe',
+        'Ô' => 'O',
+        'Õ' => 'O',
+        'Ø' => 'O',
+        'Ō' => 'O',
+        'Ŏ' => 'O',
+        'Ő' => 'O',
+        'Œ' => 'OE',
+        'Ȍ' => 'O',
+        'Ȏ' => 'O',
+        'ŕ' => 'r',
+        'ř' => 'r',
+        'ȑ' => 'r',
+        'ȓ' => 'r',
+        'Ŕ' => 'R',
+        'Ř' => 'R',
+        'Ȑ' => 'R',
+        'Ȓ' => 'R',
+        'ß' => 'ss',
+        'ś' => 's',
+        'ŝ' => 's',
+        'ş' => 's',
+        'š' => 's',
+        'ș' => 's',
+        'Ś' => 'S',
+        'Ŝ' => 'S',
+        'Ş' => 'S',
+        'Š' => 'S',
+        'Ș' => 'S',
+        'ţ' => 't',
+        'ť' => 't',
+        'ŧ' => 't',
+        'ț' => 't',
+        'Ţ' => 'T',
+        'Ť' => 'T',
+        'Ŧ' => 'T',
+        'Ț' => 'T',
+        'ú' => 'u',
+        'ù' => 'u',
+        'ü' => 'ue',
+        'û' => 'u',
+        'ũ' => 'u',
+        'ū' => 'u',
+        'ŭ' => 'u',
+        'ů' => 'u',
+        'ű' => 'u',
+        'ų' => 'u',
+        'ȕ' => 'u',
+        'ȗ' => 'u',
+        'Ú' => 'U',
+        'Ù' => 'U',
+        'Ü' => 'Ue',
+        'Û' => 'U',
+        'Ũ' => 'U',
+        'Ū' => 'U',
+        'Ŭ' => 'U',
+        'Ů' => 'U',
+        'Ű' => 'U',
+        'Ų' => 'U',
+        'Ȕ' => 'U',
+        'Ȗ' => 'U',
+        'ŵ' => 'w',
+        'Ŵ' => 'W',
+        'ý' => 'y',
+        'ÿ' => 'y',
+        'ŷ' => 'y',
+        'Ý' => 'Y',
+        'Ÿ' => 'Y',
+        'Ŷ' => 'Y',
+        'ź' => 'z',
+        'ż' => 'z',
+        'ž' => 'z',
+        'Ź' => 'Z',
+        'Ż' => 'Z',
+        'Ž' => 'Z',
+    );
+
+
+    $result = strtr($string, $special_chars);   // replace known special chars
+    $result = strtoupper($result);                  // upper case
+    // make sure every special char is replaced by one space, not two or three
+    $result = mb_convert_encoding($result, 'ASCII', 'UTF-8');
+    $result = preg_replace('/[^A-Z0-9 \.,&\-\/\+\*\$%]/', ' ', $result);
+
+    return $result;
+}
+
diff --git a/include/dtaus.php b/include/dtaus.php
deleted file mode 100644 (file)
index 9437d38..0000000
+++ /dev/null
@@ -1,439 +0,0 @@
-<?php
-
-
-function action_dtaus() {
-    $members = db_get_members();
-    if (empty($members)) return;
-
-    $debits = array();
-    $cash_payments = array();
-    foreach ($members as $member) {
-               if (empty($member['directdebit'])) {
-                       // Barzahler
-                       $open = bcsub(fees_sum_for_member($member['id'], time()), bcadd(finance_get_paid_fees_for_member($member['id']), finance_get_paid_fees_for_member($member['id'], true)));
-                       if (bccomp($open, 0) != 1) continue;
-                       $cash_payments[] = array(
-                               'member_id'     => $member['id'],
-                               'member_number' => $member['number'],
-                               'nickname'      => $member['nickname'],
-                               'amount'        => $open
-                       );
-                       continue;
-               }
-        $info = fee_next_directdebit_for_member($member['id'], time());
-        if (empty($info)) continue;
-        $debits[] = array(
-            'member_id'     => $member['id'],
-            'member_number' => $member['number'],
-            'nickname'      => $member['nickname'],
-            'accountholder' => $member['accountholder'],
-            'accountnumber' => $member['accountnumber'],
-            'bankcode'      => $member['bankcode'],
-//          'bankname'      => $member['bankname'],
-            'amount'        => $info['value'],
-            'amountcent'    => '' . (int)round(bcmul($info['value'], 100)),
-            'purpose'       => $info['info']
-        );
-    }
-
-    js_modal_windows();
-    js_get_master_key();
-
-?>
-    <noscript>
-        <p class="error">
-            <strong>Achtung:</strong> Ohne JavaScript geht hier gar nichts. Bitte aktivieren!
-        </p>
-    </noscript>
-<?php if (!empty($cash_payments)) : ?>
-<h2>Barzahler</h2>
-<table>
-    <tr>
-        <th>Mitgliedsnummer</th>
-        <th>Nickname</th>
-        <th style="text-align: right;">Betrag</th>
-               <th></th>
-       </tr>
-<?php foreach ($cash_payments as $payment) : ?>
-    <tr>
-        <td><a href="<?=html_escape(link_to('fees', array('member_id'=> $payment['member_id'])))?>"><?=html_escape($payment['member_number'])?></a></td>
-        <td><?=html_escape($payment['nickname'])?></td>
-        <td style="text-align: right;"><?=html_escape(format_money($payment['amount']))?></td>
-               <td>
-                       <form action="<?=link_to('create_earning')?>" method="post" class="clearfix">
-                               <?=html_hidden_field('date', format_date(time()))?>
-                               <?=html_hidden_field('type', 'fee')?>
-                               <?=html_hidden_field('status', 'paid')?>
-                               <?=html_hidden_field('value', format_money($payment['amount']))?>
-                               <?=html_hidden_field('member_id', $payment['member_id'])?>
-                               <?=html_hidden_field('description', '')?>
-                               <?=html_hidden_field('account', 'cash')?>
-                               <input class="submit" type="submit" name="submit" value="Einnahme verbuchen"/>
-                       </form>
-               </td>
-    </tr>
-<?php endforeach ?>
-</table>
-<?php endif ?>
-
-<h2>Bankeinzug</h2>
-<table>
-    <tr>
-        <th>Mitgliedsnummer</th>
-        <th>Nickname</th>
-        <th>Verwendungszweck</th>
-        <th style="text-align: right;">Betrag</th>
-    </tr>
-<?php $total = 0; ?>
-<?php foreach ($debits as $debit) : ?>
-    <tr>
-        <td><a href="<?=html_escape(link_to('fees', array('member_id'=> $debit['member_id'])))?>"><?=html_escape($debit['member_number'])?></a></td>
-        <td><?=html_escape($debit['nickname'])?></td>
-        <td><?=html_escape($debit['purpose'])?></td>
-        <td style="text-align: right;"><?=html_escape(format_money($debit['amount']))?></td>
-    </tr>
-    <?php $total = bcadd($total, $debit['amount']); ?>
-<?php endforeach ?>
-    <tr class="total">
-        <td>Gesamt</td>
-        <td></td>
-        <td></td>
-        <td style="text-align: right;"><?=html_escape(format_money($total))?></td>
-    </tr>
-</table>
-<input class="submit" type="button" name="btn_dtaus" value="DTAUS erzeugen" onclick="ask_for_password()" id="btn_change_bank_details"/>
-<br/>
-<br/>
-<form action="<?=link_to('create_earnings')?>" method="post" class="clearfix">
-<?php $count = 0; ?>
-<?php foreach ($debits as $debit) : ?>
-    <?=html_hidden_field(sprintf('earnings[%d][date]',        $count), format_date(time()))?>
-    <?=html_hidden_field(sprintf('earnings[%d][type]',        $count), 'fee')?>
-    <?=html_hidden_field(sprintf('earnings[%d][status]',      $count), 'paid')?>
-    <?=html_hidden_field(sprintf('earnings[%d][value]',       $count), $debit['amount'])?>
-    <?=html_hidden_field(sprintf('earnings[%d][member_id]',   $count), $debit['member_id'])?>
-    <?=html_hidden_field(sprintf('earnings[%d][description]', $count), $debit['purpose'])?>
-    <?php $count++; ?>
-<?php endforeach ?>
-<input class="submit" type="submit" name="btn_create_earnings" value="Einnahmen verbuchen"/>
-</form>
-
-<a href="<?=link_to('export_ibanhin')?>">IBAN-hin Export</a>
-
-<div id="password_popup" class="modal_window">
-    <fieldset>
-        <legend>Passwortabfrage</legend>
-        <?=html_password_field('Passwort', 'password')?>
-        <input class="submit" type="button" name="btn_generate_dtaus" value="DTAUS erzeugen" onclick="generate_dtaus()"/>
-        <input class="submit" type="button" name="btn_cancel" value="Abbrechen" onclick="cancel_ask_for_password()"/>
-    </fieldset>
-</div>
-<div id="dtaus_popup" class="modal_window">
-    <fieldset>
-        <legend>DTAUS</legend>
-            <textarea id="dtaus_content" style="width: 100%" rows="30" readonly="readonly"></textarea>
-            <input class="submit" type="button" name="btn_dtaus_close" value="Schließen" onclick="dtaus_close()"/>
-    </fieldset>
-</div>
-
-<script type="text/javascript">
-
-var debits = new Array(
-    <?=join(",\n", array_map('json_encode', $debits)) ?>
-);
-
-
-$(document).ready(function(){  
-    $('#password').keypress( function(event) { if (event.keyCode == '13') { generate_dtaus(); } });
-    $('#btn_dtaus').focus();
-});  
-
-
-function ask_for_password() {/*{{{*/
-    modal_window_show($("#password_popup"));
-    $("#password").focus();
-    return;
-}/*}}}*/
-
-function cancel_ask_for_password() {/*{{{*/
-    modal_window_hide();
-    $("#btn_dtaus").focus();
-    return;
-}/*}}}*/
-
-
-function generate_dtaus() {/*{{{*/
-
-    var password = $('#password').val();
-    $("#password").val('');
-
-    // We pass a closure so that get_master_key may defer execution
-    get_master_key(password, function(masterkey) {
-
-        modal_window_replace($("#dtaus_popup"));
-
-        if (!DTAUS.setAccountFileSender('<?=dtaus_string(ACCOUNT_HOLDER)?>', '<?=BANK_CODE?>', '<?=ACCOUNT_NUMBER?>')) {
-            $('#dtaus_content').val(DTAUS.errormsg);
-            return;
-        }
-
-        for (var i = 0; i < debits.length; i++) {
-            var accountholder = debits[i]['accountholder'];
-            var accountnumber = debits[i]['accountnumber'];
-            var bankcode      = debits[i]['bankcode'];
-
-            // Encrypt/Decrypt data using AES with masterkey
-            if (accountholder != "") accountholder = Crypto.charenc.UTF8.bytesToString(Crypto.AES.decrypt(accountholder, masterkey));
-            if (accountnumber != "") accountnumber = Crypto.charenc.UTF8.bytesToString(Crypto.AES.decrypt(accountnumber, masterkey));
-            if (bankcode      != "") bankcode      = Crypto.charenc.UTF8.bytesToString(Crypto.AES.decrypt(bankcode,      masterkey));
-
-            accountholder = DTAUS.prepareString(accountholder);
-
-            if (!DTAUS.addExchange(accountholder, bankcode, accountnumber, '', debits[i]['amountcent'], debits[i]['purpose'])) {
-                $('#dtaus_content').val('Mitglied ' + debits[i]['member_number'] + ' ' + accountholder + '\n' + DTAUS.errormsg);
-                return;
-            }
-        }
-        
-        $('#dtaus_content').val(DTAUS.getFileContent());
-        $('#dtaus_content').focus();
-        $('#dtaus_content').select();
-    });
-
-}/*}}}*/
-
-function dtaus_close() {/*{{{*/
-    modal_window_hide();
-    $("#dtaus_content").val('');
-}/*}}}*/
-
-
-
-</script>
-<?
-}
-
-// borrowed from PEARs Payment_DTA
-function dtaus_string($string) {
-    if (strlen($string) == 0) return '';
-    $special_chars = array(
-        'á' => 'a',
-        'à' => 'a',
-        'ä' => 'ae',
-        'â' => 'a',
-        'ã' => 'a',
-        'å' => 'a',
-        'æ' => 'ae',
-        'ā' => 'a',
-        'ă' => 'a',
-        'ą' => 'a',
-        'ȁ' => 'a',
-        'ȃ' => 'a',
-        'Á' => 'A',
-        'À' => 'A',
-        'Ä' => 'Ae',
-        'Â' => 'A',
-        'Ã' => 'A',
-        'Å' => 'A',
-        'Æ' => 'AE',
-        'Ā' => 'A',
-        'Ă' => 'A',
-        'Ą' => 'A',
-        'Ȁ' => 'A',
-        'Ȃ' => 'A',
-        'ç' => 'c',
-        'ć' => 'c',
-        'ĉ' => 'c',
-        'ċ' => 'c',
-        'č' => 'c',
-        'Ç' => 'C',
-        'Ć' => 'C',
-        'Ĉ' => 'C',
-        'Ċ' => 'C',
-        'Č' => 'C',
-        'ď' => 'd',
-        'đ' => 'd',
-        'Ď' => 'D',
-        'Đ' => 'D',
-        'é' => 'e',
-        'è' => 'e',
-        'ê' => 'e',
-        'ë' => 'e',
-        'ē' => 'e',
-        'ĕ' => 'e',
-        'ė' => 'e',
-        'ę' => 'e',
-        'ě' => 'e',
-        'ȅ' => 'e',
-        'ȇ' => 'e',
-        'É' => 'E',
-        'È' => 'E',
-        'Ê' => 'E',
-        'Ë' => 'E',
-        'Ē' => 'E',
-        'Ĕ' => 'E',
-        'Ė' => 'E',
-        'Ę' => 'E',
-        'Ě' => 'E',
-        'Ȅ' => 'E',
-        'Ȇ' => 'E',
-        'ĝ' => 'g',
-        'ğ' => 'g',
-        'ġ' => 'g',
-        'ģ' => 'g',
-        'Ĝ' => 'G',
-        'Ğ' => 'G',
-        'Ġ' => 'G',
-        'Ģ' => 'G',
-        'ĥ' => 'h',
-        'ħ' => 'h',
-        'Ĥ' => 'H',
-        'Ħ' => 'H',
-        'ì' => 'i',
-        'ì' => 'i',
-        'î' => 'i',
-        'ï' => 'i',
-        'ĩ' => 'i',
-        'ī' => 'i',
-        'ĭ' => 'i',
-        'į' => 'i',
-        'ı' => 'i',
-        'ij' => 'ij',
-        'ȉ' => 'i',
-        'ȋ' => 'i',
-        'Í' => 'I',
-        'Ì' => 'I',
-        'Î' => 'I',
-        'Ï' => 'I',
-        'Ĩ' => 'I',
-        'Ī' => 'I',
-        'Ĭ' => 'I',
-        'Į' => 'I',
-        'İ' => 'I',
-        'IJ' => 'IJ',
-        'Ȉ' => 'I',
-        'Ȋ' => 'I',
-        'ĵ' => 'j',
-        'Ĵ' => 'J',
-        'ķ' => 'k',
-        'Ķ' => 'K',
-        'ĺ' => 'l',
-        'ļ' => 'l',
-        'ľ' => 'l',
-        'ŀ' => 'l',
-        'ł' => 'l',
-        'Ĺ' => 'L',
-        'Ļ' => 'L',
-        'Ľ' => 'L',
-        'Ŀ' => 'L',
-        'Ł' => 'L',
-        'ñ' => 'n',
-        'ń' => 'n',
-        'ņ' => 'n',
-        'ň' => 'n',
-        'ʼn' => 'n',
-        'Ñ' => 'N',
-        'Ń' => 'N',
-        'Ņ' => 'N',
-        'Ň' => 'N',
-        'ó' => 'o',
-        'ò' => 'o',
-        'ö' => 'oe',
-        'ô' => 'o',
-        'õ' => 'o',
-        'ø' => 'o',
-        'ō' => 'o',
-        'ŏ' => 'o',
-        'ő' => 'o',
-        'œ' => 'oe',
-        'ȍ' => 'o',
-        'ȏ' => 'o',
-        'Ó' => 'O',
-        'Ò' => 'O',
-        'Ö' => 'Oe',
-        'Ô' => 'O',
-        'Õ' => 'O',
-        'Ø' => 'O',
-        'Ō' => 'O',
-        'Ŏ' => 'O',
-        'Ő' => 'O',
-        'Œ' => 'OE',
-        'Ȍ' => 'O',
-        'Ȏ' => 'O',
-        'ŕ' => 'r',
-        'ř' => 'r',
-        'ȑ' => 'r',
-        'ȓ' => 'r',
-        'Ŕ' => 'R',
-        'Ř' => 'R',
-        'Ȑ' => 'R',
-        'Ȓ' => 'R',
-        'ß' => 'ss',
-        'ś' => 's',
-        'ŝ' => 's',
-        'ş' => 's',
-        'š' => 's',
-        'ș' => 's',
-        'Ś' => 'S',
-        'Ŝ' => 'S',
-        'Ş' => 'S',
-        'Š' => 'S',
-        'Ș' => 'S',
-        'ţ' => 't',
-        'ť' => 't',
-        'ŧ' => 't',
-        'ț' => 't',
-        'Ţ' => 'T',
-        'Ť' => 'T',
-        'Ŧ' => 'T',
-        'Ț' => 'T',
-        'ú' => 'u',
-        'ù' => 'u',
-        'ü' => 'ue',
-        'û' => 'u',
-        'ũ' => 'u',
-        'ū' => 'u',
-        'ŭ' => 'u',
-        'ů' => 'u',
-        'ű' => 'u',
-        'ų' => 'u',
-        'ȕ' => 'u',
-        'ȗ' => 'u',
-        'Ú' => 'U',
-        'Ù' => 'U',
-        'Ü' => 'Ue',
-        'Û' => 'U',
-        'Ũ' => 'U',
-        'Ū' => 'U',
-        'Ŭ' => 'U',
-        'Ů' => 'U',
-        'Ű' => 'U',
-        'Ų' => 'U',
-        'Ȕ' => 'U',
-        'Ȗ' => 'U',
-        'ŵ' => 'w',
-        'Ŵ' => 'W',
-        'ý' => 'y',
-        'ÿ' => 'y',
-        'ŷ' => 'y',
-        'Ý' => 'Y',
-        'Ÿ' => 'Y',
-        'Ŷ' => 'Y',
-        'ź' => 'z',
-        'ż' => 'z',
-        'ž' => 'z',
-        'Ź' => 'Z',
-        'Ż' => 'Z',
-        'Ž' => 'Z',
-    );
-
-
-    $result = strtr($string, $special_chars);   // replace known special chars
-    $result = strtoupper($result);                  // upper case
-    // make sure every special char is replaced by one space, not two or three
-    $result = mb_convert_encoding($result, 'ASCII', 'UTF-8');
-    $result = preg_replace('/[^A-Z0-9 \.,&\-\/\+\*\$%]/', ' ', $result);
-
-    return $result;
-}
-
index ee443a1..3e64fee 100644 (file)
--- a/index.php
+++ b/index.php
@@ -18,7 +18,7 @@ require_once('include/events.php');
 require_once('include/expenses.php');
 require_once('include/members.php');
 require_once('include/payments.php');
-require_once('include/dtaus.php');
+require_once('include/directdebit.php');
 require_once('include/xlsexport.php');
 
 
@@ -52,10 +52,10 @@ try {
         case 'delete_expense' : action_delete_expense();  break;
         case 'cryptography'   : action_cryptography();    break;
         case 'fees'           : action_fees();            break;
-        case 'dtaus'          : action_dtaus();           break;
+        case 'directdebit'    : action_directdebit();     break;
         case 'finances'       : action_finances();        break;
         case 'export'         : action_export_payments(); break;
-        case 'export_members' : action_export_members(); break;
+        case 'export_members' : action_export_members();  break;
         default: action_404();
     }
 
@@ -143,7 +143,7 @@ try {
             <li><a href="<?=link_to()?>">Mitglieder</a></li>
             <li><a href="<?=link_to('finances')?>">Finanzen</a></li>
             <li><a href="<?=link_to('fees')?>">Mitgliedsbeitr&auml;ge</a></li>
-            <li><a href="<?=link_to('dtaus')?>">Bankeinzug</a></li>
+            <li><a href="<?=link_to('directdebit')?>">Bankeinzug</a></li>
             <li><a href="<?=link_to('cryptography')?>">Kryptographie</a></li>
         </ul>
     </div>