From 6290b817a9018ffbab10580ccabcabc3990517ab Mon Sep 17 00:00:00 2001
From: Piotr Potrebka <piotr.potrebka@wpdesk.net>
Date: Wed, 25 Jan 2023 13:17:32 +0100
Subject: [PATCH] feat: email abstract

---
 src/Abstracts/EmailAbstract.php | 117 +++++++++++++++++++++++++++++++-
 1 file changed, 114 insertions(+), 3 deletions(-)

diff --git a/src/Abstracts/EmailAbstract.php b/src/Abstracts/EmailAbstract.php
index 9d3524e..8542f0a 100644
--- a/src/Abstracts/EmailAbstract.php
+++ b/src/Abstracts/EmailAbstract.php
@@ -2,20 +2,25 @@
 
 namespace WPDesk\Library\WPEmail\Abstracts;
 
+use Exception;
+
 abstract class EmailAbstract implements EmailInterface {
 
     /**
      * @var array
      */
     protected $recipients = [];
+
     /**
      * @var array
      */
     protected $placeholders = [];
+
     /**
      * @var string
      */
     protected $subject = '';
+
     /**
      * @var string
      */
@@ -48,6 +53,19 @@ abstract class EmailAbstract implements EmailInterface {
      */
     abstract public function get_id(): string;
 
+    /**
+     * Set placeholders.
+     *
+     * @param array $placeholders
+     *
+     * @return self
+     */
+    public function set_placeholders( array $placeholders = [] ): self {
+        $this->placeholders = array_merge( $this->placeholders, $placeholders );
+
+        return $this;
+    }
+
     /**
      * Get defined placeholders.
      *
@@ -57,20 +75,46 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->placeholders;
     }
 
+    /**
+     * Get email subject.
+     *
+     * @param string $subject
+     *
+     * @return self
+     */
+    public function set_subject( string $subject ): self {
+        $this->subject = $subject;
+
+        return $this;
+    }
+
     /**
      * Get email subject.
      *
      * @return string
-     * @throws \Exception
+     * @throws Exception
      */
     public function get_subject(): string {
         if ( ! $this->subject ) {
-            throw new \Exception( 'Empty email subject' );
+            throw new Exception( 'Empty email subject' );
         }
 
         return $this->subject;
     }
 
+    /**
+     * Set email heading.
+     *
+     * @param string $heading
+     *
+     * @return self
+     */
+    public function set_heading( string $heading ): self {
+        $this->heading = $heading;
+
+        return $this;
+    }
+
     /**
      * Get email heading.
      *
@@ -80,6 +124,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->heading;
     }
 
+    /**
+     * Get valid recipients.
+     *
+     * @param array $recipients
+     *
+     * @return self
+     */
+    public function set_recipients( array $recipients = [] ): self {
+        $this->recipients = $recipients;
+
+        return $this;
+    }
+
     /**
      * Get valid recipients.
      *
@@ -89,6 +146,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->recipients;
     }
 
+    /**
+     * Get email headers.
+     *
+     * @param array $headers
+     *
+     * @return self
+     */
+    public function set_headers( array $headers = [] ): self {
+        $this->headers = $headers;
+
+        return $this;
+    }
+
     /**
      * Get email headers.
      *
@@ -98,6 +168,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->headers;
     }
 
+    /**
+     * Set attachments.
+     *
+     * @param array $attachments
+     *
+     * @return self
+     */
+    public function set_attachments( array $attachments ): self {
+        $this->attachments = $attachments;
+
+        return $this;
+    }
+
     /**
      * Get email attachments.
      *
@@ -107,6 +190,19 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->attachments;
     }
 
+    /**
+     * Set email type.
+     *
+     * @param string $type
+     *
+     * @return self
+     */
+    public function set_type( string $type = 'text/html' ): self {
+        $this->type = $type;
+
+        return $this;
+    }
+
     /**
      * Get email type.
      *
@@ -116,14 +212,28 @@ abstract class EmailAbstract implements EmailInterface {
         return $this->type;
     }
 
+    /**
+     * Get email content.
+     *
+     * @param string $content
+     *
+     * @return self
+     */
+    public function set_content( string $content ): self {
+        $this->content = $content;
+
+        return $this;
+    }
+
     /**
      * Get email content.
      *
      * @return string
+     * @throws Exception
      */
     public function get_content(): string {
         if ( ! $this->content ) {
-            throw new \Exception( 'Empty email subject' );
+            throw new Exception( 'Empty email content' );
         }
 
         return '';
@@ -136,4 +246,5 @@ abstract class EmailAbstract implements EmailInterface {
         return '';
     }
 
+
 }
-- 
GitLab