$bugfixes
authorIgor Scheller <igor.scheller@igorshp.de>
Fri, 1 Dec 2017 17:37:39 +0000 (18:37 +0100)
committerIgor Scheller <igor.scheller@igorshp.de>
Fri, 1 Dec 2017 17:37:39 +0000 (18:37 +0100)
12 files changed:
config.sample.php
include/database.php
include/directdebit.php
include/earnings.php
include/events.php
include/fees.php
include/finances.php
include/members.php
include/misc.php
include/payments.php
include/xlsexport.php
index.php

index 2f2bce2..026fbfb 100644 (file)
@@ -15,7 +15,7 @@ return [
     'bank'          => [
         'holder'      => 'CCCFFM e.V.',
         'number'      => '1234567890',
-        'code'        => '0987654321',
+        'code'        => '09876543',
         'creditor_id' => 'DE00ZZZ00000000000',
         'iban'        => 'DE89370400440532013000',
         'bic'         => 'TESTDEX0XXX',
index d54354d..88ac29c 100644 (file)
@@ -38,8 +38,8 @@ function db_insert($table, $fields, $ignore = false)
     $query = sprintf('INSERT %s INTO %s', ($ignore ? 'IGNORE' : ''), $table);
 
     $replacements = [];
-    foreach ($fields as $field) {
-        $replacements[] = ':' . $field;
+    foreach ($fields as $name => $field) {
+        $replacements[] = ':' . $name;
     }
 
     $query .= ' (`' . join('`,`', array_keys($fields)) . '`) VALUES (' . join(',', $replacements) . ')';
@@ -76,9 +76,11 @@ function db_update($table, $fields, $where = '', $special = '', $limit = 'LIMIT
 {
     $query = 'UPDATE `' . $table . '` SET ';
 
-    foreach ($fields as $field) {
-        $query .= '`' . $field . '` = ? ';
+    $params = [];
+    foreach ($fields as $name => $field) {
+        $params[] = '`' . $name . '` = ? ';
     }
+    $query .= implode(',', $params);
 
     $query .= $special . ' ';
     if (!empty($where)) {
index 5243e37..048246b 100644 (file)
@@ -5,7 +5,7 @@ use MemberDB\Config\Config;
 function action_directdebit()
 {
     $config = Config::getInstance();
-    $bank = $config['bank'];
+    $bank = $config->get('bank');
 
     $debittype = array(
         1 => 'DTAUS',
@@ -250,7 +250,7 @@ function action_directdebit()
                             collectiondate = collectiondate.add(1).month();
                         }
 
-                        if (!SEPACORE.init(collectiondate, '<?php echo $bank['creditor_id']; ?>', '<?php echo $bank['holder']; ?>', '<?php echo $bank['iban']; ?>', '<?php echo $bank['bic']; ?>'')) {
+                        if (!SEPACORE.init(collectiondate, '<?php echo $bank['creditor_id']; ?>', '<?php echo $bank['holder']; ?>', '<?php echo $bank['iban']; ?>', '<?php echo $bank['bic']; ?>')) {
                         $('#directdebit_content').val(DTAUS.errormsg);
                         return;
                 }
@@ -286,7 +286,7 @@ function action_directdebit()
                     $('#directdebit_content').val(SEPACORE.errormsg);
                     return;
                 }
-            };
+            }
             $('#directdebit_content').val(directdebitcontent);
             $('#directdebit_content2').val(directdebitcontent2);
             $('#directdebit_content').focus();
index d792760..6e24806 100644 (file)
@@ -35,7 +35,7 @@ function db_change_earning($earning)
     $earning['date'] = db_unixtime2datetime(ui_date2unixtime($earning['date']));
     $earning['value'] = ui_money2float($earning['value']);
     $earning['modified_at'] = db_unixtime2datetime(time());
-    return db_update('earnings', $earning, sprintf("id='%d'", (int)$id));
+    return db_update('earnings', $earning, sprintf("id=%d", (int)$id));
 }
 
 function db_delete_earning($earning)
@@ -216,7 +216,7 @@ function action_create_earnings()
         db_update(
             'members',
             $member,
-            sprintf("directdebit=2 AND id='%d'", (int)$post_data['member_id'])
+            sprintf("directdebit=2 AND id=%d", (int)$post_data['member_id'])
         );
     }
 
index ff1ae9f..493483c 100644 (file)
@@ -48,7 +48,7 @@ function db_change_event($event)
     if (!isset($event['payment_interval'])) {
         $special .= ',`payment_interval`=NULL';
     }
-    return db_update('events', $event, sprintf("id='%d'", (int)$id), $special);
+    return db_update('events', $event, sprintf("id=%d", (int)$id), $special);
 }
 
 function db_delete_event($event)
index 976526a..a9ceffc 100644 (file)
@@ -48,9 +48,11 @@ function _fees_apply_event_information(&$info, $events)
 
         foreach ($events as $event) {
 
+            /** @var DateTime $founding_date */
+            $founding_date = $config->get('founding_date');
             $timestamp = db_date2unixtime($event['event_date']);
-            if ($timestamp < $config->get('founding_date')) {
-                $timestamp = $config->get('founding_date');
+            if ($timestamp < $founding_date->getTimestamp()) {
+                $timestamp = $founding_date->getTimestamp();
             }
             $date_info = getdate($timestamp);
 
@@ -133,7 +135,9 @@ function fees_get_list_for_member($member_id, $end_date)
         }
     }
 
-    $ret = _fees_build_month_array($config->get('founding_date'), $end_date);
+    /** @var DateTime $founding_date */
+    $founding_date = $config->get('founding_date');
+    $ret = _fees_build_month_array($founding_date->getTimestamp(), $end_date);
     if (empty($ret)) {
         return null;
     }
index 77496ef..dadd52b 100644 (file)
@@ -16,7 +16,7 @@ function finance_get_paid_fees_for_member($member_id, $old_fees = false)
     //            Falls zu viel bezahlt, müssen diese auf die per Lastschrift
     //            eingezogenen Beiträge angerechnet werden.
     $row = db_select_single(
-        'SELECT SUM(value) AS paid_fees FROM `earnings` WHERE member_id=? AND type=? AND `status`=\'paid\'',
+        "SELECT SUM(value) AS paid_fees FROM `earnings` WHERE member_id=? AND type=? AND `status`='paid'",
         [$member_id, $old_fees ? 'old_fee' : 'fee']
     );
 
index 92fcffc..e7395c6 100644 (file)
@@ -34,7 +34,7 @@ function db_get_members()
 
 function db_get_member_with_id($member_id)
 {
-    $sql = 'SELECT * FROM `m̀embers` WHERE id=? LIMIT 1';
+    $sql = 'SELECT * FROM `members` WHERE id=? LIMIT 1';
     return db_select_single($sql, [$member_id]);
 }
 
@@ -62,10 +62,10 @@ function db_get_next_free_member_number()
 
 function db_get_member_with_number($member_number)
 {
-    return db_select_single('SELECT * FROM `members` WHERE NUMBER=? LIMIT 1', [$member_number]);
+    return db_select_single('SELECT * FROM `members` WHERE `number`=? LIMIT 1', [$member_number]);
 }
 
-function validate_member($userdata, &$dbdata, &$validation)
+function validate_member($userdata, &$db_data, &$validation)
 {
     $fields = array(
         'id'               => 'number',
@@ -96,29 +96,33 @@ function validate_member($userdata, &$dbdata, &$validation)
         'url'              => 'string',
         'twitter'          => 'string',
     );
-    $orig = $dbdata;
+    $orig = $db_data;
     foreach ($fields as $name => $type) {
         if ($type == 'bool') {
-            $dbdata[$name] = !empty($userdata[$name]);
+            $db_data[$name] = !empty($userdata[$name]);
             continue;
         }
         if (!isset($userdata[$name])) {
             continue;
         }
-        $dbdata[$name] = $userdata[$name];
+        if ($type == 'number') {
+            $userdata[$name] = (int)$userdata[$name];
+        }
+
+        $db_data[$name] = $userdata[$name];
     }
     // ids must be equal
     // number must be equal. if changed - check if free and allowed
     if (isset($orig['id'])) {
-        if ($dbdata['id'] != $orig['id']) {
+        if ($db_data['id'] != $orig['id']) {
             $validation[] = 'Irgendwas ist sehr sehr komisch.';
         }
-        if (!validate_member_number($dbdata['number'], $dbdata['id'])) {
+        if (!validate_member_number($db_data['number'], $db_data['id'])) {
             $validation[] = 'Die Mitgliedsnummer ist schon vergeben.';
         }
         return (count($validation) == 0);
     }
-    if (!validate_member_number($dbdata['number'])) {
+    if (!validate_member_number($db_data['number'])) {
         $validation[] = 'Die Mitgliedsnummer ist schon vergeben.';
     }
     return (count($validation) == 0);
@@ -350,7 +354,7 @@ function action_create_member()
 
             if (($member['ddmandatesigdate'] == 'TT.MM.JJJJ') ||
                 ($member['ddmandatesigdate'] == '')) {
-                $member['ddmandatesigdate'] = '0000-00-00 00:00:00';
+                $member['ddmandatesigdate'] = '1000-01-01 00:00:00';
             } else {
                 $member['ddmandatesigdate'] = db_unixtime2datetime(ui_date2unixtime($member['ddmandatesigdate']));
             }
@@ -382,7 +386,7 @@ function action_change_member()
 
             if (($member['ddmandatesigdate'] == 'TT.MM.JJJJ') ||
                 ($member['ddmandatesigdate'] == '')) {
-                $member['ddmandatesigdate'] = '0000-00-00 00:00:00';
+                $member['ddmandatesigdate'] = '1000-01-01 00:00:00';
             } else {
                 $member['ddmandatesigdate'] = db_unixtime2datetime(ui_date2unixtime($member['ddmandatesigdate']));
             }
@@ -487,7 +491,7 @@ function form_member($member = array(), $readonly = false, $log_messages = array
             <?php
             if ((!isset($member['ddmandatesigdate'])) ||
                 ($member['ddmandatesigdate'] == '') ||
-                ($member['ddmandatesigdate'] == '0000-00-00 00:00:00')) {
+                ($member['ddmandatesigdate'] == '1000-01-01 00:00:00')) {
                 $member['ddmandatesigdate'] = ($readonly) ? '' : html_escape('TT.MM.JJJJ');
             } else {
                 $member['ddmandatesigdate'] = html_escape(format_date(db_date2unixtime($member['ddmandatesigdate'])));
index 5f4b4ba..c2c5cdf 100644 (file)
@@ -84,7 +84,7 @@ function ui_date2unixtime($date)
 
 function ui_money2float($amount)
 {
-    return str_replace(',', '.', $amount);
+    return (float)str_replace(',', '.', $amount);
 }
 
 function paginate($url, $current, $max)
index ee7b683..81b9041 100644 (file)
@@ -15,16 +15,16 @@ function db_get_payments($offset, $count, $where)
     } elseif (isset($offset)) {
         $limit = sprintf(' LIMIT %d', (int)$count);
     }
+
     $sql = "
-        SELECT t.*, members.nickname AS nickname
-        FROM (
-            (SELECT 'earning' AS ptype, `earnings`.* FROM `earnings` `earnings`)
-            UNION
-            (SELECT 'expense', expenses.* FROM `expenses` `earnings`)
-        ) AS t
-        LEFT JOIN `members` ON t.member_id=members.id
-        ORDER BY `date` DESC, t.id DESC
-    " . $limit;
+          SELECT t.*, `members`.nickname AS nickname FROM (
+              (SELECT 'earning' AS ptype, `earnings`.* FROM `earnings` %1\$s)
+              UNION
+              (SELECT 'expense', `expenses`.* FROM `expenses` %1\$s)
+          ) AS t
+          LEFT JOIN `members` ON t.member_id=`members`.id
+          ORDER BY `date` DESC, t.id DESC" . $limit;
+
     return db_select_multi(sprintf($sql, $where));
 }
 
index 2f98536..de3c4fc 100644 (file)
@@ -17,7 +17,7 @@ function action_export_members()
     $row = 0;
     $col = 0;
 
-    $worksheet =& $workbook->addWorksheet('Mitglieder');
+    $worksheet = $workbook->addWorksheet('Mitglieder');
     $worksheet->setInputEncoding('UTF-8');
     $worksheet->write($row, $col++, 'Mitgliedsnummer');
     $worksheet->write($row, $col++, 'Nickname');
@@ -106,7 +106,7 @@ function action_export_payments()
         $year = substr($payment['date'], 0, 4);
         if ($year != $current_year) {
             $current_year = $year;
-            $worksheet =& $workbook->addWorksheet($year);
+            $worksheet = $workbook->addWorksheet($year);
             $worksheet->setInputEncoding('UTF-8');
             $row = 0;
 
index 509473f..1c6837b 100644 (file)
--- a/index.php
+++ b/index.php
@@ -11,6 +11,8 @@ bcscale(2);
 
 set_exception_handler(function (Throwable $e) {
     echo('Caught exception: ' . $e->getMessage());
+    //echo(sprintf('Caught exception: %s (%s:%s)', $e->getMessage(), $e->getFile(), $e->getLine()));
+    //var_dump($e);
     exit();
 });