From 3ca7d0a29fdf8ea9f854dc5200e6a53f8959a982 Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Thu, 21 Mar 2019 16:17:45 +0100
Subject: [PATCH] FEAT #9692 Email Express

---
 .../class/class_lists_Abstract.php             |  7 +++----
 src/app/email/controllers/EmailController.php  | 18 +++++++++++++++---
 src/app/email/scripts/sendEmail.php            |  2 ++
 .../sendmail-administration.component.ts       |  4 ++--
 4 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/apps/maarch_entreprise/class/class_lists_Abstract.php b/apps/maarch_entreprise/class/class_lists_Abstract.php
index 3ce38e3ca51..20229cb3310 100755
--- a/apps/maarch_entreprise/class/class_lists_Abstract.php
+++ b/apps/maarch_entreprise/class/class_lists_Abstract.php
@@ -28,7 +28,7 @@
  *
  * @file
  *
- * @author Yves Christian Kpakpo <dev@maarch.org>
+ * @author <dev@maarch.org>
  * @date $date$
  *
  * @version $Revision$
@@ -2152,8 +2152,7 @@ abstract class lists_Abstract extends Database
                 if ($sortColumn[$actualColumn] === null) {
                     $columnStyle = '';
                 } else {
-                    (strpos($this->orderField, $sortColumn[$actualColumn]) !== false) ?
-                        $columnStyle = ' style="background-image: url(static.php?filename=black_0.1.png);"' : $columnStyle = '';
+                    $columnStyle = (is_string($sortColumn[$actualColumn]) && strpos($this->orderField, $sortColumn[$actualColumn]) !== false) ? ' style="background-image: url(static.php?filename=black_0.1.png);"' : '';
                 }
 
                 //column
@@ -3351,7 +3350,7 @@ abstract class lists_Abstract extends Database
                     }
 
                     //Different background on ordered column
-                    isset($resultTheLine[$column]['order']) && (strpos($this->orderField, $resultTheLine[$column]['order']) !== false) ?
+                    isset($resultTheLine[$column]['order']) && is_string($resultTheLine[$column]['order']) && (strpos($this->orderField, $resultTheLine[$column]['order']) !== false) ?
                         $columnStyle = ' style="background-image: url(static.php?filename=black_0.1.png);"' : $columnStyle = '';
 
                     //If there is action on line click
diff --git a/src/app/email/controllers/EmailController.php b/src/app/email/controllers/EmailController.php
index 9f2abb5bcb7..fcae66f3387 100644
--- a/src/app/email/controllers/EmailController.php
+++ b/src/app/email/controllers/EmailController.php
@@ -18,6 +18,7 @@ use Attachment\controllers\AttachmentController;
 use Attachment\models\AttachmentModel;
 use Configuration\models\ConfigurationModel;
 use Email\models\EmailModel;
+use Email\scripts\EmailScript;
 use Entity\models\EntityModel;
 use Group\models\ServiceModel;
 use History\controllers\HistoryController;
@@ -49,7 +50,8 @@ class EmailController
         $isSent = EmailController::createEmail(['userId' => $user['id'], 'data' => $body]);
 
         if (!empty($isSent['errors'])) {
-            return $response->withStatus($isSent['code'])->withJson(['errors' => $isSent['errors']]);
+            $httpCode = empty($isSent['code']) ? 400 : $isSent['code'];
+            return $response->withStatus($httpCode)->withJson(['errors' => $isSent['errors']]);
         }
 
         return $response->withStatus(204);
@@ -90,6 +92,7 @@ class EmailController
             'info'         => _EMAIL_ADDED
         ]);
 
+        $isSent = ['success' => 'success'];
         if ($args['data']['status'] != 'DRAFT') {
             $customId = CoreConfigModel::getCustomId();
             if (empty($customId)) {
@@ -97,10 +100,19 @@ class EmailController
             }
             $encryptKey = CoreConfigModel::getEncryptKey();
             $options = empty($args['options']) ? '' : serialize($args['options']);
-            exec("php src/app/email/scripts/sendEmail.php {$customId} {$id} {$args['userId']} '{$encryptKey}' '{$options}' > /dev/null &");
+            if ($args['data']['status'] == 'EXPRESS') {
+                $isSent = EmailController::sendEmail(['emailId' => $id, 'userId' => $args['userId']]);
+                if (!empty($isSent['success'])) {
+                    EmailModel::update(['set' => ['status' => 'SENT', 'send_date' => 'CURRENT_TIMESTAMP'], 'where' => ['id = ?'], 'data' => [$id]]);
+                } else {
+                    EmailModel::update(['set' => ['status' => 'ERROR'], 'where' => ['id = ?'], 'data' => [$id]]);
+                }
+            } else {
+                exec("php src/app/email/scripts/sendEmail.php {$customId} {$id} {$args['userId']} '{$encryptKey}' '{$options}' > /dev/null &");
+            }
         }
 
-        return true;
+        return $isSent;
     }
 
     public static function getById(array $args)
diff --git a/src/app/email/scripts/sendEmail.php b/src/app/email/scripts/sendEmail.php
index 17870fcdaf4..dd191522f27 100644
--- a/src/app/email/scripts/sendEmail.php
+++ b/src/app/email/scripts/sendEmail.php
@@ -53,5 +53,7 @@ class EmailScript
         if (!empty($args['options']['acknowledgementReceiptId']) && !empty($isSent['success'])) {
             AcknowledgementReceiptModel::update(['set' => ['send_date' => 'CURRENT_TIMESTAMP'], 'where' => ['id = ?'], 'data' => [$args['options']['acknowledgementReceiptId']]]);
         }
+
+        return $isSent;
     }
 }
diff --git a/src/frontend/app/administration/sendmail/sendmail-administration.component.ts b/src/frontend/app/administration/sendmail/sendmail-administration.component.ts
index 3dfb6808ccb..38db14526b9 100644
--- a/src/frontend/app/administration/sendmail/sendmail-administration.component.ts
+++ b/src/frontend/app/administration/sendmail/sendmail-administration.component.ts
@@ -161,10 +161,10 @@ export class SendmailAdministrationComponent implements OnInit {
             "sender": { "email": this.currentUser.mail },
             "recipients": [this.recipientTest],
             "object": "[" + this.lang.doNotReply +"] " + this.lang.emailSendTest,
-            "status": "SENDMAILTEST",
+            "status": "EXPRESS",
             "body": this.lang.emailSendTest,
             "isHtml": false
-        }
+        };
         this.emailSendLoading = true;
 
         this.http.post('../../rest/emails', email)
-- 
GitLab