From 1084ba094a8dfec54da89b9c40bae03006bc381e Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Fri, 20 Jul 2018 15:34:12 +0200
Subject: [PATCH] FEAT Add offset function to database model

---
 src/app/priority/models/PriorityModelAbstract.php | 9 ++++++---
 src/core/controllers/CoreController.php           | 9 +++------
 src/core/models/DatabaseModel.php                 | 9 ++++++++-
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/app/priority/models/PriorityModelAbstract.php b/src/app/priority/models/PriorityModelAbstract.php
index f2129b53684..3442bbf4517 100644
--- a/src/app/priority/models/PriorityModelAbstract.php
+++ b/src/app/priority/models/PriorityModelAbstract.php
@@ -21,13 +21,16 @@ abstract class PriorityModelAbstract
     public static function get(array $aArgs = [])
     {
         ValidatorModel::arrayType($aArgs, ['select', 'where', 'data', 'orderBy']);
+        ValidatorModel::intType($aArgs, ['limit', 'offset']);
 
         $aReturn = DatabaseModel::select([
             'select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
             'table'     => ['priorities'],
-            'where'     => $aArgs['where'],
-            'data'      => $aArgs['data'],
-            'order_by'  => $aArgs['orderBy']
+            'where'     => empty($aArgs['where']) ? [] : $aArgs['where'],
+            'data'      => empty($aArgs['data']) ? [] : $aArgs['data'],
+            'order_by'  => empty($aArgs['orderBy']) ? [] : $aArgs['orderBy'],
+            'offset'    => empty($aArgs['offset']) ? 0 : $aArgs['offset'],
+            'limit'     => empty($aArgs['limit']) ? 0 : $aArgs['limit']
         ]);
 
         return $aReturn;
diff --git a/src/core/controllers/CoreController.php b/src/core/controllers/CoreController.php
index 0302bac10cd..19230481304 100644
--- a/src/core/controllers/CoreController.php
+++ b/src/core/controllers/CoreController.php
@@ -50,14 +50,11 @@ class CoreController
             foreach ($scriptsToInject as $value) {
                 if ($i == 0 && strstr($value, 'scripts.') !== false) {
                     $aInit['scriptsToinject'][] = $value;
-                }
-                if ($i == 1 && strstr($value, 'main.') !== false) {
+                } elseif ($i == 1 && strstr($value, 'main.') !== false) {
                     $aInit['scriptsToinject'][] = $value;
-                }
-                if ($i == 2 && strstr($value, 'runtime.') !== false) {
+                } elseif ($i == 2 && strstr($value, 'runtime.') !== false) {
                     $aInit['scriptsToinject'][] = $value;
-                }
-                if ($i == 3 && strstr($value, 'vendor.') !== false) {
+                } elseif ($i == 3 && strstr($value, 'vendor.') !== false) {
                     $aInit['scriptsToinject'][] = $value;
                 }
             }
diff --git a/src/core/models/DatabaseModel.php b/src/core/models/DatabaseModel.php
index afddc16981b..c2fc6433065 100755
--- a/src/core/models/DatabaseModel.php
+++ b/src/core/models/DatabaseModel.php
@@ -110,6 +110,13 @@ class DatabaseModel
             $orderBy = ' ORDER BY ' . implode(', ', $args['order_by']);
         }
 
+        if (empty($args['offset'])) {
+            $offset = '';
+        } else {
+            ValidatorModel::intType($args, ['offset']);
+            $offset = " OFFSET {$args['offset']}";
+        }
+
         if (empty($args['limit'])) {
             $limit = '';
         } else {
@@ -131,7 +138,7 @@ class DatabaseModel
             $limit = $limitData['limit'];
         }
 
-        $query = "SELECT {$select} FROM {$args['table']}{$where}{$groupBy}{$orderBy}{$limit}";
+        $query = "SELECT {$select} FROM {$args['table']}{$where}{$groupBy}{$orderBy}{$offset}{$limit}";
 
         $stmt = $db->query($query, $args['data']);
 
-- 
GitLab