MailPoet\EmailEditor\Engine
Email_Api_Controller{} │ WC 1.0
Class for email API controller.
Usage
$Email_Api_Controller = new Email_Api_Controller();
// use class methods
Methods
- public __construct( Personalization_Tags_Registry $personalization_tags_registry )
- public get_email_data()
- public get_email_data_schema()
- public get_personalization_tags()
- public save_email_data( array $data, WP_Post $email_post )
- public send_preview_email_data( WP_REST_Request $request )
Email_Api_Controller{} Email Api Controller{} code
WC 9.8.1
class Email_Api_Controller {
/**
* Personalization tags registry to get all personalization tags.
*
* @var Personalization_Tags_Registry
*/
private Personalization_Tags_Registry $personalization_tags_registry;
/**
* Email_Api_Controller constructor with all dependencies.
*
* @param Personalization_Tags_Registry $personalization_tags_registry Personalization tags registry.
*/
public function __construct( Personalization_Tags_Registry $personalization_tags_registry ) {
$this->personalization_tags_registry = $personalization_tags_registry;
}
/**
* Returns email specific data.
*
* @return array - Email specific data such styles.
*/
public function get_email_data(): array {
// Here comes code getting Email specific data that will be passed on 'email_data' attribute.
return array();
}
/**
* Update Email specific data we store.
*
* @param array $data - Email specific data.
* @param WP_Post $email_post - Email post object.
*/
public function save_email_data( array $data, WP_Post $email_post ): void {
// Here comes code saving of Email specific data that will be passed on 'email_data' attribute.
}
/**
* Sends preview email
*
* @param WP_REST_Request $request route request.
* @return WP_REST_Response
*/
public function send_preview_email_data( WP_REST_Request $request ): WP_REST_Response {
/**
* $data - Post Data
* format
* [_locale] => user
* [email] => Provided email address
* [postId] => POST_ID
*/
$data = $request->get_params();
try {
$result = apply_filters( 'mailpoet_email_editor_send_preview_email', $data );
return new WP_REST_Response(
array(
'success' => (bool) $result,
'result' => $result,
),
$result ? 200 : 400
);
} catch ( \Exception $exception ) {
return new WP_REST_Response( array( 'error' => $exception->getMessage() ), 400 );
}
}
/**
* Returns all registered personalization tags.
*
* @return WP_REST_Response
*/
public function get_personalization_tags(): WP_REST_Response {
$tags = $this->personalization_tags_registry->get_all();
return new WP_REST_Response(
array(
'success' => true,
'result' => array_values(
array_map(
function ( Personalization_Tag $tag ) {
return array(
'name' => $tag->get_name(),
'token' => $tag->get_token(),
'category' => $tag->get_category(),
'attributes' => $tag->get_attributes(),
'valueToInsert' => $tag->get_value_to_insert(),
);
},
$tags
),
),
),
200
);
}
/**
* Returns the schema for email data.
*
* @return array
*/
public function get_email_data_schema(): array {
return Builder::object()->to_array();
}
}