Add filter method to override email editor send preview mail functionality
MAILPOET-6092
This commit is contained in:
committed by
Rostislav Wolný
parent
d83c179f5c
commit
71a59f9f06
@ -8,7 +8,6 @@
|
|||||||
declare(strict_types = 1);
|
declare(strict_types = 1);
|
||||||
namespace MailPoet\EmailEditor\Engine;
|
namespace MailPoet\EmailEditor\Engine;
|
||||||
|
|
||||||
use MailPoet\EmailEditor\Integrations\Utils\Send_Preview_Email;
|
|
||||||
use MailPoet\EmailEditor\Validator\Builder;
|
use MailPoet\EmailEditor\Validator\Builder;
|
||||||
use WP_Post;
|
use WP_Post;
|
||||||
use WP_REST_Request;
|
use WP_REST_Request;
|
||||||
@ -19,24 +18,6 @@ use WP_REST_Response;
|
|||||||
*/
|
*/
|
||||||
class Email_Api_Controller {
|
class Email_Api_Controller {
|
||||||
|
|
||||||
/**
|
|
||||||
* Property for the send preview email controller.
|
|
||||||
*
|
|
||||||
* @var Send_Preview_Email Send Preview controller.
|
|
||||||
*/
|
|
||||||
private Send_Preview_Email $send_preview_email;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Email_Api_Controller constructor.
|
|
||||||
*
|
|
||||||
* @param Send_Preview_Email $send_preview_email send_preview_email.
|
|
||||||
*/
|
|
||||||
public function __construct(
|
|
||||||
Send_Preview_Email $send_preview_email
|
|
||||||
) {
|
|
||||||
$this->send_preview_email = $send_preview_email;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns email specific data.
|
* Returns email specific data.
|
||||||
*
|
*
|
||||||
@ -66,13 +47,13 @@ class Email_Api_Controller {
|
|||||||
public function send_preview_email_data( WP_REST_Request $request ): WP_REST_Response {
|
public function send_preview_email_data( WP_REST_Request $request ): WP_REST_Response {
|
||||||
$data = $request->get_params();
|
$data = $request->get_params();
|
||||||
try {
|
try {
|
||||||
$result = $this->send_preview_email->send_preview_email( $data );
|
$result = apply_filters( 'mailpoet_email_editor_send_preview_email', $data );
|
||||||
return new WP_REST_Response(
|
return new WP_REST_Response(
|
||||||
array(
|
array(
|
||||||
'success' => true,
|
'success' => (bool) $result,
|
||||||
'result' => $result,
|
'result' => $result,
|
||||||
),
|
),
|
||||||
200
|
$result ? 200 : 400
|
||||||
);
|
);
|
||||||
} catch ( \Exception $exception ) {
|
} catch ( \Exception $exception ) {
|
||||||
return new WP_REST_Response( array( 'error' => $exception->getMessage() ), 400 );
|
return new WP_REST_Response( array( 'error' => $exception->getMessage() ), 400 );
|
||||||
|
@ -37,16 +37,24 @@ class Send_Preview_Email {
|
|||||||
Renderer $renderer
|
Renderer $renderer
|
||||||
) {
|
) {
|
||||||
$this->renderer = $renderer;
|
$this->renderer = $renderer;
|
||||||
|
|
||||||
|
add_filter( 'mailpoet_email_editor_send_preview_email', array( $this, 'send_preview_email' ), 11 ); // allow for other filter methods to take precedent.
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a preview email.
|
* Sends a preview email.
|
||||||
*
|
*
|
||||||
* @param array $data The data required to send the preview email.
|
* @param array $data The data required to send the preview email.
|
||||||
* @return bool Returns true if the preview email was sent successfully, false otherwise.
|
* @return array|bool Returns true if the preview email was sent successfully, false otherwise.
|
||||||
* @throws \Exception If the data is invalid.
|
* @throws \Exception If the data is invalid.
|
||||||
*/
|
*/
|
||||||
public function send_preview_email( array $data ): bool {
|
public function send_preview_email( $data ): bool {
|
||||||
|
|
||||||
|
if ( is_bool( $data ) ) {
|
||||||
|
// preview mail already sent. Do not process again.
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
$this->validate_data( $data );
|
$this->validate_data( $data );
|
||||||
|
|
||||||
$email = $data['email'];
|
$email = $data['email'];
|
||||||
@ -54,7 +62,7 @@ class Send_Preview_Email {
|
|||||||
|
|
||||||
$post = $this->fetch_post( $post_id );
|
$post = $this->fetch_post( $post_id );
|
||||||
|
|
||||||
$subject = isset( $post->post_title ) ? $post->post_title : __( 'Email Preview', 'mailpoet' );
|
$subject = $post->post_title ?? __( 'Email Preview', 'mailpoet' );
|
||||||
$language = get_bloginfo( 'language' );
|
$language = get_bloginfo( 'language' );
|
||||||
|
|
||||||
$rendered_data = $this->renderer->render(
|
$rendered_data = $this->renderer->render(
|
||||||
|
Reference in New Issue
Block a user