From 3b9f2130e3e37867840993fa1eb8affb17686b8b Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Wed, 20 Feb 2019 16:46:42 +0100
Subject: [PATCH] FEAT #9105 Resource lock update

---
 .../resource/controllers/ResController.php    | 32 ++++---------------
 src/core/models/DatabaseModel.php             |  2 +-
 2 files changed, 7 insertions(+), 27 deletions(-)

diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index 177d3c2de87..eb56c73da3b 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -493,32 +493,6 @@ class ResController
         return $response->withJson(['success' => 'success']);
     }
 
-    public function isLock(Request $request, Response $response, array $aArgs)
-    {
-        if (!ResController::hasRightByResId(['resId' => $aArgs['resId'], 'userId' => $GLOBALS['userId']])) {
-            return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
-        }
-
-        $currentUser = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
-        $resource = ResModel::getById(['resId' => $aArgs['resId'], 'select' => ['locker_user_id', 'locker_time']]);
-
-        $lock = true;
-        if (empty($resource['locker_user_id'] || empty($resource['locker_time']))) {
-            $lock = false;
-        } elseif ($resource['locker_user_id'] == $currentUser['id']) {
-            $lock = false;
-        } elseif (strtotime($resource['locker_time']) < time()) {
-            $lock = false;
-        }
-
-        $lockBy = '';
-        if ($lock) {
-            $lockBy = UserModel::getLabelledUserById(['id' => $resource['locker_user_id']]);
-        }
-
-        return $response->withJson(['lock' => $lock, 'lockBy' => $lockBy]);
-    }
-
     public function lock(Request $request, Response $response, array $aArgs)
     {
         if (!ResController::hasRightByResId(['resId' => $aArgs['resId'], 'userId' => $GLOBALS['userId']])) {
@@ -542,6 +516,12 @@ class ResController
             return $response->withStatus(403)->withJson(['lockBy' => $user]);
         }
 
+        ResModel::update([
+            'set'   => ['locker_user_id' => $currentUser['id'], 'locker_time' => 'CURRENT_TIMESTAMP + interval \'1\' MINUTE'],
+            'where' => ['res_id = ?'],
+            'data'  => [$aArgs['resId']]
+        ]);
+
         return $response->withStatus(204);
     }
 
diff --git a/src/core/models/DatabaseModel.php b/src/core/models/DatabaseModel.php
index 221adf1f090..ec85cd6fefe 100755
--- a/src/core/models/DatabaseModel.php
+++ b/src/core/models/DatabaseModel.php
@@ -248,7 +248,7 @@ class DatabaseModel
         $dataSet = [];
         if (!empty($args['set'])) {
             foreach ($args['set'] as $key => $value) {
-                if ($value == 'SYSDATE' || $value == 'CURRENT_TIMESTAMP') {
+                if ($value == 'SYSDATE' || strpos($value, 'CURRENT_TIMESTAMP') !== false) {
                     $querySet[] = "{$key} = {$value}";
                 } else {
                     $querySet[] = "{$key} = ?";
-- 
GitLab