Exemplo n.º 1
0
 public function testCreateOrderedComparator()
 {
     $order = array_flip(['a', 'z', 'd', 'e']);
     $array = ['b' => 'val b', 'd' => 'val d', 'z' => 'val z', 'c' => 'val c', 'e' => 'val e'];
     $expectedResult = ['z' => 'val z', 'd' => 'val d', 'e' => 'val e', 'b' => 'val b', 'c' => 'val c'];
     uksort($array, ArrayUtil::createOrderedComparator($order));
     $this->assertEquals(array_keys($expectedResult), array_keys($array));
     $this->assertEquals(array_values($expectedResult), array_values($array));
 }
Exemplo n.º 2
0
 /**
  * @param EmailModel $emailModel
  * @param EmailTemplate $template
  * @param Email $email
  */
 protected function applyTemplate(EmailModel $emailModel, EmailTemplate $template, Email $email)
 {
     $locales = array_merge($email->getAcceptedLocales(), [$this->defaultLocale]);
     $flippedLocales = array_flip($locales);
     $translatedSubjects = [];
     $translatedContents = [];
     foreach ($template->getTranslations() as $translation) {
         switch ($translation->getField()) {
             case 'content':
                 $translatedContents[$translation->getLocale()] = $translation->getContent();
                 break;
             case 'subject':
                 $translatedSubjects[$translation->getLocale()] = $translation->getContent();
                 break;
         }
     }
     $comparator = ArrayUtil::createOrderedComparator($flippedLocales);
     uksort($translatedSubjects, $comparator);
     uksort($translatedContents, $comparator);
     $validContents = array_intersect_key($translatedContents, $flippedLocales);
     $validsubjects = array_intersect_key($translatedSubjects, $flippedLocales);
     $content = reset($validContents);
     $subject = reset($validsubjects);
     $emailModel->setSubject($subject === false ? $template->getSubject() : $subject)->setBody($content === false ? $template->getContent() : $content)->setType($template->getType());
 }