فهرست منبع

Merge branch 'feature/v8-3938-bug_on_subdomain_change' into develop

Olivier Massot 2 سال پیش
والد
کامیت
a9728a0b1c

+ 51 - 1
src/Entity/Message/AbstractReport.php

@@ -6,6 +6,7 @@ namespace App\Entity\Message;
 use App\Entity\Access\Access;
 use App\Entity\Organization\Organization;
 use App\Enum\Message\ReportMessageStatusEnum;
+use Doctrine\DBAL\Types\Types;
 use Symfony\Component\Validator\Constraints as Assert;
 use Doctrine\ORM\Mapping as ORM;
 
@@ -28,6 +29,19 @@ class AbstractReport
     #[ORM\ManyToOne(inversedBy: 'report')]
     protected ?Organization $organization;
 
+    /**
+     * @deprecated Ne sert qu'à la rétrocompatibilité avec la V1, pourra être supprimé une fois la migration terminée
+     * @var string
+     */
+    #[ORM\Column(length: 255)]
+    private string $recipientType = '(ap2i)';
+
+    /**
+     * @deprecated Ne sert qu'à la rétrocompatibilité avec la V1, pourra être supprimé une fois la migration terminée
+     */
+    #[ORM\Column(type: Types::INTEGER)]
+    private int $recipientId = 0;
+
     public function getDateSend(): ?\DatetimeInterface
     {
         return $this->dateSend;
@@ -71,4 +85,40 @@ class AbstractReport
         $this->organization = $organization;
         return $this;
     }
-}
+
+    /**
+     * @deprecated Ne sert qu'à la rétrocompatibilité avec la V1, pourra être supprimé une fois la migration terminée
+     * @return string
+     */
+    public function getRecipientType(): string
+    {
+        return $this->recipientType;
+    }
+
+    /**
+     * @deprecated Ne sert qu'à la rétrocompatibilité avec la V1, pourra être supprimé une fois la migration terminée
+     * @param string $recipientType
+     */
+    public function setRecipientType(string $recipientType): void
+    {
+        $this->recipientType = $recipientType;
+    }
+
+    /**
+     * @deprecated Ne sert qu'à la rétrocompatibilité avec la V1, pourra être supprimé une fois la migration terminée
+     * @return int
+     */
+    public function getRecipientId(): int
+    {
+        return $this->recipientId;
+    }
+
+    /**
+     * @deprecated Ne sert qu'à la rétrocompatibilité avec la V1, pourra être supprimé une fois la migration terminée
+     * @param int $recipientId
+     */
+    public function setRecipientId(int $recipientId): void
+    {
+        $this->recipientId = $recipientId;
+    }
+}

+ 3 - 0
src/Enum/Message/MessageStatusEnum.php

