<?php


function seedprod_lite_check_for_free_version() {
	try {
		$seedprod_unsupported_feature = array();
		$migration                    = get_option( 'seedprod_migration_run_once' );

		// Security: Only allow admins to use sp-force-migrate parameter
		$can_force_migrate = ! empty( $_GET['sp-force-migrate'] ) && current_user_can( 'manage_options' );

		// Security: For automatic migrations (when option doesn't exist), only allow in admin dashboard
		// This prevents frontend visitors from triggering expensive flush_rewrite_rules() operation
		if ( empty( $migration ) && ! $can_force_migrate && ! is_admin() ) {
			return;
		}

		if ( empty( $migration ) || $can_force_migrate ) {

			// migrate old licnese key if available
			$old_key = get_option( 'seed_cspv5_license_key' );
			if ( ! empty( $old_key ) ) {
				update_option( 'seedprod_api_key', $old_key );
				$r = seedprod_lite_save_api_key( $old_key );
			}

			// see if free version old settings exists and they do not have the pro version
			// && empty(get_option('seed_cspv5_settings_content'))
			// Only run v4 migration if v4 settings actually exist
			$has_v4_settings = ! empty( get_option( 'seed_csp4_settings_content' ) );
			if ( ( $can_force_migrate && $has_v4_settings ) || ( empty( get_option( 'seed_cspv5_settings_content' ) ) && empty( get_option( 'seedprod_coming_soon_page_id' ) ) && empty( get_option( 'seedprod_maintenance_mode_page_id' ) ) && $has_v4_settings && get_option( 'seedprod_csp4_migrated' ) === false && get_option( 'seedprod_csp4_imported' ) === false ) ) {

				// import csp4 settings to plugin

				// get settings
				$s1 = get_option( 'seed_csp4_settings_content' );
				$s2 = get_option( 'seed_csp4_settings_design' );
				$s3 = get_option( 'seed_csp4_settings_advanced' );

				if ( empty( $s1 ) ) {
					$s1 = array();
				}

				if ( empty( $s2 ) ) {
					$s2 = array();
				}

				if ( empty( $s3 ) ) {
					$s3 = array();
				}

				$csp4_settings = $s1 + $s2 + $s3;

				// update global settings

				$ts                = get_option( 'seedprod_settings' );
				$seedprod_settings = json_decode( $ts, true );

				$type = 'cs';
				if ( ! empty( $csp4_settings['status'] ) && $csp4_settings['status'] == 1 ) {
					$seedprod_settings['enable_coming_soon_mode'] = true;
					$seedprod_settings['enable_maintenance_mode'] = false;
					$type = 'cs';
				}
				if ( ! empty( $csp4_settings['status'] ) && $csp4_settings['status'] == 2 ) {
					$seedprod_settings['enable_maintenance_mode'] = true;
					$seedprod_settings['enable_coming_soon_mode'] = false;
					$type = 'mm';
				}

				update_option( 'seedprod_settings', json_encode( $seedprod_settings ) );

				// update page settings
				$csp4_template_file = SEEDPROD_PLUGIN_PATH . 'app/backwards/csp4-template.json';
				$csp4_template      = json_decode( file_get_contents( $csp4_template_file ), true );

				//$csp4_template
				// page to publish if active from v4
				if ( isset( $csp4_settings['status'] ) && ( $csp4_settings['status'] == 1 || $csp4_settings['status'] == 2 ) ) {
					$csp4_template['post_status'] = 'published';
				}

				// set page type
				$csp4_template['page_type'] = $type;

				// set custom html
				if ( ! empty( $csp4_settings['html'] ) ) {
					$custom_html = json_decode(
						'{
                "id": "iuf8h9",
                "elType": "block",
                "type": "custom-html",
                "settings": {
                    "code": "Full Page Custom HTML is no longer supported in this builder. However your custom html page is still being display and will continue to be displayed as long as you DO NOT save this page. There is Custom HTML block you can use in the builder.",
                    "marginTop": "0",
                    "paddingTop": "",
                    "paddingBottom": "",
                    "paddingLeft": "",
                    "paddingRight": "",
                    "paddingSync": true
                }}
            '
					);
					if ( ! empty( $custom_html ) ) {
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks']   = array();
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][] = $custom_html;
					}

					$csp4_template['document']['settings']['contentPosition']             = '1';
					$csp4_template['document']['sections'][0]['settings']['contentWidth'] = '1';
				} else {

					// set logo
					if ( ! empty( $csp4_settings['logo'] ) ) {
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][0]['settings']['src'] = $csp4_settings['logo'];
					} else {
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][0]['settings']['src'] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z/C/HgAGgwJ/lK3Q6wAAAABJRU5ErkJggg==';
					}

					// set headline
					if ( ! empty( $csp4_settings['headline'] ) ) {
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][1]['settings']['headerTxt'] = $csp4_settings['headline'];
					} else {
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][1]['settings']['headerTxt'] = '';
					}

					// set description
					if ( ! empty( $csp4_settings['description'] ) ) {
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][2]['settings']['txt'] = $csp4_settings['description'];
					} else {
						$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][2]['settings']['txt'] = '';
					}

					// set footer credit
					if ( ! empty( $csp4_settings['footer_credit'] ) ) {
						$csp4_template['show_powered_by_link'] = true;
					}

					// favicon
					if ( ! empty( $csp4_settings['favicon'] ) ) {
						$csp4_template['favicon'] = $csp4_settings['favicon'];
					}

					// title
					if ( ! empty( $csp4_settings['seo_title'] ) ) {
						$csp4_template['seo_title'] .= $csp4_settings['seo_title'];
					}

					// meta
					if ( ! empty( $csp4_settings['seo_description'] ) ) {
						$csp4_template['seo_description'] .= $csp4_settings['seo_description'];
					}

					// set google analytics
					if ( ! empty( $csp4_settings['ga_analytics'] ) ) {
						$csp4_template['footer_scripts'] = $csp4_settings['ga_analytics'];
					}

					// set bg color
					if ( ! empty( $csp4_settings['bg_color'] ) ) {
						$csp4_template['document']['settings']['bgColor'] = $csp4_settings['bg_color'];
					}

					// set bg dimming
					if ( ! empty( $csp4_settings['bg_overlay'] ) ) {
						$csp4_template['document']['settings']['bgDimming'] = '50';
					}

					// set bg image
					if ( ! empty( $csp4_settings['bg_image'] ) ) {
						$csp4_template['document']['settings']['bgImage'] = $csp4_settings['bg_image'];
					}

					// set bg cover
					if ( ! empty( $csp4_settings['bg_cover'] ) ) {
						if ( ! empty( $csp4_settings['bg_size'] ) && $csp4_settings['bg_size'] == 'cover' ) {
							$csp4_template['document']['settings']['bgPosition'] = 'cover';
						}

						if ( ! empty( $csp4_settings['bg_size'] ) && $csp4_settings['bg_size'] == 'contain' ) {
							$csp4_template['document']['settings']['bgPosition'] = 'full';
						}
					} else {
						if ( ! empty( $csp4_settings['bg_repeat'] ) && $csp4_settings['bg_repeat'] == 'repeat' ) {
							$csp4_template['document']['settings']['bgPosition'] = 'repeat';
						}

						if ( ! empty( $csp4_settings['bg_repeat'] ) && $csp4_settings['bg_repeat'] == 'repeat-x' ) {
							$csp4_template['document']['settings']['bgPosition'] = 'repeattop';
						}

						if ( ! empty( $csp4_settings['bg_repeat'] ) && $csp4_settings['bg_repeat'] == 'repeat-y' ) {
							$csp4_template['document']['settings']['bgPosition'] = 'repeatvc';
						}
					}

					//$csp4_template['document']['settings']['customCss'] .=

					// set width
					if ( ! empty( $csp4_settings['max_width'] ) ) {
						$csp4_template['document']['sections'][0]['settings']['width'] = $csp4_settings['max_width'];
					}

					// enable well
					if ( ! empty( $csp4_settings['enable_well'] ) ) {
						$csp4_template['document']['sections'][0]['settings']['bgColor']        = '#ffffff';
						$csp4_template['document']['sections'][0]['settings']['borderRadiusTL'] = '4';
					}

					// set text color
					if ( ! empty( $csp4_settings['text_color'] ) ) {
						$csp4_template['document']['settings']['textColor'] = $csp4_settings['text_color'];
					}

					// set headline color
					if ( ! empty( $csp4_settings['headline_color'] ) ) {
						$csp4_template['document']['settings']['headerColor'] = $csp4_settings['headline_color'];
					} elseif ( ! empty( $csp4_settings['text_color'] ) ) {
						$csp4_template['document']['settings']['headerColor'] = $csp4_settings['text_color'];
					}

					// set link color
					if ( ! empty( $csp4_settings['link_color'] ) ) {
						$csp4_template['document']['settings']['linkColor']   = $csp4_settings['link_color'];
						$csp4_template['document']['settings']['buttonColor'] = $csp4_settings['link_color'];
					}

					// set font
					if ( ! empty( $csp4_settings['text_font'] ) ) {
						$csp4_template['document']['settings']['textFontVariant']   = '400';
						$csp4_template['document']['settings']['headerFontVariant'] = '400';

						if ( $csp4_settings['text_font'] == '_arial' ) {
							$csp4_template['document']['settings']['textFont']   = "'Helvetica Neue', Arial, sans-serif";
							$csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
						}
						if ( $csp4_settings['text_font'] == '_arial_black' ) {
							$csp4_template['document']['settings']['textFont']          = "'Helvetica Neue', Arial, sans-serif";
							$csp4_template['document']['settings']['headerFont']        = "'Helvetica Neue', Arial, sans-serif";
							$csp4_template['document']['settings']['textFontVariant']   = '700';
							$csp4_template['document']['settings']['headerFontVariant'] = '700';
						}
						if ( $csp4_settings['text_font'] == '_georgia' ) {
							$csp4_template['document']['settings']['textFont']   = 'Georgia, serif';
							$csp4_template['document']['settings']['headerFont'] = 'Georgia, serif';
						}
						if ( $csp4_settings['text_font'] == '_helvetica_neue' ) {
							$csp4_template['document']['settings']['textFont']   = "'Helvetica Neue', Arial, sans-serif";
							$csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
						}
						if ( $csp4_settings['text_font'] == '_impact' ) {
							$csp4_template['document']['settings']['textFont']   = 'Impact, Charcoal, sans-serif';
							$csp4_template['document']['settings']['headerFont'] = 'Impact, Charcoal, sans-serif';
						}
						if ( $csp4_settings['text_font'] == '_lucida' ) {
							$csp4_template['document']['settings']['textFont']   = "'Helvetica Neue', Arial, sans-serif";
							$csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
						}
						if ( $csp4_settings['text_font'] == '_palatino' ) {
							$csp4_template['document']['settings']['textFont']   = "'Helvetica Neue', Arial, sans-serif";
							$csp4_template['document']['settings']['headerFont'] = "'Helvetica Neue', Arial, sans-serif";
						}
						if ( $csp4_settings['text_font'] == '_tahoma' ) {
							$csp4_template['document']['settings']['textFont']   = 'Tahoma, Geneva, sans-serif';
							$csp4_template['document']['settings']['headerFont'] = 'Tahoma, Geneva, sans-serif';
						}
						if ( $csp4_settings['text_font'] == '_times' ) {
							$csp4_template['document']['settings']['textFont']   = "'Times New Roman', Times, serif";
							$csp4_template['document']['settings']['headerFont'] = "'Times New Roman', Times, serif";
						}
						if ( $csp4_settings['text_font'] == '_trebuchet' ) {
							$csp4_template['document']['settings']['textFont']   = "'Trebuchet MS', Helvetica, sans-serif";
							$csp4_template['document']['settings']['headerFont'] = "'Trebuchet MS', Helvetica, sans-serif";
						}
						if ( $csp4_settings['text_font'] == '_verdana' ) {
							$csp4_template['document']['settings']['textFont']   = 'Verdana, Geneva, sans-serif';
							$csp4_template['document']['settings']['headerFont'] = 'Verdana, Geneva, sans-serif';
						}
					}

					// set custom css
					if ( ! empty( $csp4_settings['custom_css'] ) ) {
						$csp4_template['document']['settings']['customCss'] .= $csp4_settings['custom_css'];
					}

					// set exclude urls
					if ( ! empty( $csp4_settings['disable_default_excluded_urls'] ) ) {
						$csp4_template['disable_default_excluded_urls'] = true;
					}

					// set header scripts
					if ( ! empty( $csp4_settings['header_scripts'] ) ) {
						$csp4_template['header_scripts'] .= $csp4_settings['header_scripts'];
					}

					// set footer scripts
					if ( ! empty( $csp4_settings['footer_scripts'] ) ) {
						$csp4_template['footer_scripts'] .= $csp4_settings['footer_scripts'];
					}

					// set append html
					if ( ! empty( $csp4_settings['append_html'] ) ) {
						$append_html = json_decode(
							'{
                "id": "iuf8h9",
                "elType": "block",
                "type": "custom-html",
                "settings": {
                    "code": "' . $csp4_settings['append_html'] . '",
                    "marginTop": "0",
                    "paddingTop": "",
                    "paddingBottom": "",
                    "paddingLeft": "",
                    "paddingRight": "",
                    "paddingSync": true
                }}
           '
						);
						if ( ! empty( $append_html ) ) {
							$csp4_template['document']['sections'][0]['rows'][0]['cols'][0]['blocks'][] = $append_html;
						}
					}
				}

				// create the coming soon or maintenance page and inject settings
				$slug = '';
				$cpt  = 'page';
				if ( $type == 'cs' || $type == 'mm' || $type == 'p404' ) {
					$cpt = 'seedprod';
				}
				if ( $type == 'cs' ) {
					$slug = 'sp-cs';
				}
				if ( $type == 'mm' ) {
					$slug = 'sp-mm';
				}

				$id = wp_insert_post(
					array(
						'comment_status' => 'closed',
						'ping_status'    => 'closed',
						'post_content'   => '',
						'post_status'    => 'publish',
						'post_title'     => 'seedprod',
						'post_type'      => $cpt,
						'post_name'      => $slug,
						'meta_input'     => array(
							'_seedprod_page'      => true,
							'_seedprod_page_uuid' => wp_generate_uuid4(),
						),
					),
					true
				);

				// update post because wp screws our json settings
				global $wpdb;
				$tablename = $wpdb->prefix . 'posts';
				$r         = $wpdb->update(
					$tablename,
					array(
						'post_content_filtered' => json_encode( $csp4_template ),
					),
					array( 'ID' => $id ),
					array(
						'%s',
					),
					array( '%d' )
				);

				if ( $type == 'cs' ) {
					update_option( 'seedprod_coming_soon_page_id', $id );
				}
				if ( $type == 'mm' ) {
					update_option( 'seedprod_maintenance_mode_page_id', $id );
				}

				// do we need to show it?
				update_option( 'seedprod_csp4_imported', true );
				update_option( 'seedprod_show_csp4', true );
				// flush rewrite rules
				flush_rewrite_rules();
			}

			update_option( 'seedprod_migration_run_once', true );
		}
	} catch ( Exception $e ) {
		return $e;
	}
}

