diff --git a/composer.json b/composer.json index 5ab93742a539714941ae642e5b3a36f4e5ad2de4..0ba5e310b4024cd23d4313222f3e807b87036ca7 100755 --- a/composer.json +++ b/composer.json @@ -5,6 +5,7 @@ "Basket\\" : "src/app/basket/", "Contact\\" : "src/app/contact/", "History\\" : "src/app/history/", + "Parameter\\" : "src/app/parameter/", "Priority\\" : "src/app/priority/", "Resource\\" : "src/app/resource/", "Status\\" : "src/app/status/", diff --git a/core/Controllers/ParametersController.php b/core/Controllers/ParametersController.php deleted file mode 100755 index 41b92d8e6fe1c671e946e2a37c2e1eb37de4b1fd..0000000000000000000000000000000000000000 --- a/core/Controllers/ParametersController.php +++ /dev/null @@ -1,179 +0,0 @@ -<?php -/** -* Copyright Maarch since 2008 under licence GPLv3. -* See LICENCE.txt file at the root folder for more details. -* This file is part of Maarch software. - -* @brief ParametersController -* @author dev <dev@maarch.org> -* @ingroup core -*/ - -namespace Core\Controllers; - -use Core\Models\ParameterModel; -use Psr\Http\Message\RequestInterface; -use Psr\Http\Message\ResponseInterface; -use Respect\Validation\Validator; - -class ParametersController -{ - public function getParametersForAdministration(RequestInterface $request, ResponseInterface $response) - { - $obj = [ - 'parametersList' => ParameterModel::getList(), - 'lang' => ParameterModel::getParametersLang() - ]; - return $response->withJson($obj); - } - - public function getParameterForAdministration(RequestInterface $request, ResponseInterface $response, $aArgs) - { - $obj['parameter'] = ParameterModel::getById(['id' => $aArgs['id']]); - - if (empty($obj)) { - return $response->withStatus(400)->withJson(['errors' => 'User not found']); - } - - if ($obj['parameter']['param_value_date']) { - $obj['type'] = 'date'; - } else if ($obj['parameter']['param_value_int']) { - $obj['type'] = 'int'; - } else { - $obj['type'] = 'string'; - } - - $obj['lang'] = ParameterModel::getParametersLang(); - - return $response->withJson($obj); - } - - public function getNewParameterForAdministration(RequestInterface $request, ResponseInterface $response) - { - $obj['lang'] = ParameterModel::getParametersLang(); - return $response->withJson($obj); - } - - public function getById(RequestInterface $request, ResponseInterface $response, $aArgs) - { - $obj = ParameterModel::getById(['id' => $aArgs['id']]); - return $response->withJson($obj); - } - public function create(RequestInterface $request, ResponseInterface $response) - { - $errors = $this->control($request, 'create'); - - if (!empty($errors)) { - return $response - ->withStatus(500) - ->withJson(['errors' => $errors]); - } - - $datas = $request->getParams(); - - $return = ParameterModel::create($datas); - - if ($return) { - $obj = ParameterModel::getById(['id' => $datas['id']]); - } else { - return $response - ->withStatus(500) - ->withJson(['errors' => _NOT_CREATE]); - } - - return $response->withJson( - [ - 'success' => _PARAMETER. ' <b>' . $obj['id'] .'</b> ' ._ADDED - ] - ); - } - - public function update(RequestInterface $request, ResponseInterface $response, $aArgs) - { - $errors = $this->control($request, 'update'); - - if (!empty($errors)) { - return $response - ->withStatus(500) - ->withJson(['errors' => $errors]); - } - - $aArgs = $request->getParams(); - $return = ParameterModel::update($aArgs); - - if ($return) { - $obj = ParameterModel::getById(['id' => $aArgs['id']]); - } else { - return $response - ->withStatus(500) - ->withJson(['errors' => _NOT_UPDATE]); - } - - return $response->withJson( - [ - 'success' => _PARAMETER. ' <b>' . $aArgs['id'] .'</b> ' ._UPDATED, - ] - ); - } - - public function delete(RequestInterface $request, ResponseInterface $response, $aArgs) - { - $obj = ParameterModel::delete(['id' => $aArgs['id']]); - return $response->withJson( - [ - 'success' => _PARAMETER. ' <b>' . $aArgs['id'] .'</b> ' ._DELETED, - 'parameters' => ParameterModel::getList() - ] - ); - } - - protected function control($request, $mode) - { - $errors = []; - - if ($mode == 'update') { - $obj = ParameterModel::getById( - [ - 'id' => $request->getParam('id'), - 'param_value_int' => $request->getParam('param_value_int') - ] - ); - if (empty($obj)) { - array_push($errors, _ID . ' '. _NOT_EXISTS); - } - } - if (!Validator::notEmpty()->validate($request->getParam('id'))) { - array_push($errors, _ID_IS_EMPTY_CONTROLLER); - } elseif ($mode == 'create') { - if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('id'))) { - array_push($errors, _INVALID_ID); - } - if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('description'))&&$request->getParam('description')!=null) { - array_push($errors, _INVALID_DESCRIPTION); - } - if (!Validator::regex('/^[\w.-]*$/')->validate($request->getParam('param_value_string'))&&$request->getParam('param_value_string')!=null) { - array_push($errors, _INVALID_STRING); - } - if (!Validator::regex('/^[0-9]*$/')->validate($request->getParam('param_value_int')) && $request->getParam('param_value_int')!=null) { - array_push($errors, _INVALID_INTEGER); - } - $obj = ParameterModel::getById(['id' => $request->getParam('id')]); - if (!empty($obj)) { - array_push($errors, _ID . ' ' . $obj[0]['id'] . ' ' . _ALREADY_EXISTS); - } - } - if ($request->getParam('param_value_date')!=null) { - if (date('d-m-Y', strtotime($request->getParam('param_value_date'))) != $request->getParam('param_value_date')) { - array_push($errors, _INVALID_PARAM_DATE); - } - } - if (!Validator::notEmpty()->validate($request->getParam('param_value_int')) - && !Validator::notEmpty()->validate($request->getParam('param_value_string')) - && !Validator::notEmpty()->validate($request->getParam('param_value_date')) - ) { - array_push($errors, _PARAM_VALUE_IS_EMPTY); - } - - return $errors; - } -} diff --git a/core/Controllers/UserController.php b/core/Controllers/UserController.php index 2cbd48f112a68c6ce95969f79ca152995b5fe187..e8d1db61f9e03126ec41dc011e0b0c7750f17057 100755 --- a/core/Controllers/UserController.php +++ b/core/Controllers/UserController.php @@ -309,7 +309,7 @@ class UserController 'recordId' => $user['user_id'], 'eventType' => 'RET', 'eventId' => 'userabs', - 'info' => "{$user['firstname']} {$user['lastname']} " ._BACK_FROM_VACATION + 'info' => "{$user['firstname']} {$user['lastname']} " ._BACK_FROM_VACATION ]); return $response->withJson([ diff --git a/core/Models/DatabaseModel.php b/core/Models/DatabaseModel.php index e901b75ab54580fd018c2b45ae5633afb4357d06..2cc3e9c65b1f11ada5de3c487785ec411f7fdd0e 100755 --- a/core/Models/DatabaseModel.php +++ b/core/Models/DatabaseModel.php @@ -45,6 +45,7 @@ class DatabaseModel * @param array $args * * @return int + * @throws \Exception */ public static function getNextSequenceValue(array $args) { @@ -149,6 +150,7 @@ class DatabaseModel * @param array $args * * @return bool + * @throws \Exception */ public static function insert(array $args) { @@ -184,6 +186,7 @@ class DatabaseModel * @param array $args * * @return bool + * @throws \Exception */ public static function update(array $args) { @@ -219,6 +222,7 @@ class DatabaseModel * @param array $args * * @return bool + * @throws \Exception */ public static function delete(array $args) { diff --git a/rest/index.php b/rest/index.php index 96220d3a00b5eca4c82dd7a79982f954f5602106..59267d3dcfd77be03a9589620048442199bba05c 100755 --- a/rest/index.php +++ b/rest/index.php @@ -147,7 +147,6 @@ $app->get('/groups/{id}/details', \Core\Controllers\GroupController::class . ':g $app->put('/groups/{id}/services/{serviceId}', \Core\Controllers\GroupController::class . ':updateService'); $app->put('/groups/{id}/reassign/{newGroupId}', \Core\Controllers\GroupController::class . ':reassignUsers'); - //Docservers $app->get('/docservers', \Core\Controllers\DocserverController::class . ':get'); $app->get('/docservers/{id}', \Core\Controllers\DocserverController::class . ':getById'); @@ -206,13 +205,12 @@ $app->put('/currentUser/emailSignature/{id}', \Core\Controllers\UserController:: $app->delete('/currentUser/emailSignature/{id}', \Core\Controllers\UserController::class . ':deleteCurrentUserEmailSignature'); $app->put('/currentUser/groups/{groupId}/baskets/{basketId}', \Core\Controllers\UserController::class . ':updateBasketPreference'); -//parameters -$app->get('/administration/parameters', \Core\Controllers\ParametersController::class . ':getParametersForAdministration'); -$app->get('/administration/parameters/new', \Core\Controllers\ParametersController::class . ':getNewParameterForAdministration'); -$app->get('/administration/parameters/{id}', \Core\Controllers\ParametersController::class . ':getParameterForAdministration'); -$app->post('/parameters', \Core\Controllers\ParametersController::class . ':create'); -$app->put('/parameters/{id}', \Core\Controllers\ParametersController::class . ':update'); -$app->delete('/parameters/{id}', \Core\Controllers\ParametersController::class . ':delete'); +//Parameters +$app->get('/parameters', \Parameter\controllers\ParameterController::class . ':get'); +$app->post('/parameters', \Parameter\controllers\ParameterController::class . ':create'); +$app->get('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':getById'); +$app->put('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':update'); +$app->delete('/parameters/{id}', \Parameter\controllers\ParameterController::class . ':delete'); //Priorities $app->get('/priorities', \Priority\controllers\PriorityController::class . ':get'); diff --git a/src/app/parameter/controllers/ParameterController.php b/src/app/parameter/controllers/ParameterController.php new file mode 100644 index 0000000000000000000000000000000000000000..b8c774783a320fe31d5286f9de57ade495cae7ed --- /dev/null +++ b/src/app/parameter/controllers/ParameterController.php @@ -0,0 +1,91 @@ +<?php + +/** +* Copyright Maarch since 2008 under licence GPLv3. +* See LICENCE.txt file at the root folder for more details. +* This file is part of Maarch software. + +* @brief ParametersController +* @author dev <dev@maarch.org> +* @ingroup core +*/ + +/** + * @brief Parameter Controller + * @author dev@maarch.org + */ + +namespace Parameter\controllers; + +use Core\Models\ServiceModel; +use Parameter\models\ParameterModel; +use Respect\Validation\Validator; +use Slim\Http\Request; +use Slim\Http\Response; + +class ParameterController +{ + public function get(Request $request, Response $response) + { + return $response->withJson(['parameters' => ParameterModel::get()]); + } + + public function getById(Request $request, Response $response, array $aArgs) + { + $parameter = ParameterModel::getById(['id' => $aArgs['id']]); + + if (empty($parameter)) { + return $response->withStatus(400)->withJson(['errors' => 'Parameter not found']); + } + + return $response->withJson(['parameter' => $parameter]); + } + + public function create(Request $request, Response $response) + { + if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) { + return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); + } + + $data = $request->getParams(); + + $check = Validator::stringType()->notEmpty()->validate($data['id']) && preg_match("/^[\w-]*$/", $data['id']); + if (!$check) { + return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); + } + + ParameterModel::create($data); + + return $response->withJson(['success' => 'success']); + } + + public function update(Request $request, Response $response, array $aArgs) + { + if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) { + return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); + } + + $parameter = ParameterModel::getById(['id' => $aArgs['id']]); + + if (empty($parameter)) { + return $response->withStatus(400)->withJson(['errors' => 'Parameter not found']); + } + + $data = $request->getParams(); + + ParameterModel::update($data); + + return $response->withJson(['success' => 'success']); + } + + public function delete(Request $request, Response $response, array $aArgs) + { + if (!ServiceModel::hasService(['id' => 'admin_parameters', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) { + return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); + } + + ParameterModel::delete(['id' => $aArgs['id']]); + + return $response->withJson(['parameters' => ParameterModel::get()]); + } +} diff --git a/core/Models/ParameterModel.php b/src/app/parameter/models/ParameterModel.php similarity index 77% rename from core/Models/ParameterModel.php rename to src/app/parameter/models/ParameterModel.php index bbc9f6f62f8401468121a7a80ffb25b304dab6aa..e48c2da5e36c72ec1144f5cfca8649f83b7a0f28 100644 --- a/core/Models/ParameterModel.php +++ b/src/app/parameter/models/ParameterModel.php @@ -1,4 +1,5 @@ <?php + /** * Copyright Maarch since 2008 under licence GPLv3. * See LICENCE.txt file at the root folder for more details. @@ -9,10 +10,13 @@ * @ingroup core */ -namespace Core\Models; +/** + * @brief Parameter Model + * @author dev@maarch.org + */ +namespace Parameter\models; class ParameterModel extends ParameterModelAbstract { - } \ No newline at end of file diff --git a/core/Models/ParameterModelAbstract.php b/src/app/parameter/models/ParameterModelAbstract.php similarity index 66% rename from core/Models/ParameterModelAbstract.php rename to src/app/parameter/models/ParameterModelAbstract.php index 43a9a197457d010895364748d4c86a5cb5e79726..a4a92cc1f5e61b0b63d380a99d83e156f5907130 100644 --- a/core/Models/ParameterModelAbstract.php +++ b/src/app/parameter/models/ParameterModelAbstract.php @@ -1,4 +1,5 @@ <?php + /** * Copyright Maarch since 2008 under licence GPLv3. * See LICENCE.txt file at the root folder for more details. @@ -9,37 +10,35 @@ * @ingroup core */ -namespace Core\Models; +/** + * @brief Parameter Model Abstract + * @author dev@maarch.org + */ + +namespace Parameter\models; + +use Core\Models\DatabaseModel; +use Core\Models\ValidatorModel; class ParameterModelAbstract { - public static function getList() + public static function get(array $aArgs = []) { - $aReturn = DatabaseModel::select( - ['select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['parameters']] - ); - - foreach ($aReturn as $key => $parameter) { + ValidatorModel::arrayType($aArgs, ['select']); - if ($parameter['param_value_date'] != null) { - $aReturn[$key]['param_value_date'] = TextFormatModel::formatDate($aReturn[$key]['param_value_date']); - } - } + $aReturn = DatabaseModel::select([ + 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'table' => ['parameters'], + ]); return $aReturn; } - - public static function getParametersLang() - { - $aLang = LangModel::getParametersLang(); - return $aLang; - } public static function getById(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['id']); ValidatorModel::stringType($aArgs, ['id']); + ValidatorModel::arrayType($aArgs, ['select']); $parameter = DatabaseModel::select([ 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], @@ -51,9 +50,6 @@ class ParameterModelAbstract if (empty($parameter[0])) { return []; } - if (!empty($parameter[0]['param_value_date'])) { - $parameter[0]['param_value_date'] = TextFormatModel::formatDate($parameter[0]['param_value_date']); - } return $parameter[0]; } @@ -79,34 +75,32 @@ class ParameterModelAbstract return true; } - public static function update(array $aArgs = []) + public static function update(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['id']); ValidatorModel::stringType($aArgs, ['id']); - $aReturn = DatabaseModel::update( - [ + DatabaseModel::update([ 'table' => 'parameters', 'set' => $aArgs, 'where' => ['id = ?'], 'data' => [$aArgs['id']] - ] - ); + ]); - return $aReturn; + return true; } - public static function delete(array $aArgs = []) + public static function delete(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['id']); ValidatorModel::stringType($aArgs, ['id']); - $aReturn = DatabaseModel::delete([ + DatabaseModel::delete([ 'table' => 'parameters', 'where' => ['id = ?'], 'data' => [$aArgs['id']] ]); - return $aReturn; + return true; } }