migrate_templates();
}
/**
* Private functions
*/
private function migrate_templates() {
$this->logger->log( 'Start migrating templates to 4.1.0' );
global $wpdb;
// Make sure the backup existed
if ( empty( $this->backup_option_name ) || empty( get_option( $this->backup_option_name ) ) ) {
throw new Exception( 'Could not find backup option' );
}
$template_posts_query = "
SELECT *
FROM {$wpdb->posts}
WHERE post_type = 'yaymail_template'
";
$template_posts = $wpdb->get_results( $template_posts_query ); // phpcs:ignore
if ( empty( $template_posts ) ) {
$this->logger->log( 'There is no template to be migrated' );
return;
}
$has_global_header_foter_in_templates = false;
$templates_need_to_hide_header = [];
$templates_need_to_hide_footer = [];
$default_template_global_header_settings = YayMailTemplate::DEFAULT_DATA['global_header_settings'];
$default_template_global_footer_settings = YayMailTemplate::DEFAULT_DATA['global_footer_settings'];
foreach ( $template_posts as $template ) {
if ( empty( $template->ID ) ) {
continue;
}
/**
* ==========================
* Start Elements migrations
*/
$elements = get_post_meta( $template->ID, YayMailTemplate::META_KEYS['elements'], true );
if ( empty( $elements ) ) {
continue;
}
$has_global_header_in_template = false;
$has_global_footer_in_template = false;
$template_global_header_override_content = null;
$template_global_header_settings = get_post_meta( $template->ID, YayMailTemplate::META_KEYS['global_header_settings'], true );
$template_global_footer_settings = get_post_meta( $template->ID, YayMailTemplate::META_KEYS['global_footer_settings'], true );
$legacy_default_global_header_override_content = '
Email Heading
';
if ( empty( $template_global_footer_settings ) ) {
$template_global_footer_settings = $default_template_global_footer_settings;
}
if ( empty( $template_global_header_settings ) ) {
$template_global_header_settings = $default_template_global_header_settings;
}
foreach ( $elements as $key => $element ) {
if ( $element['type'] !== 'global_header' && $element['type'] !== 'global_footer' ) {
continue;
}
if ( $element['type'] === 'global_header' ) {
$has_global_header_in_template = true;
if ( $legacy_default_global_header_override_content !== $element['data']['rich_text'] ) {
$template_global_header_override_content = $element['data']['rich_text'];
}
}
if ( $element['type'] === 'global_footer' ) {
$has_global_footer_in_template = true;
}
}
if ( $has_global_header_in_template || $has_global_footer_in_template ) {
$has_global_header_foter_in_templates = true;
}
if ( ! $has_global_header_in_template ) {
$templates_need_to_hide_header[] = $template->ID;
} elseif ( ! empty( $template_global_header_override_content ) ) {
$template_global_header_settings['content_override'] = true;
$template_global_header_settings['heading_content'] = $template_global_header_override_content;
}
if ( ! $has_global_footer_in_template ) {
$templates_need_to_hide_footer[] = $template->ID;
}
update_post_meta( $template->ID, YayMailTemplate::META_KEYS['global_header_settings'], $template_global_header_settings );
update_post_meta( $template->ID, YayMailTemplate::META_KEYS['global_footer_settings'], $template_global_footer_settings );
/**
* Finish Template settings migrations
* ==========================
*/
}//end foreach
if ( $has_global_header_foter_in_templates ) {
SettingModel::update(
[
'global_header_footer_enabled' => true,
]
);
foreach ( $templates_need_to_hide_header as $template_id ) {
$template_global_header_settings = get_post_meta( $template->ID, YayMailTemplate::META_KEYS['global_header_settings'], true );
if ( empty( $template_global_footer_settings ) ) {
$template_global_footer_settings = $default_template_global_footer_settings;
}
$template_global_header_settings['hidden'] = true;
update_post_meta( $template_id, YayMailTemplate::META_KEYS['global_header_settings'], $template_global_header_settings );
}
foreach ( $templates_need_to_hide_footer as $template_id ) {
$template_global_footer_settings = get_post_meta( $template->ID, YayMailTemplate::META_KEYS['global_footer_settings'], true );
if ( empty( $template_global_header_settings ) ) {
$template_global_header_settings = $default_template_global_header_settings;
}
$template_global_footer_settings['hidden'] = true;
update_post_meta( $template_id, YayMailTemplate::META_KEYS['global_footer_settings'], $template_global_footer_settings );
}
}//end if
$this->logger->log( 'Done migrating templates to 4.0.7' );
}
}