Skip to content
Snippets Groups Projects

Devel

Merged Piotr Potrebka requested to merge devel into main
Compare and Show latest version
6 files
+ 395
82
Compare changes
  • Side-by-side
  • Inline

Files

@@ -2,28 +2,54 @@
namespace WPDesk\Library\WPEmail\Abstracts;
use WPDesk\View\Renderer\Renderer;
use Exception;
abstract class EmailGettersAbstract implements EmailGettersInterface, ConditionInterface {
abstract class EmailAbstract implements EmailInterface {
/**
* @var Renderer
* @var bool
*/
private $renderer;
private $is_enable;
/**
* @var array
*/
protected $recipients = [];
/**
* @var array
*/
protected $placeholders = [];
/**
* @var string
*/
private $subject;
protected $subject = '';
/**
* @var string
*/
private $heading;
protected $heading = '';
public function __construct( Renderer $renderer, array $recipients ) {
$this->renderer = $renderer;
$this->recipients = $recipients;
}
/**
* @var array
*/
protected $attachments = [];
/**
* @var string
*/
protected $content = '';
/**
* @var string
*/
protected $type = 'html';
/**
* @var array
*/
protected $headers;
/**
* Define unique email ID.
@@ -32,31 +58,82 @@ abstract class EmailGettersAbstract implements EmailGettersInterface, ConditionI
*/
abstract public function get_id(): string;
/**
* @return bool
*/
public function get_is_enable(): bool {
return $this->is_enable;
}
/**
* @param $enable
*
* @return EmailAbstract
*/
public function set_is_enable( $enable ): self {
$this->is_enable = $enable;
return $this;
}
/**
* 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.
*
* @return string[]
*/
public function get_placeholders(): array {
return [];
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
*/
public function get_subject(): string {
if ( ! $this->subject ) {
throw new \Exception( 'Empty email subject' );
throw new Exception( 'Empty email subject' );
}
return '';
return $this->subject;
}
public function set_subject( string $subject ): self {
$this->subject = $subject;
/**
* Set email heading.
*
* @param string $heading
*
* @return self
*/
public function set_heading( string $heading ): self {
$this->heading = $heading;
return $this;
}
@@ -67,12 +144,18 @@ abstract class EmailGettersAbstract implements EmailGettersInterface, ConditionI
* @return string
*/
public function get_heading(): string {
return '';
return $this->heading;
}
public function set_heading( string $heading ): self {
$this->heading = $heading;
/**
* Get valid recipients.
*
* @param array $recipients
*
* @return self
*/
public function set_recipients( array $recipients = [] ): self {
$this->recipients = $recipients;
return $this;
}
@@ -86,13 +169,39 @@ abstract class EmailGettersAbstract implements EmailGettersInterface, ConditionI
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.
*
* @return string[]
*/
public function get_headers(): array {
return [];
return $this->headers;
}
/**
* Set attachments.
*
* @param array $attachments
*
* @return self
*/
public function set_attachments( array $attachments ): self {
$this->attachments = $attachments;
return $this;
}
/**
@@ -101,7 +210,20 @@ abstract class EmailGettersAbstract implements EmailGettersInterface, ConditionI
* @return array
*/
public function get_attachments(): array {
return [];
return $this->attachments;
}
/**
* Set email type.
*
* @param string $type
*
* @return self
*/
public function set_type( string $type = 'html' ): self {
$this->type = $type;
return $this;
}
/**
@@ -110,40 +232,58 @@ abstract class EmailGettersAbstract implements EmailGettersInterface, ConditionI
* @return string
*/
public function get_type(): string {
return 'text/html';
return $this->type;
}
/**
* Get email content.
* Get content type.
*
* @return string
*/
public function get_content(): string {
if ( ! $this->content ) {
throw new \Exception( 'Empty email subject' );
public function get_content_type(): string {
switch ( $this->get_type() ) {
case 'html':
return 'text/html';
case 'multipart':
return 'multipart/alternative';
default:
return 'text/plain';
}
return '';
}
/**
* @return mixed
* Get email content.
*
* @param string $content
*
* @return self
*/
public function get_object() {
return '';
public function set_content( string $content ): self {
$this->content = $content;
return $this;
}
/**
* Get email content.
*
* @return string
* @throws Exception
*/
public function render(): string {
return $this->renderer->render( dirname( __DIR__ ) . '/html/default.php', [ 'content' => $this->get_content(), 'heading' => $this->get_heading(), 'object' => $this->get_object() ] );
public function get_content(): string {
if ( ! $this->content ) {
throw new Exception( 'Empty email content' );
}
return '';
}
public function is_valid(): bool {
return true;
/**
* @return mixed
*/
public function get_object() {
return '';
}
}
Loading