/home/techb158/balacoffee.com/wp-content/plugins/coming-soon/resources/views
Edit: /home/techb158/balacoffee.com/wp-content/plugins/coming-soon/resources/views/builder.php (36907B)
100 ) {
return $settings;
}
$result = $defaults;
foreach ( $settings as $key => $value ) {
// Special handling for 'items' array - preserve as-is without merging defaults.
if ( 'items' === $key || 'featuresList' === $key ) {
if ( is_array( $value ) ) {
$result[ $key ] = $value;
}
// If not an array (e.g. empty string), skip so the default from $result is used.
continue;
}
// If both values are arrays, merge recursively.
if ( isset( $result[ $key ] ) && is_array( $result[ $key ] ) && is_array( $value ) ) {
$result[ $key ] = seedprod_lite_merge_preserve_existing( $result[ $key ], $value, $depth + 1 );
} else {
// If the value is not an array, preserve the setting value.
$result[ $key ] = $value;
}
}
return $result;
}
function seedprod_lite_apply_defaults( &$element, $defaults ) {
$type = $element['type'] ?? '';
$element_defaults = $defaults[ $type ] ?? array();
$element['settings'] = seedprod_lite_merge_preserve_existing( $element_defaults, $element['settings'] ?? array() );
}
if ( isset( $object_to_hydrate['document'] ) ) {
$document_defaults = $defaults['document'] ?? array();
$object_to_hydrate['document']['settings'] = array_replace_recursive( $document_defaults, $object_to_hydrate['document']['settings'] ?? array() );
}
// Iterate over document sections and apply defaults.
if ( isset( $object_to_hydrate['document']['sections'] ) && is_array( $object_to_hydrate['document']['sections'] ) ) {
// $element_defaults = $defaults['document'] ?? [];
// $object_to_hydrate['document']['settings'] = $element_defaults;
foreach ( $object_to_hydrate['document']['sections'] as &$section ) {
if ( isset( $section['type'] ) && 'section' === $section['type'] ) {
// Apply section defaults.
seedprod_lite_apply_defaults( $section, $defaults );
// Iterate over rows in the section.
if ( isset( $section['rows'] ) && is_array( $section['rows'] ) ) {
foreach ( $section['rows'] as &$row ) {
if ( isset( $row['type'] ) && 'row' === $row['type'] ) {
// Apply row defaults.
seedprod_lite_apply_defaults( $row, $defaults );
// Iterate over cols in the row.
if ( isset( $row['cols'] ) && is_array( $row['cols'] ) ) {
foreach ( $row['cols'] as &$col ) {
if ( isset( $col['type'] ) && 'col' === $col['type'] ) {
// Apply col defaults.
seedprod_lite_apply_defaults( $col, $defaults );
// Iterate over blocks in the col.
if ( isset( $col['blocks'] ) && is_array( $col['blocks'] ) ) {
foreach ( $col['blocks'] as &$block ) {
if ( isset( $block['type'] ) ) {
// Apply block defaults.
seedprod_lite_apply_defaults( $block, $defaults );
}
}
}
}
}
}
}
}
}
}
}
}
}
global $wpdb;
// look for mixed content and mis configured WordPress sites.
$actual_link = ( isset( $_SERVER['HTTPS'] ) && 'on' === sanitize_text_field( wp_unslash( $_SERVER['HTTPS'] ) ) ? 'https' : 'http' ) . '://' . sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ) . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) );
$seedprod_builder_url = wp_parse_url( $actual_link );
$mixed_content = false;
if ( false !== $seedprod_builder_url ) {
if ( ! empty( $seedprod_builder_url['scheme'] ) && 'https' === $seedprod_builder_url['scheme'] ) {
$sp_home_url = get_option( 'home' );
$sp_home_url_parsed = wp_parse_url( $sp_home_url );
$sp_site_url = get_option( 'siteurl' );
$sp_site_url_parsed = wp_parse_url( $sp_site_url );
if ( ! empty( $sp_home_url_parsed['scheme'] ) && 'http' === $sp_home_url_parsed['scheme'] ) {
$mixed_content = true;
}
if ( ! empty( $sp_site_url_parsed['scheme'] ) && 'http' === $sp_site_url_parsed['scheme'] ) {
$mixed_content = true;
}
}
}
// Current user.
$sp_current_user = wp_get_current_user();
$current_user_name = $sp_current_user->display_name;
$current_user_email = $sp_current_user->user_email;
$current_user_email_hash = md5( $sp_current_user->user_email );
$free_templates_subscribed = get_option( 'seedprod_free_templates_subscribed' );
if ( $free_templates_subscribed ) {
$free_templates_subscribed = '1';
}
$seedprod_nonce = wp_create_nonce( 'seedprod_nonce' );
$lpage_id = '';
if ( ! empty( $_GET['id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$lpage_id = absint( $_GET['id'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
} else {
wp_die();
}
// Template Vars.
$timezones = seedprod_lite_get_timezones();
$times = seedprod_lite_get_times();
$block_options = seedprod_lite_block_options();
// Get page.
$tablename = $wpdb->prefix . 'posts';
$sql = "SELECT * FROM $tablename WHERE id = %d";
$safe_sql = $wpdb->prepare( $sql, $lpage_id ); // phpcs:ignore
$lpage = $wpdb->get_row( $safe_sql ); // phpcs:ignore
// Reset id.
$lpage->id = $lpage->ID;
// Get page uuid.
$lpage_uuid = get_post_meta( $lpage->id, '_seedprod_page_uuid', true );
if ( empty( $lpage_uuid ) ) {
$this_uuid = wp_generate_uuid4();
update_post_meta( $lpage->id, '_seedprod_page_uuid', $this_uuid );
$lpage_uuid = $this_uuid;
}
// Add default settings if they do not exisits.
if ( empty( $lpage->post_content_filtered ) ) {
require_once SEEDPROD_PLUGIN_PATH . 'resources/data-templates/basic-page.php';
$settings = json_decode( $seedprod_basic_lpage, true );
$settings['page_type'] = 'lp';
$settings['from_edit_with_seedprod'] = true;
// TODO Check if theme builder active.
if ( ! empty( $_GET['from'] ) && 'post' === $_GET['from'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$settings['page_type'] = 'post'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
}
} else {
// Get settings and maybe modify.
$settings = json_decode( $lpage->post_content_filtered, true );
if ( null === $settings && JSON_ERROR_NONE !== json_last_error() ) {
// JSON is invalid
// Handle the error or display an error message
// echo "";
require_once SEEDPROD_PLUGIN_PATH . 'resources/data-templates/basic-page.php';
$settings = json_decode( $seedprod_recovery, true );
} else {
// Rehydrate settings if json is invalid.
seedprod_lite_rehydrate_settings( $settings, $seedprod_lite_block_templates );
}
}
// Check is this is a seedprod template part or page/post using the seedprod editor.
$seedprod_is_theme_template = get_post_meta( $lpage_id, '_seedprod_is_theme_template', true );
$edited_with_seedprod = get_post_meta( $lpage_id, '_seedprod_edited_with_seedprod', true );
if ( empty( $seedprod_is_theme_template ) ) {
$seedprod_is_theme_template = get_post_meta( $lpage_id, '_seedprod_edited_with_seedprod', true );
}
if ( empty( $seedprod_is_theme_template ) ) {
if ( 'post' === $settings['page_type'] ) {
$seedprod_is_theme_template = 1;
}
}
// Check for landing page types.
$is_landing_page = true;
$landing_page_types = array( 'cs', 'mm', 'p404', 'loginp', 'lp' );
if ( ! in_array( $settings['page_type'], $landing_page_types, true ) ) {
$is_landing_page = false;
}
// Get post types.
$post_types = get_post_types();
// Get seedprod setting tp check special pages states.
$seedprod_settings = get_option( 'seedprod_settings' );
if ( ! empty( $seedprod_settings ) ) {
$seedprod_settings = json_decode( stripslashes( $seedprod_settings ) );
}
// Get global css settings.
$global_css_settings = array();
$global_css_page_id = get_option( 'seedprod_global_css_page_id' );
// get preview link
// $preview_link = get_preview_post_link( $lpage_id );
// Fallback if get_preview_post_link returns empty (shouldn't happen but just in case).
if ( empty( $preview_link ) ) {
if ( 'lp' === $settings['page_type'] || 'post' === $settings['page_type'] ) {
// Landing pages and theme pages (post type) use regular page preview URL.
$preview_link = home_url() . "/?page_id=$lpage_id&preview_id=$lpage_id&preview_nonce=" . wp_create_nonce( 'post_preview_' . $lpage_id ) . '&preview=true';
} else {
// Other page types (cs, mm, 404, loginpage) use seedprod post type URL.
$preview_link = home_url() . "/?post_type=seedprod&page_id=$lpage_id&preview_id=$lpage_id&preview_nonce=" . wp_create_nonce( 'post_preview_' . $lpage_id ) . '&preview=true';
}
}
// Keep track for changes.
$settings['post_title'] = $lpage->post_title;
$settings['post_name'] = $lpage->post_name;
$settings['post_status'] = $lpage->post_status;
$show_bottombar_cta = true;
$dismiss_bottombar_cta = get_option( 'seedprod_dismiss_upsell_2' );
if ( $dismiss_bottombar_cta ) {
$show_bottombar_cta = false;
}
// Email integration logic.
$seedprod_api_token = get_option( 'seedprod_api_token' );
$seedprod_user_id = get_option( 'seedprod_user_id' );
$seedprod_site_token = get_option( 'seedprod_token' );
if ( empty( $seedprod_site_token ) ) {
$seedprod_site_token = wp_generate_uuid4();
update_option( 'seedprod_token', $seedprod_site_token );
}
$license_key = get_option( 'seedprod_api_key' );
$email_integration_url = '';
// Stripe connect.
$seedprod_stripe_connect_origin = get_option( 'seedprod_stripe_connect_origin' );
if ( empty( $seedprod_stripe_connect_origin ) ) {
$seedprod_stripe_connect_origin = wp_generate_uuid4();
add_option( 'seedprod_stripe_connect_origin', $seedprod_stripe_connect_origin );
}
// Set stripe token.
// phpcs:disable WordPress.Security.NonceVerification.Recommended
if ( ! empty( $_GET['seedprod_stripe_connect_token'] ) ) {
if ( ! empty( $_GET['seedprod_stripe_connect_origin'] ) ) {
$stripe_origin = sanitize_text_field( wp_unslash( $_GET['seedprod_stripe_connect_origin'] ) );
if ( $seedprod_stripe_connect_origin === $stripe_origin && current_user_can( 'manage_options' ) ) {
update_option( 'seedprod_stripe_connect_token', sanitize_text_field( wp_unslash( $_GET['seedprod_stripe_connect_token'] ) ) );
}
}
}
// phpcs:enable WordPress.Security.NonceVerification.Recommended
// Get stripe token.
$seedprod_stripe_connect_token = get_option( 'seedprod_stripe_connect_token' );
if ( empty( $seedprod_stripe_connect_token ) ) {
$seedprod_stripe_connect_token = '';
}
$seedprod_web_api = SEEDPROD_WEB_API_URL;
$seedprod_app_settings = get_option( 'seedprod_app_settings' );
if ( ! empty( $seedprod_app_settings ) ) {
$seedprod_app_settings = json_decode( stripslashes( $seedprod_app_settings ) );
} else {
// Fail safe incase settings go missing.
require_once SEEDPROD_PLUGIN_PATH . 'resources/data-templates/default-settings.php';
update_option( 'seedprod_app_settings', $seedprod_app_default_settings );
$seedprod_app_settings = json_decode( $seedprod_app_default_settings );
}
$template_preview_path = 'https://assets.seedprod.com/preview-';
// Preference array.
$user_personalization_preferences_schema = array(
'show_templatetag_settings' => true,
'show_woocommerce_templatetag_settings' => true,
'show_edd_templatetag_settings' => true,
'show_entry_settings' => true,
'show_entry_settings_2' => true,
'show_entry_settings_4' => true,
'show_entry_settings_5' => true,
'show_entry_settings_3' => false,
'show_entry_settings_6' => true,
'show_layoutnav' => false,
);
// Get user personalization preferences.
if ( metadata_exists( 'user', $sp_current_user->ID, 'seedprod_personalization_preferences' ) ) {
$user_personalization_preferences = get_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', true );
$decoded_json = json_decode( $user_personalization_preferences, true );
// Validate user meta.
if ( empty( $user_personalization_preferences ) || ! isset( $user_personalization_preferences ) || ! is_array( $decoded_json ) || JSON_ERROR_NONE !== json_last_error() ) {
delete_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences' );
// Set default user personalization preferences.
add_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', wp_json_encode( $user_personalization_preferences_schema ), true );
$user_personalization_preferences = get_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', true );
}
} else {
// Set default user personalization preferences.
add_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', wp_json_encode( $user_personalization_preferences_schema ), true );
$user_personalization_preferences = get_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', true );
}
// Check if DB array has all the keys.
$get_array_keys = array_keys( $user_personalization_preferences_schema );
/**
* Check if array keys exist func.
*
* @param array $keys Array of keys.
* @param array $array_to_check Array of keys.
* @return boolean
*/
function seedprod_lite_array_keys_exists( array $keys, array $array_to_check ) {
$diff = array_diff_key( array_flip( $keys ), $array_to_check );
return count( $diff ) === 0;
}
// Decode user meta.
$decoded_personalization_preferences = json_decode( $user_personalization_preferences, true );
// Update user meta with new settings.
if ( is_array( $decoded_personalization_preferences ) && null !== $decoded_personalization_preferences ) {
// Determine whether to update or not.
if ( ! seedprod_lite_array_keys_exists( $get_array_keys, $decoded_personalization_preferences ) ) {
// Update user meta with new settings.
update_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', wp_json_encode( $user_personalization_preferences_schema ), $user_personalization_preferences );
// Get updated settings.
$user_personalization_preferences = json_decode( get_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', true ) );
}
// Get current settings.
$user_personalization_preferences = json_decode( $user_personalization_preferences, true );
} else {
// If not array/is not set/empty set default settings.
if ( metadata_exists( 'user', $sp_current_user->ID, 'seedprod_personalization_preferences' ) ) {
// Update empty user meta with new settings.
delete_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences' );
}
// Set default user personalization preferences.
add_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', wp_json_encode( $user_personalization_preferences_schema ), true );
$user_personalization_preferences = get_user_meta( $sp_current_user->ID, 'seedprod_personalization_preferences', true );
}
// Pers.
$per = array();
$active_license = false;
$template_dev_mode = false;
$template_dev_mode_url = false;
$template_dev_mode_password = false;
?>
'fa',
'n' => $v,
);
}
$googlefonts_file = SEEDPROD_PLUGIN_PATH . 'resources/data-templates/googlefonts.json';
$fonts['Standard Fonts'] = array(
"'Helvetica Neue', Arial, sans-serif" => 'Helvetica Neue',
'Garamond, serif' => 'Garamond',
'Georgia, serif' => 'Georgia',
'Impact, Charcoal, sans-serif' => 'Impact',
'Tahoma, Geneva, sans-serif' => 'Tahoma',
"'Times New Roman', Times,serif" => 'Times New Roman',
"'Trebuchet MS', Helvetica, sans-serif" => 'Trebuchet',
'Verdana, Geneva, sans-serif' => 'Verdana',
'Courier, monospace' => 'Courier',
"'Comic Sans MS', cursive" => 'Comic Sans',
);
$fonts['Google Fonts'] = json_decode( file_get_contents( $googlefonts_file ) ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
// $googlefonts_json = json_decode(file_get_contents($googlefonts_file));
// Get list of fonts to load.
$google_fonts_str = seedprod_lite_construct_font_str( $settings['document'] );
?>