Add filter method to override email editor send preview mail functionality

MAILPOET-6092
This commit is contained in:
Oluwaseun Olorunsola
2024-11-14 08:55:51 +01:00
committed by Rostislav Wolný
parent d83c179f5c
commit 71a59f9f06
2 changed files with 14 additions and 25 deletions

View File

@ -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 );

View File

@ -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(