]> git.agnieray.net Git - galette.git/blobdiff - galette/lib/Galette/Features/Replacements.php
Add pre_footer in replacements; closes #1808
[galette.git] / galette / lib / Galette / Features / Replacements.php
index bfd0bb9c6d19e0c73cd6a37208e59cebc3730f8b..391f1907fe50253c8b44c7574b3ad99338dd2891 100644 (file)
@@ -51,7 +51,9 @@ use Galette\Repository\DynamicFieldsSet;
 use Galette\DynamicFields\DynamicField;
 use Analog\Analog;
 use NumberFormatter;
+use PHPMailer\PHPMailer\PHPMailer;
 use Slim\Routing\RouteParser;
+use DI\Attribute\Inject;
 
 /**
  * Replacements feature
@@ -71,6 +73,7 @@ trait Replacements
     private $patterns = [];
     private $replaces = [];
     private $dynamic_patterns = [];
+    private ?PHPMailer $mail = null;
 
     /**
      * @var Db
@@ -233,6 +236,10 @@ trait Replacements
             'login_uri'             => [
                 'title'     => _T("Galette's login URI"),
                 'pattern'   => '/{LOGIN_URI}/'
+            ],
+            'asso_footer' => [
+                'title'     => trim(trim(_T("Footer text:"), ':')),
+                'pattern'   => '/{ASSO_FOOTER}/'
             ]
         ];
     }
@@ -466,6 +473,19 @@ trait Replacements
         return $c_patterns + $dynamic_patterns;
     }
 
+    /**
+     * Set mail instance
+     *
+     * @param PHPMailer $mail PHPMailer instance
+     *
+     * @return self
+     */
+    public function setMail(PHPMailer $mail): self
+    {
+        $this->mail = $mail;
+        return $this;
+    }
+
     /**
      * Set main replacements
      *
@@ -483,11 +503,17 @@ trait Replacements
         }
 
         $logo = new Logo();
-        $logo_elt = '<img' .
-            ' src="' . $this->preferences->getURL() . $this->routeparser->urlFor('logo') . '"' .
-            ' width="' . $logo->getOptimalWidth() . '"' .
-            ' height="' . $logo->getOptimalHeight() . '"' .
-            '/>';
+        if ($this->mail !== null) {
+            $logo_content = $this->preferences->getURL() . $this->routeparser->urlFor('logo');
+        } else {
+            $logo_content = '@' . base64_encode(file_get_contents($logo->getPath()));
+        }
+        $logo_elt = sprintf(
+            '<img src="%1$s" width="%2$s" height="%3$s" alt="" />',
+            $logo_content,
+            $logo->getOptimalWidth(),
+            $logo->getOptimalHeight()
+        );
 
         $this->setReplacements(
             array(
@@ -500,6 +526,7 @@ trait Replacements
                 //TRANS: see https://www.php.net/manual/datetime.format.php
                 'date_now'           => date(_T('Y-m-d')),
                 'login_uri'          => $this->preferences->getURL() . $this->routeparser->urlFor('login'),
+                'asso_footer'        => $this->preferences->pref_footer
             )
         );
 
@@ -872,8 +899,6 @@ trait Replacements
      */
     protected function proceedReplacements(string $source): string
     {
-        $replaced = $source;
-
         //handle translations
         $callback = static function ($matches) {
             return _T($matches[1]);
@@ -913,7 +938,7 @@ trait Replacements
             $replaced
         );
 
-        return $replaced;
+        return trim($replaced);
     }
 
     /**