芝麻web文件管理V1.00
编辑当前文件:/home/fambnfli/www/tr/wp-content/plugins/coming-soon/resources/views/builder.php
100 ) { return $settings; } $result = $defaults; foreach ( $settings as $key => $value ) { // Special handling for 'items' array - preserve as-is without merging defaults if ( $key === 'items' ) { $result[ $key ] = $value; continue; } // If both values are arrays, merge recursively if ( isset( $result[ $key ] ) && is_array( $result[ $key ] ) && is_array( $value ) ) { $result[ $key ] = 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 apply_defaults( &$element, $defaults ) { $type = $element['type'] ?? ''; $element_defaults = $defaults[ $type ] ?? array(); $element['settings'] = 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['type'] === 'section' ) { // Apply section defaults 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['type'] === 'row' ) { // Apply row defaults 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['type'] === 'col' ) { // Apply col defaults 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 apply_defaults( $block, $defaults ); } } } } } } } } } } } } } global $wpdb; // look for mixed content and mis configured WordPress sites. $actual_link = ( isset( $_SERVER['HTTPS'] ) && 'on' === $_SERVER['HTTPS'] ? 'https' : 'http' ) . "://$_SERVER[HTTP_HOST]$_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( $site_url_parsed['scheme'] ) && 'http' == $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 ); if ( 'lp' === $settings['page_type'] ) { $preview_link = home_url() . "/?page_id=$lpage_id&preview_id=$lpage_id&preview_nonce=" . wp_create_nonce( 'post_preview_' . $lpage_id ) . '&preview=true'; } else { $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 if ( ! empty( $_GET['seedprod_stripe_connect_token'] ) ) { if ( ! empty( $_GET['seedprod_stripe_connect_origin'] ) ) { if ( $seedprod_stripe_connect_origin == $_GET['seedprod_stripe_connect_origin'] && current_user_can( 'manage_options' ) ) { update_option( 'seedprod_stripe_connect_token', $_GET['seedprod_stripe_connect_token'] ); } } } // 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_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 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 ( ! 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'] ); ?>