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