Automattic\WooCommerce\Internal\EmailEditor\WCTransactionalEmails

WCEmailTemplateSyncRegistry::resolveprivate staticWC 1.0

Resolve the registry from scratch.

Method of the class: WCEmailTemplateSyncRegistry{}

No Hooks.

Returns

Array. array{version: string, template_path: string, source: string}>

Usage

$result = WCEmailTemplateSyncRegistry::resolve(): array;

WCEmailTemplateSyncRegistry::resolve() code WC 10.8.1

private static function resolve(): array {
	$eligible_ids = WCTransactionalEmails::get_transactional_emails();
	if ( empty( $eligible_ids ) ) {
		return array();
	}

	$emails_by_id = WCTransactionalEmailPostsManager::get_instance()->get_emails_by_id();

	$registry = array();

	foreach ( $eligible_ids as $email_id ) {
		if ( ! is_string( $email_id ) || '' === $email_id ) {
			continue;
		}

		$email = $emails_by_id[ $email_id ] ?? null;
		if ( null === $email ) {
			self::get_logger()->notice(
				sprintf(
					'Email template sync skipped for email "%s": no WC_Email subclass registered.',
					$email_id
				),
				array(
					'email_id' => $email_id,
					'context'  => 'email_template_sync_registry',
				)
			);
			continue;
		}

		$source        = self::classify_source( $email_id );
		$template_path = WCTransactionalEmailPostsGenerator::resolve_block_template_path( $email );

		if ( '' === $template_path || ! is_readable( $template_path ) ) {
			self::get_logger()->notice(
				sprintf(
					'Email template sync skipped for email "%s": template path not resolvable. source=%s',
					$email_id,
					$source
				),
				array(
					'email_id'      => $email_id,
					'source'        => $source,
					'template_path' => $template_path,
					'context'       => 'email_template_sync_registry',
				)
			);
			continue;
		}

		$version = self::parse_version_header( $template_path );

		if ( '' === $version ) {
			self::get_logger()->warning(
				sprintf(
					'Email template sync skipped for email "%s": missing @version header in %s. source=%s',
					$email_id,
					$template_path,
					$source
				),
				array(
					'email_id'      => $email_id,
					'source'        => $source,
					'template_path' => $template_path,
					'context'       => 'email_template_sync_registry',
				)
			);
			continue;
		}

		$registry[ $email_id ] = array(
			'version'       => $version,
			'template_path' => $template_path,
			'source'        => $source,
		);
	}

	return $registry;
}