From 97d8bd5fe483eb53ef4a9b94b22608fa8303148b Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Wed, 1 Apr 2020 12:22:51 +0200 Subject: [PATCH] FEAT #13678 TIME 0:50 Refactoring user email signature --- migration/20.10/2010.sql | 10 +++ sql/structure.sql | 15 +--- src/app/user/controllers/UserController.php | 36 ++++----- src/app/user/models/UserModelAbstract.php | 82 --------------------- 4 files changed, 31 insertions(+), 112 deletions(-) diff --git a/migration/20.10/2010.sql b/migration/20.10/2010.sql index 4036ff4880c..0d1d783aa29 100755 --- a/migration/20.10/2010.sql +++ b/migration/20.10/2010.sql @@ -13,3 +13,13 @@ DELETE FROM usergroups_services WHERE service_id IN ('reports', 'admin_reports') ALTER TABLE users DROP COLUMN IF EXISTS refresh_token; ALTER TABLE users ADD COLUMN refresh_token jsonb NOT NULL DEFAULT '[]'; + +DO $$ BEGIN + IF (SELECT count(column_name) from information_schema.columns where table_name = 'users_email_signatures' and column_name = 'user_id' and data_type != 'integer') THEN + ALTER TABLE users_email_signatures ADD COLUMN user_id_tmp INTEGER; + UPDATE users_email_signatures set user_id_tmp = (select id FROM users where users.user_id = users_email_signatures.user_id); + ALTER TABLE users_email_signatures ALTER COLUMN user_id_tmp set not null; + ALTER TABLE users_email_signatures DROP COLUMN IF EXISTS user_id; + ALTER TABLE users_email_signatures RENAME COLUMN user_id_tmp TO user_id; + END IF; +END$$; diff --git a/sql/structure.sql b/sql/structure.sql index 3674a5b7a7d..70a29414798 100755 --- a/sql/structure.sql +++ b/sql/structure.sql @@ -473,24 +473,15 @@ CREATE TABLE groupbasket_redirect ) WITH (OIDS=FALSE); -CREATE SEQUENCE email_signatures_id_seq - INCREMENT 1 - MINVALUE 1 - MAXVALUE 9223372036854775807 - START 7 - CACHE 1; - CREATE TABLE users_email_signatures ( - id bigint NOT NULL DEFAULT nextval('email_signatures_id_seq'::regclass), - user_id character varying(255) NOT NULL, + id serial NOT NULL, + user_id INTEGER NOT NULL, html_body text NOT NULL, title character varying NOT NULL, CONSTRAINT email_signatures_pkey PRIMARY KEY (id) ) -WITH ( - OIDS=FALSE -); +WITH (OIDS=FALSE); /* FOLDERS */ CREATE TABLE folders diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index afbd99d10f8..812117a4242 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -49,6 +49,7 @@ use SrcCore\models\DatabaseModel; use SrcCore\models\PasswordModel; use Template\models\TemplateModel; use User\models\UserBasketPreferenceModel; +use User\models\UserEmailSignatureModel; use User\models\UserEntityModel; use User\models\UserGroupModel; use User\models\UserModel; @@ -117,7 +118,7 @@ class UserController if (PrivilegeController::hasPrivilege(['privilegeId' => 'view_personal_data', 'userId' => $GLOBALS['id']])) { $user['signatures'] = UserSignatureModel::getByUserSerialId(['userSerialid' => $aArgs['id']]); - $user['emailSignatures'] = UserModel::getEmailSignaturesById(['userId' => $user['user_id']]); + $user['emailSignatures'] = UserEmailSignatureModel::getByUserId(['userId' => $user['id']]); } else { $user['signatures'] = []; $user['emailSignatures'] = []; @@ -502,7 +503,7 @@ class UserController $user['external_id'] = json_decode($user['external_id'], true); $user['preferences'] = json_decode($user['preferences'], true); $user['signatures'] = UserSignatureModel::getByUserSerialId(['userSerialid' => $user['id']]); - $user['emailSignatures'] = UserModel::getEmailSignaturesById(['userId' => $user['user_id']]); + $user['emailSignatures'] = UserEmailSignatureModel::getByUserId(['userId' => $GLOBALS['id']]); $user['groups'] = UserModel::getGroupsByLogin(['login' => $user['user_id']]); $user['entities'] = UserModel::getEntitiesByLogin(['login' => $user['user_id']]); $user['baskets'] = BasketModel::getBasketsByLogin(['login' => $user['user_id']]); @@ -1021,14 +1022,14 @@ class UserController return $response->withJson(['errors' => 'Bad Request']); } - UserModel::createEmailSignature([ - 'userId' => $GLOBALS['userId'], + UserEmailSignatureModel::create([ + 'userId' => $GLOBALS['id'], 'title' => $data['title'], 'htmlBody' => $data['htmlBody'] ]); return $response->withJson([ - 'emailSignatures' => UserModel::getEmailSignaturesById(['userId' => $GLOBALS['userId']]) + 'emailSignatures' => UserEmailSignatureModel::getByUserId(['userId' => $GLOBALS['id']]) ]); } @@ -1040,26 +1041,26 @@ class UserController return $response->withJson(['errors' => 'Bad Request']); } - UserModel::updateEmailSignature([ + UserEmailSignatureModel::update([ 'id' => $aArgs['id'], - 'userId' => $GLOBALS['userId'], + 'userId' => $GLOBALS['id'], 'title' => $data['title'], 'htmlBody' => $data['htmlBody'] ]); return $response->withJson([ - 'emailSignature' => UserModel::getEmailSignatureWithSignatureIdById(['userId' => $GLOBALS['userId'], 'signatureId' => $aArgs['id']]) + 'emailSignature' => UserEmailSignatureModel::getById(['id' => $aArgs['id']]) ]); } public function deleteCurrentUserEmailSignature(Request $request, Response $response, array $aArgs) { - UserModel::deleteEmailSignature([ + UserEmailSignatureModel::delete([ 'id' => $aArgs['id'], - 'userId' => $GLOBALS['userId'] + 'userId' => $GLOBALS['id'] ]); - return $response->withJson(['emailSignatures' => UserModel::getEmailSignaturesById(['userId' => $GLOBALS['userId']])]); + return $response->withJson(['emailSignatures' => UserEmailSignatureModel::getByUserId(['userId' => $GLOBALS['id']])]); } public function addGroup(Request $request, Response $response, array $aArgs) @@ -1737,7 +1738,7 @@ class UserController public static function getCurrentUserEmailSignatures(Request $request, Response $response) { - $signatureModels = UserModel::getEmailSignaturesById(['userId' => $GLOBALS['userId']]); + $signatureModels = UserEmailSignatureModel::getByUserId(['userId' => $GLOBALS['id']]); $signatures = []; @@ -1757,16 +1758,15 @@ class UserController return $response->withStatus(400)->withJson(['errors' => 'Body param id is empty or not an integer']); } - $signatureModels = UserModel::getEmailSignatureWithSignatureIdById(['userId' => $GLOBALS['userId'], 'signatureId' => $args['id']]); - - if (empty($signatureModels)) { + $signature = UserEmailSignatureModel::getById(['id' => $args['id']]); + if (empty($signature) || $signature['userId'] != $GLOBALS['id']) { return $response->withStatus(404)->withJson(['errors' => 'Signature not found']); } $signature = [ - 'id' => $signatureModels['id'], - 'label' => $signatureModels['title'], - 'content' => $signatureModels['html_body'] + 'id' => $signature['id'], + 'label' => $signature['title'], + 'content' => $signature['html_body'] ]; return $response->withJson(['emailSignature' => $signature]); diff --git a/src/app/user/models/UserModelAbstract.php b/src/app/user/models/UserModelAbstract.php index be620ffe2c4..b4a7f32d7e1 100755 --- a/src/app/user/models/UserModelAbstract.php +++ b/src/app/user/models/UserModelAbstract.php @@ -270,88 +270,6 @@ abstract class UserModelAbstract return true; } - public static function createEmailSignature(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['userId', 'title', 'htmlBody']); - ValidatorModel::stringType($aArgs, ['userId', 'title', 'htmlBody']); - - DatabaseModel::insert([ - 'table' => 'users_email_signatures', - 'columnsValues' => [ - 'user_id' => $aArgs['userId'], - 'title' => $aArgs['title'], - 'html_body' => $aArgs['htmlBody'] - ] - ]); - - return true; - } - - public static function updateEmailSignature(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['id','userId', 'title', 'htmlBody']); - ValidatorModel::stringType($aArgs, ['userId', 'title', 'htmlBody']); - ValidatorModel::intVal($aArgs, ['id']); - - DatabaseModel::update([ - 'table' => 'users_email_signatures', - 'set' => [ - 'title' => $aArgs['title'], - 'html_body' => $aArgs['htmlBody'], - ], - 'where' => ['user_id = ?', 'id = ?'], - 'data' => [$aArgs['userId'], $aArgs['id']] - ]); - - return true; - } - - public static function deleteEmailSignature(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['id', 'userId']); - ValidatorModel::stringType($aArgs, ['userId']); - - DatabaseModel::delete([ - 'table' => 'users_email_signatures', - 'where' => ['user_id = ?', 'id = ?'], - 'data' => [$aArgs['userId'], $aArgs['id']] - ]); - - return true; - } - - public static function getEmailSignaturesById(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['userId']); - ValidatorModel::stringType($aArgs, ['userId']); - - $aReturn = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['users_email_signatures'], - 'where' => ['user_id = ?'], - 'data' => [$aArgs['userId']], - 'order_by' => ['id'] - ]); - - return $aReturn; - } - - public static function getEmailSignatureWithSignatureIdById(array $aArgs) - { - ValidatorModel::notEmpty($aArgs, ['userId', 'signatureId']); - ValidatorModel::stringType($aArgs, ['userId']); - ValidatorModel::intVal($aArgs, ['signatureId']); - - $aReturn = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], - 'table' => ['users_email_signatures'], - 'where' => ['user_id = ?', 'id = ?'], - 'data' => [$aArgs['userId'], $aArgs['signatureId']], - ]); - - return $aReturn[0]; - } - public static function getLabelledUserById(array $aArgs) { ValidatorModel::intVal($aArgs, ['id']); -- GitLab