From a157004f4aefaa5e2265f852f9432becedee1d66 Mon Sep 17 00:00:00 2001 From: msquare Date: Sun, 23 Jul 2017 11:46:54 +0200 Subject: handle failed db queries in Db class --- src/Database/Db.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/Database/Db.php b/src/Database/Db.php index 4116ffda..46edc96b 100644 --- a/src/Database/Db.php +++ b/src/Database/Db.php @@ -85,13 +85,13 @@ class Db * * @param string $query * @param array $bindings - * @return int|bool + * @return int Row count */ public static function insert($query, array $bindings = []) { self::query($query, $bindings); - return (self::$lastStatus ? self::$stm->rowCount() : false); + return self::$stm->rowCount(); } /** @@ -99,13 +99,13 @@ class Db * * @param string $query * @param array $bindings - * @return int|bool + * @return int */ public static function update($query, array $bindings = []) { self::query($query, $bindings); - return (self::$lastStatus ? self::$stm->rowCount() : false); + return self::$stm->rowCount(); } /** -- cgit v1.2.3-54-g00ecf From 908f5712cc97f9476de7a9530b5b3289c5deaf1d Mon Sep 17 00:00:00 2001 From: msquare Date: Sun, 23 Jul 2017 12:02:37 +0200 Subject: fix problem where 0 is not recognized as get value --- src/Http/Request.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Http/Request.php b/src/Http/Request.php index 2efd1e1d..3ff027d5 100644 --- a/src/Http/Request.php +++ b/src/Http/Request.php @@ -67,7 +67,7 @@ class Request { $data = $this->request + $this->query; - if (!empty($data[$key])) { + if (isset($data[$key])) { return $data[$key]; } @@ -84,7 +84,7 @@ class Request { $value = $this->input($key); - return !empty($value); + return !(empty($value) && strlen($value) == 0); } /** -- cgit v1.2.3-54-g00ecf From 2b834ba7f1fb585deb5a2e27186ba799e61e35ba Mon Sep 17 00:00:00 2001 From: msquare Date: Sun, 23 Jul 2017 12:11:50 +0200 Subject: fix problem where empty string is not recognized as get value --- src/Http/Request.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Http/Request.php b/src/Http/Request.php index 3ff027d5..fcfc2600 100644 --- a/src/Http/Request.php +++ b/src/Http/Request.php @@ -82,9 +82,9 @@ class Request */ public function has($key) { - $value = $this->input($key); + $data = $this->request + $this->query; - return !(empty($value) && strlen($value) == 0); + return isset($data[$key]); } /** -- cgit v1.2.3-54-g00ecf From 144b453bc6b594ea16838a006eb20b04e5b5ec19 Mon Sep 17 00:00:00 2001 From: msquare Date: Sun, 23 Jul 2017 12:18:32 +0200 Subject: fix unreadable exception --- src/Exceptions/Handler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/Exceptions/Handler.php b/src/Exceptions/Handler.php index 0532a7d8..942e11d6 100644 --- a/src/Exceptions/Handler.php +++ b/src/Exceptions/Handler.php @@ -72,7 +72,7 @@ class Handler )); if ($this->environment == self::ENV_DEVELOPMENT) { - echo '
';
+            echo '
';
             echo sprintf('%s: (%s)' . PHP_EOL, ucfirst($type), $number);
             var_export([
                 'string'  => $string,
-- 
cgit v1.2.3-54-g00ecf


From 5794c4cab8f6ef0529dfc51343b5ec78b134fb2a Mon Sep 17 00:00:00 2001
From: msquare 
Date: Fri, 28 Jul 2017 18:50:00 +0200
Subject: clear delete queries from false resuls

---
 includes/controller/shift_entries_controller.php   |  5 +----
 includes/controller/shifttypes_controller.php      |  5 +----
 includes/controller/user_angeltypes_controller.php |  5 +----
 includes/controller/users_controller.php           |  5 +----
 includes/model/AngelType_model.php                 |  7 +------
 includes/model/NeededAngelTypes_model.php          |  6 ++----
 includes/model/Room_model.php                      |  3 +--
 includes/model/ShiftEntry_model.php                |  3 +--
 includes/model/ShiftTypes_model.php                |  3 +--
 includes/model/Shifts_model.php                    | 14 +-------------
 includes/model/UserAngelTypes_model.php            | 10 +---------
 includes/model/UserDriverLicenses_model.php        |  7 +------
 includes/model/User_model.php                      |  3 ---
 includes/pages/admin_import.php                    |  5 +----
 includes/pages/admin_rooms.php                     |  4 +---
 includes/pages/user_myshifts.php                   |  6 ++----
 src/Database/Db.php                                |  4 ++--
 17 files changed, 19 insertions(+), 76 deletions(-)

(limited to 'src')

diff --git a/includes/controller/shift_entries_controller.php b/includes/controller/shift_entries_controller.php
index 54c57332..03d7a27f 100644
--- a/includes/controller/shift_entries_controller.php
+++ b/includes/controller/shift_entries_controller.php
@@ -269,10 +269,7 @@ function shift_entry_delete_controller()
             redirect(page_link_to('user_shifts'));
         }
 
-        $result = ShiftEntry_delete($entry_id);
-        if ($result === false) {
-            engelsystem_error('Unable to delete shift entry.');
-        }
+        ShiftEntry_delete($entry_id);
 
         engelsystem_log(
             'Deleted ' . User_Nick_render($shift_entry_source) . '\'s shift: ' . $shift_entry_source['name']
diff --git a/includes/controller/shifttypes_controller.php b/includes/controller/shifttypes_controller.php
index 790bbb56..f4791511 100644
--- a/includes/controller/shifttypes_controller.php
+++ b/includes/controller/shifttypes_controller.php
@@ -28,10 +28,7 @@ function shifttype_delete_controller()
     }
 
     if ($request->has('confirmed')) {
-        $result = ShiftType_delete($shifttype['id']);
-        if (empty($result)) {
-            engelsystem_error('Unable to delete shifttype.');
-        }
+        ShiftType_delete($shifttype['id']);
 
         engelsystem_log('Deleted shifttype ' . $shifttype['name']);
         success(sprintf(_('Shifttype %s deleted.'), $shifttype['name']));
diff --git a/includes/controller/user_angeltypes_controller.php b/includes/controller/user_angeltypes_controller.php
index 41185552..ab16139a 100644
--- a/includes/controller/user_angeltypes_controller.php
+++ b/includes/controller/user_angeltypes_controller.php
@@ -215,10 +215,7 @@ function user_angeltype_delete_controller()
     }
 
     if ($request->has('confirmed')) {
-        $result = UserAngelType_delete($user_angeltype);
-        if ($result === false) {
-            engelsystem_error('Unable to delete user angeltype.');
-        }
+        UserAngelType_delete($user_angeltype);
 
         $success_message = sprintf(_('User %s removed from %s.'), User_Nick_render($user_source), $angeltype['name']);
         engelsystem_log($success_message);
diff --git a/includes/controller/users_controller.php b/includes/controller/users_controller.php
index f441c8af..05b97716 100644
--- a/includes/controller/users_controller.php
+++ b/includes/controller/users_controller.php
@@ -76,10 +76,7 @@ function user_delete_controller()
         }
 
         if ($valid) {
-            $result = User_delete($user_source['UID']);
-            if ($result === false) {
-                engelsystem_error('Unable to delete user.');
-            }
+            User_delete($user_source['UID']);
 
             mail_user_delete($user_source);
             success(_('User deleted.'));
diff --git a/includes/model/AngelType_model.php b/includes/model/AngelType_model.php
index af213432..b9238467 100644
--- a/includes/model/AngelType_model.php
+++ b/includes/model/AngelType_model.php
@@ -77,20 +77,15 @@ function AngelType_contact_info($angeltype)
  * Delete an Angeltype.
  *
  * @param array $angeltype
- * @return bool
  */
 function AngelType_delete($angeltype)
 {
-    $result = DB::delete('
+    DB::delete('
       DELETE FROM `AngelTypes`
       WHERE `id`=?
       LIMIT 1
     ', [$angeltype['id']]);
-    if (is_null($result)) {
-        engelsystem_error('Unable to delete angeltype.');
-    }
     engelsystem_log('Deleted angeltype: ' . AngelType_name_render($angeltype));
-    return true;
 }
 
 /**
diff --git a/includes/model/NeededAngelTypes_model.php b/includes/model/NeededAngelTypes_model.php
index e77c715f..981c100a 100644
--- a/includes/model/NeededAngelTypes_model.php
+++ b/includes/model/NeededAngelTypes_model.php
@@ -35,22 +35,20 @@ function NeededAngelType_add($shift_id, $angeltype_id, $room_id, $count)
  * Deletes all needed angel types from given shift.
  *
  * @param int $shift_id id of the shift
- * @return int count of affected rows
  */
 function NeededAngelTypes_delete_by_shift($shift_id)
 {
-    return (int)DB::delete('DELETE FROM `NeededAngelTypes` WHERE `shift_id` = ?', [$shift_id]);
+    DB::delete('DELETE FROM `NeededAngelTypes` WHERE `shift_id` = ?', [$shift_id]);
 }
 
 /**
  * Deletes all needed angel types from given room.
  *
  * @param int $room_id id of the room
- * @return int count of affected rows
  */
 function NeededAngelTypes_delete_by_room($room_id)
 {
-    return (int)DB::delete(
+    DB::delete(
         'DELETE FROM `NeededAngelTypes` WHERE `room_id` = ?',
         [$room_id]
     );
diff --git a/includes/model/Room_model.php b/includes/model/Room_model.php
index fdd9dddc..d76e6036 100644
--- a/includes/model/Room_model.php
+++ b/includes/model/Room_model.php
@@ -17,11 +17,10 @@ function Rooms($show_all = false)
  * Delete a room
  *
  * @param int $room_id
- * @return bool
  */
 function Room_delete($room_id)
 {
-    return DB::delete('DELETE FROM `Room` WHERE `RID` = ?', [$room_id]);
+    DB::delete('DELETE FROM `Room` WHERE `RID` = ?', [$room_id]);
 }
 
 /**
diff --git a/includes/model/ShiftEntry_model.php b/includes/model/ShiftEntry_model.php
index 3a282efc..bca63774 100644
--- a/includes/model/ShiftEntry_model.php
+++ b/includes/model/ShiftEntry_model.php
@@ -143,13 +143,12 @@ function ShiftEntry($shift_entry_id)
  * Delete a shift entry.
  *
  * @param int $shift_entry_id
- * @return bool
  */
 function ShiftEntry_delete($shift_entry_id)
 {
     $shift_entry = ShiftEntry($shift_entry_id);
     mail_shift_removed(User($shift_entry['UID']), Shift($shift_entry['SID']));
-    return DB::delete('DELETE FROM `ShiftEntry` WHERE `id` = ?', [$shift_entry_id]);
+    DB::delete('DELETE FROM `ShiftEntry` WHERE `id` = ?', [$shift_entry_id]);
 }
 
 /**
diff --git a/includes/model/ShiftTypes_model.php b/includes/model/ShiftTypes_model.php
index 12fe38be..d6efe117 100644
--- a/includes/model/ShiftTypes_model.php
+++ b/includes/model/ShiftTypes_model.php
@@ -6,11 +6,10 @@ use Engelsystem\Database\DB;
  * Delete a shift type.
  *
  * @param int $shifttype_id
- * @return bool
  */
 function ShiftType_delete($shifttype_id)
 {
-    return DB::delete('DELETE FROM `ShiftTypes` WHERE `id`=?', [$shifttype_id]);
+    DB::delete('DELETE FROM `ShiftTypes` WHERE `id`=?', [$shifttype_id]);
 }
 
 /**
diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php
index 6e69fe35..2288e3cc 100644
--- a/includes/model/Shifts_model.php
+++ b/includes/model/Shifts_model.php
@@ -402,34 +402,22 @@ function Shift_signup_allowed(
  * Delete a shift by its external id.
  *
  * @param int $shift_psid
- * @return bool
  */
 function Shift_delete_by_psid($shift_psid)
 {
     DB::delete('DELETE FROM `Shifts` WHERE `PSID`=?', [$shift_psid]);
-
-    if (DB::getStm()->errorCode() != '00000') {
-        return false;
-    }
-
-    return true;
 }
 
 /**
  * Delete a shift.
  *
  * @param int $shift_id
- * @return bool
  */
 function Shift_delete($shift_id)
 {
     mail_shift_delete(Shift($shift_id));
 
-    $result = DB::delete('DELETE FROM `Shifts` WHERE `SID`=?', [$shift_id]);
-    if (DB::getStm()->errorCode() != '00000') {
-        engelsystem_error('Unable to delete shift.');
-    }
-    return $result;
+    DB::delete('DELETE FROM `Shifts` WHERE `SID`=?', [$shift_id]);
 }
 
 /**
diff --git a/includes/model/UserAngelTypes_model.php b/includes/model/UserAngelTypes_model.php
index f8277fd9..43bd23bc 100644
--- a/includes/model/UserAngelTypes_model.php
+++ b/includes/model/UserAngelTypes_model.php
@@ -125,7 +125,6 @@ function UserAngelType_update($user_angeltype_id, $supporter)
  * Delete all unconfirmed UserAngelTypes for given Angeltype.
  *
  * @param int $angeltype_id
- * @return bool
  */
 function UserAngelTypes_delete_all($angeltype_id)
 {
@@ -134,12 +133,6 @@ function UserAngelTypes_delete_all($angeltype_id)
       WHERE `angeltype_id`=?
       AND `confirm_user_id` IS NULL
     ', [$angeltype_id]);
-
-    if (DB::getStm()->errorCode() != '00000') {
-        engelsystem_error('Unable to delete all unconfirmed users.');
-    }
-
-    return true;
 }
 
 /**
@@ -178,11 +171,10 @@ function UserAngelType_confirm($user_angeltype_id, $confirm_user)
  * Delete an UserAngelType.
  *
  * @param array $user_angeltype
- * @return bool
  */
 function UserAngelType_delete($user_angeltype)
 {
-    return (bool)DB::delete('
+    DB::delete('
       DELETE FROM `UserAngelTypes`
       WHERE `id`=?
       LIMIT 1', [$user_angeltype['id']]);
diff --git a/includes/model/UserDriverLicenses_model.php b/includes/model/UserDriverLicenses_model.php
index ee93ac95..bc9b6516 100644
--- a/includes/model/UserDriverLicenses_model.php
+++ b/includes/model/UserDriverLicenses_model.php
@@ -132,13 +132,8 @@ function UserDriverLicenses_update($user_driver_license)
  * Delete a user's driver license entry
  *
  * @param int $user_id
- * @return bool
  */
 function UserDriverLicenses_delete($user_id)
 {
-    $result = DB::delete('DELETE FROM `UserDriverLicenses` WHERE `user_id`=?', [$user_id]);
-    if (DB::getStm()->errorCode() != '00000') {
-        engelsystem_error('Unable to remove user driver license information');
-    }
-    return $result;
+    DB::delete('DELETE FROM `UserDriverLicenses` WHERE `user_id`=?', [$user_id]);
 }
diff --git a/includes/model/User_model.php b/includes/model/User_model.php
index 9f767b74..adf81393 100644
--- a/includes/model/User_model.php
+++ b/includes/model/User_model.php
@@ -11,13 +11,10 @@ use Engelsystem\ValidationResult;
  * Delete a user
  *
  * @param int $user_id
- * @return bool
  */
 function User_delete($user_id)
 {
     DB::delete('DELETE FROM `User` WHERE `UID`=?', [$user_id]);
-
-    return DB::getStm()->errorCode() == '00000';
 }
 
 /**
diff --git a/includes/pages/admin_import.php b/includes/pages/admin_import.php
index 959a9d2e..506a9dbe 100644
--- a/includes/pages/admin_import.php
+++ b/includes/pages/admin_import.php
@@ -279,10 +279,7 @@ function admin_import()
             }
 
             foreach ($events_deleted as $event) {
-                $result = Shift_delete_by_psid($event['PSID']);
-                if ($result === false) {
-                    engelsystem_error('Unable to delete shift.');
-                }
+                Shift_delete_by_psid($event['PSID']);
             }
 
             engelsystem_log('Frab import done');
diff --git a/includes/pages/admin_rooms.php b/includes/pages/admin_rooms.php
index ad8eab83..d49db707 100644
--- a/includes/pages/admin_rooms.php
+++ b/includes/pages/admin_rooms.php
@@ -209,9 +209,7 @@ function admin_rooms()
             ]);
         } elseif ($request->input('show') == 'delete') {
             if ($request->has('ack')) {
-                if (!Room_delete($room_id)) {
-                    engelsystem_error('Unable to delete room.');
-                }
+                Room_delete($room_id);
 
                 engelsystem_log('Room deleted: ' . $name);
                 success(sprintf(_('Room %s deleted.'), $name));
diff --git a/includes/pages/user_myshifts.php b/includes/pages/user_myshifts.php
index 94116fc9..a10e6f82 100644
--- a/includes/pages/user_myshifts.php
+++ b/includes/pages/user_myshifts.php
@@ -145,10 +145,8 @@ function user_myshifts()
                 ($shift['start'] > time() + config('last_unsubscribe') * 3600)
                 || in_array('user_shifts_admin', $privileges)
             ) {
-                $result = ShiftEntry_delete($user_id);
-                if ($result === false) {
-                    engelsystem_error('Unable to delete shift entry.');
-                }
+                ShiftEntry_delete($user_id);
+
                 $room = Room($shift['RID']);
                 $angeltype = AngelType($shift['TID']);
                 $shifttype = ShiftType($shift['shifttype_id']);
diff --git a/src/Database/Db.php b/src/Database/Db.php
index 46edc96b..b433f40d 100644
--- a/src/Database/Db.php
+++ b/src/Database/Db.php
@@ -113,13 +113,13 @@ class Db
      *
      * @param string $query
      * @param array  $bindings
-     * @return int|bool
+     * @return int
      */
     public static function delete($query, array $bindings = [])
     {
         self::query($query, $bindings);
 
-        return (self::$lastStatus ? self::$stm->rowCount() : false);
+        return self::$stm->rowCount();
     }
 
     /**
-- 
cgit v1.2.3-54-g00ecf


From 440ed74cd7a0bde035a93fde36b08b9a5aca557d Mon Sep 17 00:00:00 2001
From: msquare 
Date: Fri, 28 Jul 2017 19:28:00 +0200
Subject: exception handler should handle throwables instead of exceptions

---
 src/Exceptions/Handler.php | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/Exceptions/Handler.php b/src/Exceptions/Handler.php
index 942e11d6..e52549e7 100644
--- a/src/Exceptions/Handler.php
+++ b/src/Exceptions/Handler.php
@@ -2,7 +2,7 @@
 
 namespace Engelsystem\Exceptions;
 
-use Exception;
+use Throwable;
 
 class Handler
 {
@@ -38,9 +38,9 @@ class Handler
     }
 
     /**
-     * @param Exception $e
+     * @param Throwable $e
      */
-    public function exceptionHandler(Exception $e)
+    public function exceptionHandler(Throwable $e)
     {
         $this->handle(
             'exception',
-- 
cgit v1.2.3-54-g00ecf


From f82e5456d22af7e39a22a9a64e74072cf01e0a31 Mon Sep 17 00:00:00 2001
From: msquare 
Date: Fri, 28 Jul 2017 20:11:09 +0200
Subject: dried code by introducing selectOne for select queries with only one
 result line expected

---
 includes/controller/shift_entries_controller.php |  9 ++---
 includes/model/AngelType_model.php               |  8 +---
 includes/model/EventConfig_model.php             |  8 +---
 includes/model/Message_model.php                 |  6 +--
 includes/model/Room_model.php                    |  8 +---
 includes/model/ShiftEntry_model.php              | 13 ++-----
 includes/model/ShiftTypes_model.php              |  8 +---
 includes/model/Shifts_model.php                  | 18 +++------
 includes/model/UserAngelTypes_model.php          | 16 +-------
 includes/model/UserDriverLicenses_model.php      |  8 +---
 includes/model/User_model.php                    | 49 +++++-------------------
 includes/pages/admin_active.php                  |  9 ++---
 includes/pages/admin_groups.php                  |  6 +--
 includes/pages/admin_news.php                    |  4 +-
 includes/pages/admin_questions.php               | 12 +++---
 includes/pages/admin_shifts.php                  |  4 +-
 includes/pages/admin_user.php                    | 16 ++++----
 includes/pages/guest_login.php                   |  5 +--
 includes/pages/guest_stats.php                   |  3 +-
 includes/pages/user_messages.php                 |  8 ++--
 includes/pages/user_myshifts.php                 |  9 ++---
 includes/pages/user_news.php                     |  3 +-
 includes/pages/user_questions.php                |  4 +-
 includes/sys_auth.php                            |  5 +--
 src/Database/Db.php                              | 17 ++++++++
 25 files changed, 83 insertions(+), 173 deletions(-)

(limited to 'src')

diff --git a/includes/controller/shift_entries_controller.php b/includes/controller/shift_entries_controller.php
index 03d7a27f..72189869 100644
--- a/includes/controller/shift_entries_controller.php
+++ b/includes/controller/shift_entries_controller.php
@@ -43,7 +43,7 @@ function shift_entry_add_controller()
         $type = AngelType($type_id);
     } else {
         // TODO: Move queries to model
-        $type = DB::select('
+        $type = DB::selectOne('
             SELECT *
             FROM `UserAngelTypes`
             JOIN `AngelTypes` ON (`UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`)
@@ -56,7 +56,6 @@ function shift_entry_add_controller()
                 )
             )
         ', [$type_id, $user['UID']]);
-        $type = array_shift($type);
     }
 
     if (empty($type)) {
@@ -241,7 +240,7 @@ function shift_entry_delete_controller()
     }
     $entry_id = $request->input('entry_id');
 
-    $shift_entry_source = DB::select('
+    $shift_entry_source = DB::selectOne('
         SELECT
             `User`.`Nick`,
             `ShiftEntry`.`Comment`,
@@ -260,9 +259,7 @@ function shift_entry_delete_controller()
         WHERE `ShiftEntry`.`id`=?',
         [$entry_id]
     );
-    if (count($shift_entry_source) > 0) {
-        $shift_entry_source = array_shift($shift_entry_source);
-
+    if (!empty($shift_entry_source)) {
         if (!in_array('user_shifts_admin', $privileges) && (!in_array('shiftentry_edit_angeltype_supporter',
                     $privileges) || !User_is_AngelType_supporter($user, AngelType($shift_entry_source['angeltype_id'])))
         ) {
diff --git a/includes/model/AngelType_model.php b/includes/model/AngelType_model.php
index f08733d5..bc535667 100644
--- a/includes/model/AngelType_model.php
+++ b/includes/model/AngelType_model.php
@@ -256,14 +256,8 @@ function AngelType_ids()
  */
 function AngelType($angeltype_id)
 {
-    $angelType_source = DB::select(
+    return DB::selectOne(
         'SELECT * FROM `AngelTypes` WHERE `id`=?',
         [$angeltype_id]
     );
-
-    if (empty($angelType_source)) {
-        return null;
-    }
-
-    return array_shift($angelType_source);
 }
diff --git a/includes/model/EventConfig_model.php b/includes/model/EventConfig_model.php
index c5caf4d5..646d19c5 100644
--- a/includes/model/EventConfig_model.php
+++ b/includes/model/EventConfig_model.php
@@ -9,13 +9,7 @@ use Engelsystem\Database\DB;
  */
 function EventConfig()
 {
-    $event_config = DB::select('SELECT * FROM `EventConfig` LIMIT 1');
-
-    if (empty($event_config)) {
-        return null;
-    }
-
-    return array_shift($event_config);
+    return DB::selectOne('SELECT * FROM `EventConfig` LIMIT 1');
 }
 
 /**
diff --git a/includes/model/Message_model.php b/includes/model/Message_model.php
index ebd4b37e..9bb037af 100644
--- a/includes/model/Message_model.php
+++ b/includes/model/Message_model.php
@@ -20,11 +20,7 @@ function Message_ids()
  */
 function Message($message_id)
 {
-    $message_source = DB::select('SELECT * FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id]);
-    if (empty($message_source)) {
-        return null;
-    }
-    return array_shift($message_source);
+    return DB::selectOne('SELECT * FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id]);
 }
 
 /**
diff --git a/includes/model/Room_model.php b/includes/model/Room_model.php
index 08e0f7bf..8425e5ad 100644
--- a/includes/model/Room_model.php
+++ b/includes/model/Room_model.php
@@ -58,17 +58,11 @@ function Room_create($name, $from_frab, $public, $number = null)
  */
 function Room($room_id, $onlyVisible = true)
 {
-    $room_source = DB::select('
+    return DB::selectOne('
         SELECT *
         FROM `Room`
         WHERE `RID` = ?
         ' . ($onlyVisible ? 'AND `show` = \'Y\'' : ''),
         [$room_id]
     );
-
-    if (empty($room_source)) {
-        return null;
-    }
-
-    return array_shift($room_source);
 }
diff --git a/includes/model/ShiftEntry_model.php b/includes/model/ShiftEntry_model.php
index 563a611f..3a7254ad 100644
--- a/includes/model/ShiftEntry_model.php
+++ b/includes/model/ShiftEntry_model.php
@@ -28,10 +28,9 @@ function ShiftEntry_new()
  */
 function ShiftEntries_freeleaded_count()
 {
-    $result = DB::select('SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1');
-    $result = array_shift($result);
+    $result = DB::selectOne('SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1');
 
-    if (!is_array($result)) {
+    if (empty($result)) {
         return 0;
     }
 
@@ -129,13 +128,7 @@ function ShiftEntry_update($shift_entry)
  */
 function ShiftEntry($shift_entry_id)
 {
-    $shift_entry = DB::select('SELECT * FROM `ShiftEntry` WHERE `id` = ?', [$shift_entry_id]);
-
-    if (empty($shift_entry)) {
-        return null;
-    }
-
-    return $shift_entry[0];
+    return DB::selectOne('SELECT * FROM `ShiftEntry` WHERE `id` = ?', [$shift_entry_id]);
 }
 
 /**
diff --git a/includes/model/ShiftTypes_model.php b/includes/model/ShiftTypes_model.php
index 05c1a949..227df367 100644
--- a/includes/model/ShiftTypes_model.php
+++ b/includes/model/ShiftTypes_model.php
@@ -70,13 +70,7 @@ function ShiftType_create($name, $angeltype_id, $description)
  */
 function ShiftType($shifttype_id)
 {
-    $shifttype = DB::select('SELECT * FROM `ShiftTypes` WHERE `id`=?', [$shifttype_id]);
-
-    if (empty($shifttype)) {
-        return null;
-    }
-
-    return array_shift($shifttype);
+    return DB::selectOne('SELECT * FROM `ShiftTypes` WHERE `id`=?', [$shifttype_id]);
 }
 
 /**
diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php
index 939a4f4e..88b28998 100644
--- a/includes/model/Shifts_model.php
+++ b/includes/model/Shifts_model.php
@@ -112,7 +112,7 @@ function NeededAngeltypes_by_ShiftsFilter(ShiftsFilter $shiftsFilter)
  */
 function NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype)
 {
-    $result = DB::select('
+    return DB::selectOne('
           SELECT
               `NeededAngelTypes`.*,
               `Shifts`.`SID`,
@@ -150,12 +150,6 @@ function NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype)
             $angeltype['id']
         ]
     );
-
-    if (empty($result)) {
-        return null;
-    }
-
-    return $result[0];
 }
 
 /**
@@ -453,13 +447,13 @@ function Shift_update($shift)
  */
 function Shift_update_by_psid($shift)
 {
-    $shift_source = DB::select('SELECT `SID` FROM `Shifts` WHERE `PSID`=?', [$shift['PSID']]);
+    $shift_source = DB::selectOne('SELECT `SID` FROM `Shifts` WHERE `PSID`=?', [$shift['PSID']]);
 
     if (empty($shift_source)) {
         throw new Exception('Shift not found.');
     }
 
-    $shift['SID'] = $shift_source[0]['SID'];
+    $shift['SID'] = $shift_source['SID'];
     return Shift_update($shift);
 }
 
@@ -537,18 +531,16 @@ function Shifts_by_user($user, $include_freeload_comments = false)
  */
 function Shift($shift_id)
 {
-    $shifts_source = DB::select('
+    $result = DB::selectOne('
       SELECT `Shifts`.*, `ShiftTypes`.`name`
       FROM `Shifts`
       JOIN `ShiftTypes` ON (`ShiftTypes`.`id` = `Shifts`.`shifttype_id`)
       WHERE `SID`=?', [$shift_id]);
 
-    if (empty($shifts_source)) {
+    if (empty($result)) {
         return null;
     }
 
-    $result = $shifts_source[0];
-
     $shiftsEntry_source = DB::select('
         SELECT `id`, `TID` , `UID` , `freeloaded`
         FROM `ShiftEntry`
diff --git a/includes/model/UserAngelTypes_model.php b/includes/model/UserAngelTypes_model.php
index 3ec151fb..5b0caf98 100644
--- a/includes/model/UserAngelTypes_model.php
+++ b/includes/model/UserAngelTypes_model.php
@@ -197,17 +197,11 @@ function UserAngelType_create($user, $angeltype)
  */
 function UserAngelType($user_angeltype_id)
 {
-    $angeltype = DB::select('
+    return DB::selectOne('
       SELECT *
       FROM `UserAngelTypes`
       WHERE `id`=?
       LIMIT 1', [$user_angeltype_id]);
-
-    if (empty($angeltype)) {
-        return null;
-    }
-
-    return $angeltype[0];
 }
 
 /**
@@ -219,7 +213,7 @@ function UserAngelType($user_angeltype_id)
  */
 function UserAngelType_by_User_and_AngelType($user, $angeltype)
 {
-    $angeltype = DB::select('
+    return DB::selectOne('
           SELECT *
           FROM `UserAngelTypes`
           WHERE `user_id`=?
@@ -231,10 +225,4 @@ function UserAngelType_by_User_and_AngelType($user, $angeltype)
             $angeltype['id']
         ]
     );
-
-    if (empty($angeltype)) {
-        return null;
-    }
-
-    return array_shift($angeltype);
 }
diff --git a/includes/model/UserDriverLicenses_model.php b/includes/model/UserDriverLicenses_model.php
index 515a2701..798aa6ab 100644
--- a/includes/model/UserDriverLicenses_model.php
+++ b/includes/model/UserDriverLicenses_model.php
@@ -45,16 +45,10 @@ function UserDriverLicense_valid($user_driver_license)
  */
 function UserDriverLicense($user_id)
 {
-    $user_driver_license = DB::select('
+    return DB::selectOne('
         SELECT *
         FROM `UserDriverLicenses`
         WHERE `user_id`=?', [$user_id]);
-
-    if (empty($user_driver_license)) {
-        return null;
-    }
-
-    return array_shift($user_driver_license);
 }
 
 /**
diff --git a/includes/model/User_model.php b/includes/model/User_model.php
index f86d5bf6..4757ed3c 100644
--- a/includes/model/User_model.php
+++ b/includes/model/User_model.php
@@ -87,8 +87,7 @@ function User_update($user)
  */
 function User_force_active_count()
 {
-    $result = DB::select('SELECT COUNT(*) FROM `User` WHERE `force_active` = 1');
-    $result = array_shift($result);
+    $result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `force_active` = 1');
 
     if (empty($result)) {
         return 0;
@@ -102,8 +101,7 @@ function User_force_active_count()
  */
 function User_active_count()
 {
-    $result = DB::select('SELECT COUNT(*) FROM `User` WHERE `Aktiv` = 1');
-    $result = array_shift($result);
+    $result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `Aktiv` = 1');
 
     if (empty($result)) {
         return 0;
@@ -117,8 +115,7 @@ function User_active_count()
  */
 function User_got_voucher_count()
 {
-    $result = DB::select('SELECT SUM(`got_voucher`) FROM `User`');
-    $result = array_shift($result);
+    $result = DB::selectOne('SELECT SUM(`got_voucher`) FROM `User`');
 
     if (empty($result)) {
         return 0;
@@ -132,8 +129,7 @@ function User_got_voucher_count()
  */
 function User_arrived_count()
 {
-    $result = DB::select('SELECT COUNT(*) FROM `User` WHERE `Gekommen` = 1');
-    $result = array_shift($result);
+    $result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `Gekommen` = 1');
 
     if (empty($result)) {
         return 0;
@@ -147,8 +143,7 @@ function User_arrived_count()
  */
 function User_tshirts_count()
 {
-    $result = DB::select('SELECT COUNT(*) FROM `User` WHERE `Tshirt` = 1');
-    $result = array_shift($result);
+    $result = DB::selectOne('SELECT COUNT(*) FROM `User` WHERE `Tshirt` = 1');
 
     if (empty($result)) {
         return 0;
@@ -382,13 +377,7 @@ function User_validate_planned_departure_date($planned_arrival_date, $planned_de
  */
 function User($user_id)
 {
-    $user_source = DB::select('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]);
-
-    if (empty($user_source)) {
-        return null;
-    }
-
-    return array_shift($user_source);
+    return DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]);
 }
 
 /**
@@ -400,13 +389,7 @@ function User($user_id)
  */
 function User_by_api_key($api_key)
 {
-    $user = DB::select('SELECT * FROM `User` WHERE `api_key`=? LIMIT 1', [$api_key]);
-
-    if (empty($user)) {
-        return null;
-    }
-
-    return $user[0];
+    return DB::selectOne('SELECT * FROM `User` WHERE `api_key`=? LIMIT 1', [$api_key]);
 }
 
 /**
@@ -417,30 +400,18 @@ function User_by_api_key($api_key)
  */
 function User_by_email($email)
 {
-    $user = DB::select('SELECT * FROM `User` WHERE `email`=? LIMIT 1', [$email]);
-
-    if (empty($user)) {
-        return null;
-    }
-
-    return array_shift($user);
+    return DB::selectOne('SELECT * FROM `User` WHERE `email`=? LIMIT 1', [$email]);
 }
 
 /**
  * Returns User by password token.
  *
  * @param string $token
- * @return array|null Matching user, null or false on error
+ * @return array|null Matching user, null when not found
  */
 function User_by_password_recovery_token($token)
 {
-    $user = DB::select('SELECT * FROM `User` WHERE `password_recovery_token`=? LIMIT 1', [$token]);
-
-    if (empty($user)) {
-        return null;
-    }
-
-    return array_shift($user);
+    return DB::selectOne('SELECT * FROM `User` WHERE `password_recovery_token`=? LIMIT 1', [$token]);
 }
 
 /**
diff --git a/includes/pages/admin_active.php b/includes/pages/admin_active.php
index 2e06f90d..be1217ff 100644
--- a/includes/pages/admin_active.php
+++ b/includes/pages/admin_active.php
@@ -210,19 +210,17 @@ function admin_active()
     $shirt_statistics = [];
     foreach (array_keys($tshirt_sizes) as $size) {
         if (!empty($size)) {
-            $sc = DB::select(
+            $sc = DB::selectOne(
                 'SELECT count(*) FROM `User` WHERE `Size`=? AND `Gekommen`=1',
                 [$size]
             );
             $sc = array_shift($sc);
-            $sc = array_shift($sc);
 
-            $gc = DB::select(
+            $gc = DB::selectOne(
                 'SELECT count(*) FROM `User` WHERE `Size`=? AND `Tshirt`=1',
                 [$size]
             );
             $gc = array_shift($gc);
-            $gc = array_shift($gc);
 
             $shirt_statistics[] = [
                 'size'   => $size,
@@ -232,8 +230,7 @@ function admin_active()
         }
     }
 
-    $uc = DB::select('SELECT count(*) FROM `User` WHERE `Tshirt`=1');
-    $uc = array_shift($uc);
+    $uc = DB::selectOne('SELECT count(*) FROM `User` WHERE `Tshirt`=1');
     $uc = array_shift($uc);
 
     $shirt_statistics[] = [
diff --git a/includes/pages/admin_groups.php b/includes/pages/admin_groups.php
index c483a79d..ea0d4dbc 100644
--- a/includes/pages/admin_groups.php
+++ b/includes/pages/admin_groups.php
@@ -107,23 +107,21 @@ function admin_groups()
                     return error('Incomplete call, missing Groups ID.', true);
                 }
 
-                $group = DB::select('SELECT * FROM `Groups` WHERE `UID`=? LIMIT 1', [$group_id]);
+                $group = DB::selectOne('SELECT * FROM `Groups` WHERE `UID`=? LIMIT 1', [$group_id]);
                 $privileges = $request->get('privileges');
                 if (!is_array($privileges)) {
                     $privileges = [];
                 }
                 if (!empty($group)) {
-                    $group = array_shift($group);
                     DB::delete('DELETE FROM `GroupPrivileges` WHERE `group_id`=?', [$group_id]);
                     $privilege_names = [];
                     foreach ($privileges as $privilege) {
                         if (preg_match('/^\d{1,}$/', $privilege)) {
-                            $group_privileges_source = DB::select(
+                            $group_privileges_source = DB::selectOne(
                                 'SELECT `name` FROM `Privileges` WHERE `id`=? LIMIT 1',
                                 [$privilege]
                             );
                             if (!empty($group_privileges_source)) {
-                                $group_privileges_source = array_shift($group_privileges_source);
                                 DB::insert(
                                     'INSERT INTO `GroupPrivileges` (`group_id`, `privilege_id`) VALUES (?, ?)',
                                     [$group_id, $privilege]
diff --git a/includes/pages/admin_news.php b/includes/pages/admin_news.php
index 7f8ca1ba..4eafd3e2 100644
--- a/includes/pages/admin_news.php
+++ b/includes/pages/admin_news.php
@@ -21,14 +21,13 @@ function admin_news()
         return error('Incomplete call, missing News ID.', true);
     }
 
-    $news = DB::select('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]);
+    $news = DB::selectOne('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]);
     if (empty($news)) {
         return error('No News found.', true);
     }
 
     switch ($request->input('action')) {
         case 'edit':
-            $news = array_shift($news);
             $user_source = User($news['UID']);
 
             $html .= form([
@@ -70,7 +69,6 @@ function admin_news()
             break;
 
         case 'delete':
-            $news = array_shift($news);
             DB::delete('DELETE FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]);
             engelsystem_log('News deleted: ' . $news['Betreff']);
             success(_('News entry deleted.'));
diff --git a/includes/pages/admin_questions.php b/includes/pages/admin_questions.php
index d05bace6..2b61b055 100644
--- a/includes/pages/admin_questions.php
+++ b/includes/pages/admin_questions.php
@@ -105,11 +105,11 @@ function admin_questions()
                     return error('Incomplete call, missing Question ID.', true);
                 }
 
-                $question = DB::select(
+                $question = DB::selectOne(
                     'SELECT * FROM `Questions` WHERE `QID`=? LIMIT 1',
                     [$question_id]
                 );
-                if (count($question) > 0 && $question[0]['AID'] == null) {
+                if (!empty($question) && $question['AID'] == null) {
                     $answer = trim(
                         preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui",
                             '',
@@ -129,7 +129,7 @@ function admin_questions()
                                 $question_id,
                             ]
                         );
-                        engelsystem_log('Question ' . $question[0]['Question'] . ' answered: ' . $answer);
+                        engelsystem_log('Question ' . $question['Question'] . ' answered: ' . $answer);
                         redirect(page_link_to('admin_questions'));
                     } else {
                         return error('Enter an answer!', true);
@@ -145,13 +145,13 @@ function admin_questions()
                     return error('Incomplete call, missing Question ID.', true);
                 }
 
-                $question = DB::select(
+                $question = DB::selectOne(
                     'SELECT * FROM `Questions` WHERE `QID`=? LIMIT 1',
                     [$question_id]
                 );
-                if (count($question) > 0) {
+                if (!empty($question)) {
                     DB::delete('DELETE FROM `Questions` WHERE `QID`=? LIMIT 1', [$question_id]);
-                    engelsystem_log('Question deleted: ' . $question[0]['Question']);
+                    engelsystem_log('Question deleted: ' . $question['Question']);
                     redirect(page_link_to('admin_questions'));
                 } else {
                     return error('No question found.', true);
diff --git a/includes/pages/admin_shifts.php b/includes/pages/admin_shifts.php
index 36028792..b5079ed1 100644
--- a/includes/pages/admin_shifts.php
+++ b/includes/pages/admin_shifts.php
@@ -325,7 +325,7 @@ function admin_shifts()
             );
 
             foreach ($_SESSION['admin_shifts_types'] as $type_id => $count) {
-                $angel_type_source = DB::select('
+                $angel_type_source = DB::selectOne('
                       SELECT *
                       FROM `AngelTypes`
                       WHERE `id` = ?
@@ -341,7 +341,7 @@ function admin_shifts()
                             $count
                         ]
                     );
-                    $needed_angel_types_info[] = $angel_type_source[0]['name'] . ': ' . $count;
+                    $needed_angel_types_info[] = $angel_type_source['name'] . ': ' . $count;
                 }
             }
         }
diff --git a/includes/pages/admin_user.php b/includes/pages/admin_user.php
index 510e2292..6bdc8d71 100644
--- a/includes/pages/admin_user.php
+++ b/includes/pages/admin_user.php
@@ -116,20 +116,20 @@ function admin_user()
 
         $html .= '
'; - $my_highest_group = DB::select( + $my_highest_group = DB::selectOne( 'SELECT group_id FROM `UserGroups` WHERE `uid`=? ORDER BY `group_id` LIMIT 1', [$user['UID']] ); - if (count($my_highest_group) > 0) { - $my_highest_group = $my_highest_group[0]['group_id']; + if (!empty($my_highest_group)) { + $my_highest_group = $my_highest_group['group_id']; } - $his_highest_group = DB::select( + $his_highest_group = DB::selectOne( 'SELECT `group_id` FROM `UserGroups` WHERE `uid`=? ORDER BY `group_id` LIMIT 1', [$user_id] ); - if (count($his_highest_group) > 0) { - $his_highest_group = $his_highest_group[0]['group_id']; + if (!empty($his_highest_group)) { + $his_highest_group = $his_highest_group['group_id']; } if ($user_id != $user['UID'] && $my_highest_group <= $his_highest_group) { @@ -188,7 +188,7 @@ function admin_user() count($my_highest_group) > 0 && ( count($his_highest_group) == 0 - || ($my_highest_group[0]['group_id'] <= $his_highest_group[0]['group_id']) + || ($my_highest_group['group_id'] <= $his_highest_group['group_id']) ) ) { $groups_source = DB::select(' @@ -203,7 +203,7 @@ function admin_user() ', [ $user_id, - $my_highest_group[0]['group_id'], + $my_highest_group['group_id'], ] ); $groups = []; diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php index 106db33a..f8c52767 100644 --- a/includes/pages/guest_login.php +++ b/includes/pages/guest_login.php @@ -399,9 +399,8 @@ function guest_login() if ($request->has('submit')) { if ($request->has('nick') && strlen(User_validate_Nick($request->input('nick'))) > 0) { $nick = User_validate_Nick($request->input('nick')); - $login_user = DB::select('SELECT * FROM `User` WHERE `Nick`=?', [$nick]); - if (count($login_user) > 0) { - $login_user = $login_user[0]; + $login_user = DB::selectOne('SELECT * FROM `User` WHERE `Nick`=?', [$nick]); + if (!empty($login_user)) { if ($request->has('password')) { if (!verify_password($request->post('password'), $login_user['Passwort'], $login_user['UID'])) { $valid = false; diff --git a/includes/pages/guest_stats.php b/includes/pages/guest_stats.php index 8aa6f740..bf1814a3 100644 --- a/includes/pages/guest_stats.php +++ b/includes/pages/guest_stats.php @@ -17,13 +17,12 @@ function guest_stats() list($arrived_user_count) = DB::select('SELECT count(*) AS `user_count` FROM `User` WHERE `Gekommen`=1'); $stats['arrived_user_count'] = $arrived_user_count['user_count']; - $done_shifts_seconds = DB::select(' + $done_shifts_seconds = DB::selectOne(' SELECT SUM(`Shifts`.`end` - `Shifts`.`start`) FROM `ShiftEntry` JOIN `Shifts` USING (`SID`) WHERE `Shifts`.`end` < UNIX_TIMESTAMP() '); - $done_shifts_seconds = array_shift($done_shifts_seconds); $done_shifts_seconds = (int)array_shift($done_shifts_seconds); $stats['done_work_hours'] = round($done_shifts_seconds / (60 * 60), 0); diff --git a/includes/pages/user_messages.php b/includes/pages/user_messages.php index a811970d..2dea6207 100644 --- a/includes/pages/user_messages.php +++ b/includes/pages/user_messages.php @@ -130,11 +130,11 @@ function user_messages() return error(_('Incomplete call, missing Message ID.'), true); } - $message = DB::select( + $message = DB::selectOne( 'SELECT `RUID` FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id] ); - if (count($message) > 0 && $message[0]['RUID'] == $user['UID']) { + if (!empty($message) && $message['RUID'] == $user['UID']) { DB::update( 'UPDATE `Messages` SET `isRead`=\'Y\' WHERE `id`=? LIMIT 1', [$message_id] @@ -152,11 +152,11 @@ function user_messages() return error(_('Incomplete call, missing Message ID.'), true); } - $message = DB::select( + $message = DB::selectOne( 'SELECT `SUID` FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id] ); - if (count($message) > 0 && $message[0]['SUID'] == $user['UID']) { + if (!empty($message) && $message['SUID'] == $user['UID']) { DB::delete('DELETE FROM `Messages` WHERE `id`=? LIMIT 1', [$message_id]); redirect(page_link_to('user_messages')); } else { diff --git a/includes/pages/user_myshifts.php b/includes/pages/user_myshifts.php index a10e6f82..81f8f505 100644 --- a/includes/pages/user_myshifts.php +++ b/includes/pages/user_myshifts.php @@ -31,8 +31,7 @@ function user_myshifts() $user_id = $user['UID']; } - $shifts_user = DB::select('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]); - $shifts_user = array_shift($shifts_user); + $shifts_user = DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$user_id]); if ($request->has('reset')) { if ($request->input('reset') == 'ack') { @@ -49,7 +48,7 @@ function user_myshifts() ]); } elseif ($request->has('edit') && preg_match('/^\d*$/', $request->input('edit'))) { $user_id = $request->input('edit'); - $shift = DB::select(' + $shift = DB::selectOne(' SELECT `ShiftEntry`.`freeloaded`, `ShiftEntry`.`freeload_comment`, @@ -74,7 +73,6 @@ function user_myshifts() ] ); if (count($shift) > 0) { - $shift = array_shift($shift); $freeloaded = $shift['freeloaded']; $freeload_comment = $shift['freeload_comment']; @@ -128,7 +126,7 @@ function user_myshifts() } } elseif ($request->has('cancel') && preg_match('/^\d*$/', $request->input('cancel'))) { $user_id = $request->input('cancel'); - $shift = DB::select(' + $shift = DB::selectOne(' SELECT * FROM `Shifts` INNER JOIN `ShiftEntry` USING (`SID`) @@ -140,7 +138,6 @@ function user_myshifts() ] ); if (count($shift) > 0) { - $shift = array_shift($shift); if ( ($shift['start'] > time() + config('last_unsubscribe') * 3600) || in_array('user_shifts_admin', $privileges) diff --git a/includes/pages/user_news.php b/includes/pages/user_news.php index 9bdcb6fb..3cf11a6b 100644 --- a/includes/pages/user_news.php +++ b/includes/pages/user_news.php @@ -126,8 +126,7 @@ function user_news_comments() && count(DB::select('SELECT `ID` FROM `News` WHERE `ID`=? LIMIT 1', [$request->input('nid')])) > 0 ) { $nid = $request->input('nid'); - $news = DB::select('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$nid]); - $news = array_shift($news); + $news = DB::selectOne('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$nid]); if ($request->has('text')) { $text = preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($request->input('text'))); DB::insert(' diff --git a/includes/pages/user_questions.php b/includes/pages/user_questions.php index e90ea011..e4f35577 100644 --- a/includes/pages/user_questions.php +++ b/includes/pages/user_questions.php @@ -61,11 +61,11 @@ function user_questions() return error(_('Incomplete call, missing Question ID.'), true); } - $question = DB::select( + $question = DB::selectOne( 'SELECT `UID` FROM `Questions` WHERE `QID`=? LIMIT 1', [$question_id] ); - if (count($question) > 0 && $question[0]['UID'] == $user['UID']) { + if (!empty($question) && $question['UID'] == $user['UID']) { DB::delete( 'DELETE FROM `Questions` WHERE `QID`=? LIMIT 1', [$question_id] diff --git a/includes/sys_auth.php b/includes/sys_auth.php index f1ec3192..e0ed67e5 100644 --- a/includes/sys_auth.php +++ b/includes/sys_auth.php @@ -11,10 +11,9 @@ function load_auth() $user = null; if (isset($_SESSION['uid'])) { - $user = DB::select('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$_SESSION['uid']]); - if (count($user) > 0) { + $user = DB::selectOne('SELECT * FROM `User` WHERE `UID`=? LIMIT 1', [$_SESSION['uid']]); + if (!empty($user)) { // User ist eingeloggt, Datensatz zur Verfügung stellen und Timestamp updaten - $user = array_shift($user); DB::update(' UPDATE `User` SET `lastLogIn` = ? diff --git a/src/Database/Db.php b/src/Database/Db.php index b433f40d..9422ae77 100644 --- a/src/Database/Db.php +++ b/src/Database/Db.php @@ -79,6 +79,23 @@ class Db return self::$stm->fetchAll(PDO::FETCH_ASSOC); } + + /** + * Run a select query and return only the first result or null if no result is found. + * @param string $query + * @param array $bindings + * @return array|null + */ + public static function selectOne($query, array $bindings = []) + { + $result = self::select($query); + + if(empty($result)) { + return null; + } + + return array_shift($result); + } /** * Run an insert query -- cgit v1.2.3-54-g00ecf From 26515d75827c18655c0e2e2ed174cdbf7419a7b9 Mon Sep 17 00:00:00 2001 From: msquare Date: Fri, 28 Jul 2017 20:12:40 +0200 Subject: forgott to include query bindings into selectOne --- src/Database/Db.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/Database/Db.php b/src/Database/Db.php index 9422ae77..777b16a2 100644 --- a/src/Database/Db.php +++ b/src/Database/Db.php @@ -88,7 +88,7 @@ class Db */ public static function selectOne($query, array $bindings = []) { - $result = self::select($query); + $result = self::select($query, $bindings); if(empty($result)) { return null; -- cgit v1.2.3-54-g00ecf