From 33d35179b066a6de4145ff13bfbd325ac4ba03d6 Mon Sep 17 00:00:00 2001 From: Vinciane <vinciane.bizet@maarch.org> Date: Wed, 13 Mar 2019 17:13:08 +0100 Subject: [PATCH] FEAT #9692 Delete email --- src/app/email/controllers/EmailController.php | 35 +++++++++++++++++++ src/app/email/models/EmailModel.php | 14 ++++++++ src/core/lang/lang-en.php | 1 + src/core/lang/lang-fr.php | 1 + src/core/lang/lang-nl.php | 1 + 5 files changed, 52 insertions(+) diff --git a/src/app/email/controllers/EmailController.php b/src/app/email/controllers/EmailController.php index cc070855f0d..a22276c6bac 100644 --- a/src/app/email/controllers/EmailController.php +++ b/src/app/email/controllers/EmailController.php @@ -329,4 +329,39 @@ class EmailController return ['success' => 'success']; } + + public static function deleteEmail(array $args) + { + ValidatorModel::notEmpty($args, ['userId', 'id']); + ValidatorModel::intVal($args, ['userId', 'id']); + + $user = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]); + if (empty($user)) { + return ['errors' => 'user not found']; + } + + $email = EmailModel::getById(['select' => ['id', 'user_id'], 'id' => $args['id']]); + if (empty($email)) { + return ['errors' => 'email not found']; + } + + if ($email['user_id'] != $user['id']) { + return ['errors' => 'email out of perimeter']; + } + + EmailModel::delete([ + 'where' => ['id = ?'], + 'data' => [$args['id']] + ]); + + HistoryController::add([ + 'tableName' => 'emails', + 'recordId' => $args['id'], + 'eventType' => 'DEL', + 'eventId' => 'emailDeletion', + 'info' => _EMAIL_REMOVED + ]); + + return ['success' => 'email deleted']; + } } diff --git a/src/app/email/models/EmailModel.php b/src/app/email/models/EmailModel.php index d3dedc6c06a..46d8bcfead0 100644 --- a/src/app/email/models/EmailModel.php +++ b/src/app/email/models/EmailModel.php @@ -83,4 +83,18 @@ class EmailModel return true; } + + public static function delete(array $aArgs) + { + ValidatorModel::notEmpty($aArgs, ['where', 'data']); + ValidatorModel::arrayType($aArgs, ['where', 'data']); + + DatabaseModel::delete([ + 'table' => 'emails', + 'where' => $aArgs['where'], + 'data' => $aArgs['data'] + ]); + + return true; + } } diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index e931c745074..0a95b4f86f4 100755 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -54,6 +54,7 @@ define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Doctype second level edited'); define('_DOCUMENT_NOT_FOUND', 'Document not found'); define('_DOCUMENT_OUT_PERIMETER', 'Document out of perimeter'); define('_EMAIL_ADDED', 'Email added'); +define('_EMAIL_REMOVED', 'Email removed'); define('_ENTITY_CREATION', 'Entity creation'); define('_ENTITY_MODIFICATION', 'Entity modification'); define('_ENTITY_SUPPRESSION', 'Entity suppression'); diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index 502bb9a876f..48eede03e8f 100755 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -54,6 +54,7 @@ define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Sous-chemise modifiée'); define('_DOCUMENT_NOT_FOUND', 'Document introuvable'); define('_DOCUMENT_OUT_PERIMETER', 'Document en dehors du périmètre'); define('_EMAIL_ADDED', 'Courriel ajouté'); +define('_EMAIL_REMOVED', 'Courriel supprimé'); define('_ENTITY_CREATION', 'Création entité'); define('_ENTITY_MODIFICATION', 'Modification entité'); define('_ENTITY_SUPPRESSION', 'Suppression entité'); diff --git a/src/core/lang/lang-nl.php b/src/core/lang/lang-nl.php index 4b4b6e952be..1290d29ae31 100644 --- a/src/core/lang/lang-nl.php +++ b/src/core/lang/lang-nl.php @@ -44,6 +44,7 @@ define('_DOCTYPE_SECONDLEVEL_UPDATED', 'Submap gewijzigd'); define('_DOCUMENT_NOT_FOUND', 'Document onvindbaar'); define('_DOCUMENT_OUT_PERIMETER', 'Document buiten de omtrek'); //_TO_TRANSLATE define('_EMAIL_ADDED', 'TO_TRANSLATE : Email added'); +define('_EMAIL_REMOVED', 'E-mail verwijderd'); define('_ENTITY_CREATION', 'Aanmaak eenheid'); define('_ENTITY_MODIFICATION', 'Wijziging eenheid'); define('_ENTITY_SUPPRESSION', 'Verwijdering eenheid'); -- GitLab