Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Internal/EmailEdi...
File: TransactionalEmailPersonalizer.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Class for handling transactional email personalization.
[2] Fix | Delete
*
[3] Fix | Delete
* @package Automattic\WooCommerce\Internal\EmailEditor
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
declare(strict_types = 1);
[7] Fix | Delete
[8] Fix | Delete
namespace Automattic\WooCommerce\Internal\EmailEditor;
[9] Fix | Delete
[10] Fix | Delete
use Automattic\WooCommerce\EmailEditor\Email_Editor_Container;
[11] Fix | Delete
use Automattic\WooCommerce\EmailEditor\Engine\Personalizer;
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* Class TransactionalEmailPersonalizer that internally uses the Personalizer class.
[15] Fix | Delete
* The inheritance is not used here because Personalizer needs to pass Personalization_Tags_Registry and
[16] Fix | Delete
* the combination of two different dependency injection containers is not possible.
[17] Fix | Delete
*/
[18] Fix | Delete
class TransactionalEmailPersonalizer {
[19] Fix | Delete
/**
[20] Fix | Delete
* Personalizer instance for handling email content personalization.
[21] Fix | Delete
*
[22] Fix | Delete
* @var Personalizer
[23] Fix | Delete
*/
[24] Fix | Delete
private Personalizer $personalizer;
[25] Fix | Delete
[26] Fix | Delete
/**
[27] Fix | Delete
* Constructor.
[28] Fix | Delete
*/
[29] Fix | Delete
public function __construct() {
[30] Fix | Delete
$editor_container = Email_Editor_Container::container();
[31] Fix | Delete
$this->personalizer = $editor_container->get( Personalizer::class );
[32] Fix | Delete
}
[33] Fix | Delete
[34] Fix | Delete
/**
[35] Fix | Delete
* Personalize transactional email content with specific handling.
[36] Fix | Delete
*
[37] Fix | Delete
* @param string $content The content to personalize.
[38] Fix | Delete
* @param \WC_Email $email The WooCommerce email object.
[39] Fix | Delete
* @return string The personalized content.
[40] Fix | Delete
*/
[41] Fix | Delete
public function personalize_transactional_content( string $content, \WC_Email $email ): string {
[42] Fix | Delete
$this->configure_context_by_email( $email );
[43] Fix | Delete
return $this->personalizer->personalize_content( $content );
[44] Fix | Delete
}
[45] Fix | Delete
[46] Fix | Delete
/**
[47] Fix | Delete
* Configure personalization context based on WooCommerce email object.
[48] Fix | Delete
*
[49] Fix | Delete
* @param \WC_Email $email The WooCommerce email object.
[50] Fix | Delete
* @return void
[51] Fix | Delete
*/
[52] Fix | Delete
public function configure_context_by_email( \WC_Email $email ): void {
[53] Fix | Delete
$prepared_context = $this->prepare_context_data( $this->personalizer->get_context(), $email );
[54] Fix | Delete
$this->personalizer->set_context( $prepared_context );
[55] Fix | Delete
}
[56] Fix | Delete
[57] Fix | Delete
/**
[58] Fix | Delete
* Prepare context data for email personalization.
[59] Fix | Delete
* Adds new order specific context data.
[60] Fix | Delete
*
[61] Fix | Delete
* @param array $context Previous version of context data.
[62] Fix | Delete
* @param \WC_Email $email The WooCommerce email object.
[63] Fix | Delete
* @return array Context data for personalization
[64] Fix | Delete
*/
[65] Fix | Delete
public function prepare_context_data( array $context, \WC_Email $email ): array {
[66] Fix | Delete
$context['recipient_email'] = $email->get_recipient();
[67] Fix | Delete
$context['order'] = $email->object instanceof \WC_Order ? $email->object : null;
[68] Fix | Delete
// For emails of type new_user or reset_password we want to set user directly from the object.
[69] Fix | Delete
if ( $email->object instanceof \WP_User ) {
[70] Fix | Delete
$context['wp_user'] = $email->object;
[71] Fix | Delete
} elseif ( $email->object instanceof \WC_Order ) {
[72] Fix | Delete
$context['wp_user'] = $email->object->get_user();
[73] Fix | Delete
} else {
[74] Fix | Delete
$context['wp_user'] = null;
[75] Fix | Delete
}
[76] Fix | Delete
$context['wc_email'] = $email;
[77] Fix | Delete
[78] Fix | Delete
return $context;
[79] Fix | Delete
}
[80] Fix | Delete
}
[81] Fix | Delete
[82] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function