@@ -7,6 +7,9 @@ use MyCLabs\Enum\Enum;
 
 /**
  * Cycle Enum.
+ * @method static FAILED()
+ * @method static SEND()
+ * @method static NO_RECIPIENT()
  */
 class MessageStatusEnum extends Enum
 {

+ 2 - 0
src/Enum/Message/ReportMessageStatusEnum.php

@@ -8,6 +8,8 @@ use MyCLabs\Enum\Enum;
 /**
  * Report Mail status.
  *
+ * @method static MISSING()
+ * @method static DELIVERED()
  */
 class ReportMessageStatusEnum extends Enum
 {

+ 1 - 2
src/Service/ApiLegacy/ApiLegacyRequestService.php

@@ -40,11 +40,10 @@ class ApiLegacyRequestService extends ApiRequestService
             throw new HttpException(500, 'Request error : Invalid security token');
         }
 
-        if (!in_array('BEARER', $_REQUEST)) {
+        if (!array_key_exists('BEARER', $_REQUEST)) {
             throw new HttpException(500, 'Request error : missing BEARER');
         }
 
-
         $headers = [
             'Accept' => '*/*',
             'Charset' => 'UTF-8',

+ 1 - 2
src/Service/Mailer/EmailRecipient.php

@@ -18,7 +18,6 @@ class EmailRecipient
     private ?Access $access = null;
     private ?Organization $organization = null;
 
-
     public function getSendType(): string
     {
         return $this->sendType;
@@ -84,4 +83,4 @@ class EmailRecipient
         $this->organization = $organization;
         return $this;
     }
-}
+}

+ 33 - 23
src/Service/Mailer/Mailer.php

@@ -23,7 +23,7 @@ use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Email as SymfonyEmail;
 
 /**
- * Classe Mailer : Service assurant l'envoie d'un mail à un destinataire
+ * Classe Mailer : Service assurant l'envoi d'un mail à un destinataire
  */
 class Mailer
 {
@@ -36,21 +36,23 @@ class Mailer
         private Environnement $environnement,
         private LoggerInterface $logger
     )
-    {
-    }
+    {}
 
     /**
-     * Main fonction qui itère les différentes étapes nécessaires à l'envoie d'un email
+     * Main fonction qui itère les différentes étapes nécessaires à l'envoi d'un email
      *  - Le Build
      *  - Le Send
      *  - Le Reporting
      *
      * @param MailerModelInterface $mailerModel
-     * @throws \Exception
-     *
+     * @return ArrayCollection
+     * @throws TransportExceptionInterface
      * @see MailerTest::testMain()
      */
-    public function main(MailerModelInterface $mailerModel): ArrayCollection{
+    public function main(MailerModelInterface $mailerModel): ArrayCollection {
+        // TODO: est-ce qu'on l'appellerait pas plutôt 'send' celle-ci? et est-ce qu'on ne passerait pas les autres en
+        //       private? j'ai peur qu'on se trompe parfois entre l'une et l'autre
+
         $builderService = $this->builderIterator->getBuilderFor($mailerModel);
         $emailsCollection = $builderService->build($mailerModel);
 
@@ -80,13 +82,15 @@ class Mailer
     }
 
     /**
-     * Fonction d'envoie
+     * Fonction d'envoi
+     *
      * @param EmailInterface $email
      *
+     * @throws TransportExceptionInterface
      * @see MailerTest::testSend()
      */
     public function send(EmailInterface $email): void{
-        //On créer le mail
+        //On créé le mail
         $symfonyMail = $this->createSymfonyEmail($email);
 
         $this->addRecipients($symfonyMail, $email);
@@ -114,7 +118,7 @@ class Mailer
     }
 
     /**
-     * Envoie le rapport d'envoi
+     * Envoi le rapport d'envoi
      * @param ArrayCollection $emails
      *
      * @see MailerTest::testSendReport()
@@ -153,20 +157,22 @@ class Mailer
      *
      * @see MailerTest::testSetSymfonyEmailContent()
      */
-    public function setSymfonyEmailContent(SymfonyEmail $symfonyEmail, Email $email){
+    public function setSymfonyEmailContent(SymfonyEmail $symfonyEmail, Email $email): void
+    {
         $symfonyEmail
             ->html($email->getContent())
             ->text($this->stringsUtils->convertHtmlToText($email->getContent()));
     }
 
     /**
-     * Créer le Templated Email contenant le rapport d'envoi
+     * Créé le Templated Email contenant le rapport d'envoi
      * @param ArrayCollection $emails
-     * @return object|TemplatedEmail
+     * @return TemplatedEmail
      *
      * @see MailerTest::testCreateReportEmail()
      */
-    public function createReportEmail(ArrayCollection $emails){
+    public function createReportEmail(ArrayCollection $emails): TemplatedEmail
+    {
         [$delivered, $unDelivered] = $this->getDeliveredAndUndelivered($emails);
 
         /** @var Email $email */
@@ -217,7 +223,8 @@ class Mailer
      *
      * @see MailerTest::testPersistEmailEntity()
      */
-    public function persistEmailEntity(Email $email){
+    public function persistEmailEntity(Email $email): void
+    {
         $emailEntity = $email->getEmailEntity();
         /** @var EmailRecipient $emailRecipient */
         foreach ($email->getEmailRecipients() as $emailRecipient){
@@ -230,6 +237,7 @@ class Mailer
      * Création du rapport
      * @param EmailRecipient $emailRecipient
      *
+     * @return ReportEmail
      * @see MailerTest::testCreateReport()
      */
     public function createReport(EmailRecipient $emailRecipient): ReportEmail{
@@ -246,6 +254,7 @@ class Mailer
      * Reduit le nombre d'emails a envoyer si on ne se trouve pas en prod
      * @param ArrayCollection $emailsCollection
      *
+     * @return ArrayCollection
      * @see MailerTest::testReduceEmailsCollectionInPreproduction()
      */
     public function reduceEmailsCollectionInPreproduction(ArrayCollection $emailsCollection): ArrayCollection {
@@ -263,7 +272,8 @@ class Mailer
      *
      * @see MailerTest::testAddHeaders()
      */
-    public function addHeaders(SymfonyEmail $symfonyMail, Email $email){
+    public function addHeaders(SymfonyEmail $symfonyMail, Email $email): void
+    {
         $symfonyMail->getHeaders()->addTextHeader('List-Unsubscribe','mailto:'.$email->getFrom().'?subject=désabonnement');
         $symfonyMail->getHeaders()->addTextHeader('X-ID-OT', $email->getEmailEntity()->getUuid()->toString());
     }
@@ -271,11 +281,11 @@ class Mailer
     /**
      * On change le #__#ANTISPAM_PERSON_EMAIL#__# par la liste des emails afin d'éviter le spamming sur l'envoi en masse
      * @param Email $email
-     * @param array $to
-     *
+     * @param array $addresses
      * @see MailerTest::testSetAntiSpam()
      */
-    public function setAntiSpam(Email $email, array $addresses){
+    public function setAntiSpam(Email $email, array $addresses): void
+    {
         // map des Address pour ne conserver qu'un tableau d'email
         $to = array_map(function(Address $address){
             return $address->getAddress();
@@ -285,10 +295,10 @@ class Mailer
     }
 
     /**
-     * On ajoute les destinataires suivant le type d'envoie souhaité
-     * @param SymfonyEmail $symfonyMail
-     * @param Address $addressesMail
+     * On ajoute les destinataires suivant le type d'envoi souhaité
      *
+     * @param SymfonyEmail $symfonyMail
+     * @param Email $email
      * @see MailerTest::testAddRecipients()
      */
     public function addRecipients(SymfonyEmail $symfonyMail, Email $email): void{
@@ -316,4 +326,4 @@ class Mailer
             }
         }
     }
-}
+}

+ 1 - 1
src/Service/OnChange/Organization/OnSubdomainChange.php

@@ -62,7 +62,7 @@ class OnSubdomainChange extends OnChangeDefault
         // A new subdomain is active
         // /!\ This has to be executed after everything has been persisted
         if ($subdomain->isActive() && !($context->previousData() && $context->previousData()->isActive())) {
-            // TODO: comprendre pourquoi ce refresh est indispensable pour le l'organisation soit à jour
+            // TODO: comprendre pourquoi ce refresh est indispensable pour que l'organisation soit à jour
             $this->em->refresh($subdomain->getOrganization());
 
             // Update the typo3 website (asynchronously with messenger)

+ 1 - 0
src/Service/Rest/ApiRequestService.php

@@ -127,6 +127,7 @@ class ApiRequestService implements ApiRequestInterface
     {
         $url = ltrim($url, '/');
         $url = UrlBuilder::concatParameters($url, $parameters);
+
         try {
             return $this->client->request($method, $url, $options);
         } catch (TransportExceptionInterface $e) {