%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/buggydubrovnik.com/wp-content/themes/Avada/includes/
Upload File :
Create Path :
Current File : /var/www/html/buggydubrovnik.com/wp-content/themes/Avada/includes/class-avada-migrate.php

<?php

class Avada_Migrate extends Avada_Upgrade {

	// The current step
	public $step;
	// The number of steps available
	public $steps = array();
	// Should we proceed to the next step?
	public $proceed = true;
	// instance
	public static $instance = null;

	public $available_languages = array();
	public $active_language     = '';
	public $default_language    = '';

	public $options;
	public $fields;

	public $version;

	public $lang = '';

	public $starting_language;

	public function __construct() {

		Avada::$is_updating = true;

		/* Raise the memory limit and max_execution_time time */
		@ini_set( 'memory_limit', '256M' );
		@set_time_limit( 0 );

		$this->available_languages = Avada_Multilingual::get_available_languages();
		$this->active_language     = Avada_Multilingual::get_active_language();
		$this->default_language    = Avada_Multilingual::get_default_language();

		// If English is used then make this first in array order.  Also set starting language so that it is migrated first
		if ( in_array( 'en', $this->available_languages ) ) {
			$en_array = array( 'en' );
			$en_key   = array_search( 'en', $this->available_languages );
			$available_languages_no_en = $this->available_languages;
			unset( $available_languages_no_en[ $en_key ] );
			$this->available_languages = array_merge( $en_array, $available_languages_no_en );
			$this->starting_language   = 'en';
		} else {
			// If not English then make default language first in array order.  Also set it to be starting language for migration.
			$default_array = array( $this->default_language );
			$default_key   = array_search( $this->default_language, $this->available_languages );
			$available_languages_no_default = $this->available_languages;
			unset( $available_languages_no_default[ $default_key ] );
			$this->available_languages = array_merge( $default_array, $available_languages_no_default );
			$this->starting_language   = $this->default_language;
		}

		if ( $_GET && isset( $_GET['avada_update'] ) ) {
			// Only continue if the URL is ?avada_update=1
			if ( '1' != $_GET['avada_update'] ) {
				return;
			}
			// Only continue if we're updating to version 4.0.0
			if ( ! isset( $_GET['ver'] ) || ( $this->version != $_GET['ver'] ) ) {
				return;
			}
			// Get the current step
			if ( ! isset( $_GET['step'] ) ) {
				$this->step = 0;
			} else {
				$this->step = intval( $_GET['step'] );
			}
			if ( isset( $_GET['proceed'] ) && '0' == $_GET['proceed'] ) {
				$this->proceed = false;
			}

			if ( isset( $_GET['lang'] ) && ! in_array( $_GET['lang'], array( '', 'en', 'all', null ) ) ) {
				Avada_Multilingual::set_active_language( $_GET['lang'] );
			}

			$this->options = get_option( Avada::get_option_name(), array() );
			$this->fields  = Avada_Options::get_option_fields();

			add_action( 'admin_init', array( $this, 'migrate_page' ) );

		}

	}

	public function migrate_page() {
		ob_start();
		$this->setup_wizard_template();

		if ( isset( $this->steps[ $this->step ] ) && isset( $this->steps[ $this->step ]['callback'] ) ) {
			call_user_func( $this->steps[ $this->step ]['callback'] );
		}

		// Make sure we have not finished
		if ( $this->step >= count( $this->steps ) - 1 ) {
			if ( empty( $this->available_languages ) || count( $this->available_languages ) == array_search( $this->active_language, $this->available_languages ) + 1 ) {
				$this->finished();
			}
		}

		exit;
	}

	/**
	 * Output the content for the current step
	 */
	public function setup_wizard_template() {
		$current_step = intval( $this->step );
		?>
		<!DOCTYPE html>
		<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
			<head>
				<meta name="viewport" content="width=device-width" />
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<title><?php esc_html_e( 'Avada Database Update Wizard', 'Avada' ); ?></title>
				<?php do_action( 'admin_print_styles' ); ?>
				<?php do_action( 'admin_head' ); ?>
				<link href='https://fonts.googleapis.com/css?family=Roboto:400,300,100' rel='stylesheet' type='text/css'>
				<style>
				.avada-setup {
					padding: 3% 20%;
					background-color: #f2f2f2;
					font-family:'Roboto', sans-serif;
					font-weight:300;
					font-size: 1.1em;
				}
				.update-content {
					max-width: 1150px;
					margin: auto;
				}
				.avada-logo {
					margin-bottom: 25px;
					text-align: center;
				}
				.avada-logo img {
					max-width: 226.5px;
					height: auto;
					vertical-align: bottom;
				}
				.avada-version {
					vertical-align: bottom;
				}
				.avada-version-inner {
					display: inline-block;
					margin-left: 20px;
					padding: 5px 10px;
					background-color: #a0ce4e;
					-webkit-border-radius: 3px;
					border-radius: 3px;
					color: #fff;
				}
				.avada-content-wrapper {
					-webkit-border-radius: 3px;
					border-radius: 3px;
					-webkit-box-shadow: 1px 1px 3px 1px rgba(0,0,0,.2);
					box-shadow: 1px 1px 3px 1px rgba(0,0,0,.2);
				}
				.avada-welcome-msg {
					padding: 25px 35px;
					line-height: 1.6em;
					background-color: #a0ce4e;
					color: #fff;
					font-style: italic;
					text-align: center;
				}
				.avada-migration-link {
					color: #fff;
				}
				.avada-setup-content {
					padding: 30px 10%;
					background: #fff;
				}
				.avada-update-progress-bar {
					height: 20px;
					position: relative;
					background: #F0F4C3;
					margin: 35px 0;
					padding: 1px;
				}
				.avada-update-progress-bar > span {
					display: block;
					height: 100%;
					background-color: #8bc34a;
					position: relative;
					overflow: hidden;
				}
				.tasks-list {
					padding: 0;
					list-style: none;
					<?php if ( 3 < $this->steps ) : ?>
						-webkit-column-count: 2;
						-moz-column-count: 2;
						column-count: 2;
					<?php endif; ?>
				}
				.tasks-list li .content {
					color: #333;
				}
				.tasks-list li {
					color: #f2f2f2;
				}
				.tasks-list li:before {
					vertical-align: middle;
					font-family: dashicons;
					content: "\f147";
					font-size: 1.4em
				}
				.tasks-list li.done {
					color: #a0ce4e;
				}
				.tasks-list li.doing {
					color: #000;
				}
				.avada-save-options {
					display: inline-block;
					margin: 2em 0 0.67em 0;
					padding: 1em 2em;
					background-color: #a0ce4e;
					color: #fff;
					text-decoration: none;
					-webkit-border-radius: 3px;
					border-radius: 3px;
					-webkit-transition: all 0.3s;
					-moz-transition: all 0.3s;
					-ms-transition: all 0.3s;
					transition: all 0.3s;
				}
				.avada-save-options.needs-update {
					background-color: #ef5350;
				}
				.avada-save-options:hover {
					background-color: #96c346;
				}
				.avada-save-options.needs-update:hover {
					background-color: #f44336;
				}
				.avada-footer {
					padding: 25px 35px;
					background: #f2f2f2;
					font-size: 0.8em;
					text-align: right;
				}
				.avada-themefusion-link {
					color: #000;
					text-decoration: none;
				}
				.avada-separator {
					padding: 0 10px;
				}
				.avada-heart {
					padding-left: 5px;
					vertical-align: middle;
				}
				.avada-heart:after {
					font-family: dashicons;
					content: "\f487";
				}
				</style>
			</head>
			<?php $version = Avada::get_version(); ?>
			<body class="avada-setup wp-core-ui">
				<div class="update-content">
					<div class="avada-logo">
						<img src="<?php echo get_template_directory_uri(); ?>/assets/images/logo_migration.png" alt="<?php esc_html_e( 'Avada Logo', 'Avada' ); ?>" width="453" height="95">
						<span class="avada-version">
							<span class="avada-version-inner"><?php echo $version; ?></span>
						</span>
					</div>
					<div class="avada-content-wrapper">
						<div class="avada-welcome-msg">
							<?php
							$migration_link = sprintf( '<a class="avada-migration-link" href="https://theme-fusion.com/knowledgebase/avada-v4-migration" target="_blank" title="%s">%s</a>', esc_html__( 'Migration Information' ), esc_html__( 'link' ) );
							if ( ! empty( $this->available_languages ) ) {
								printf( esc_html__( 'We have an amazing new update in store for you! Avada 4.0 now includes a new options panel powered by the AvadaRedux Framework. To complete the migration, we have backed up your existing theme options in your database, made a copy and then securely converted. If you have a multi-lingual site, each language will be updated individually one after another. For more detailed information, please visit this %s. Thank you for choosing Avada!', 'Avada' ), $migration_link );
							} else {
								printf( esc_html__( 'We have an amazing new update in store for you! Avada 4.0 now includes a new options panel powered by the AvadaRedux Framework. To complete the migration, we have backed up your existing theme options in your database, made a copy and then securely converted. For more detailed information, please visit this %s. Thank you for choosing Avada!', 'Avada' ), $migration_link );
							}
							?>
						</div>
						<div class="avada-setup-content">
							<h1 style="font-size:1.3em;">
								<?php esc_html_e( 'Updating Avada Database Entries', 'Avada' ); ?>
							</h1>
							<?php if ( ! empty( $this->available_languages ) ) : ?>
								<?php printf( esc_html__( 'Currently migrating language: %s', 'Avada' ), '<strong>' . esc_attr( $this->active_language ) . '</strong>' ); ?>
							<?php endif; ?>
							<?php if ( $current_step >= count( $this->steps ) ) : ?>
								<p><?php esc_html_e( 'Done!', 'Avada' ); ?></p>
							<?php elseif ( $current_step >= ( count( $this->steps ) * 0.75 ) ) : ?>
								<p><?php esc_html_e( 'Almost there...', 'Avada' ); ?></p>
							<?php elseif ( $current_step >= ( count( $this->steps ) * 0.4 ) ) : ?>
								<p><?php esc_html_e( 'Halfway there... Patience Padawan, Patience.', 'Avada' ); ?></p>
							<?php else : ?>
								<p><?php esc_html_e( 'This may take a few minutes, please wait.', 'Avada' ); ?></p>
							<?php endif; ?>

							<?php if ( ! empty( $this->available_languages ) ) : ?>
								<?php $current_lang_step = 0; ?>
								<?php $current_lang_step = array_search( $this->active_language, $this->available_languages ) + 1; ?>
								<div class="avada-update-progress-bar"><span style="width: <?php echo intval( 100 * $current_lang_step / count( $this->available_languages ) ); ?>%"></span></div>
							<?php endif; ?>

							<?php if ( $current_step <= count( $this->steps ) && isset( $this->steps[ $this->step ] ) ) : ?>
								<div class="avada-update-progress-bar"><span style="width: <?php echo intval( 100 * ( $current_step + 1 ) / count( $this->steps ) ); ?>%"></span></div>
								<p><?php printf( esc_html__( 'Updating Avada Database options: step %s of %s.', 'Avada' ), intval( $this->step + 1 ), count( $this->steps ) ); ?></p>
								<ul class="tasks-list">
									<?php foreach ( $this->steps as $key => $step ) : ?>
										<?php
										$li_class = '';
										if ( $key <= $current_step - 1 ) {
											$li_class = ' class="done"';
										} elseif ( $key == $current_step ) {
											$li_class = ' class="doing"';
										}
										?>
										<li<?php echo $li_class; ?>>
											<span class="content"><?php echo esc_html( $step['description'] ); ?></span>
										</li>
									<?php endforeach; ?>
								</ul>
							<?php else : ?>
								<?php if ( empty( $this->available_languages ) || count( $this->available_languages ) == array_search( $this->active_language, $this->available_languages ) + 1 ) : ?>
									<p><?php esc_html_e( 'Congratulations, Data migration for Avada 4.0 was successfully completed.', 'Avada' ); ?></p>
									<p><?php esc_html_e( 'For best experience, please clear your browser cache once.', 'Avada' ); ?></p>
									<p><?php esc_html_e( 'Dynamic-CSS caches have been auto reset. Have fun!', 'Avada' ); ?></p>
								<?php endif; ?>
							<?php endif; ?>

							<?php if ( intval( $this->step ) >= count( $this->steps ) ) : ?>
								<?php $needs_plugin_update = false; ?>
								<?php if ( class_exists( 'FusionCore_Plugin' ) ) : ?>
									<?php $fc_version = FusionCore_Plugin::VERSION; ?>
									<?php if ( version_compare( $fc_version, '2.0', '<' ) ) : ?>
										<?php $needs_plugin_update = true; ?>
									<?php endif; ?>
								<?php endif; ?>
								<?php if ( empty( $this->available_languages ) || count( $this->available_languages ) == array_search( $this->active_language, $this->available_languages ) + 1 ) : ?>

									<?php if ( $needs_plugin_update ) : ?>
										<a class="avada-save-options needs-update" href="<?php echo admin_url( 'themes.php?page=install-required-plugins' ); ?>">
											<?php _e( 'Fusion Core Plugin Must Be Updated - Click Here', 'Avada' ); ?>
										</a>
									<?php else : ?>
										<a class="avada-save-options" href="<?php echo admin_url( 'themes.php?page=avada_options' ); ?>">
											<?php _e( 'Take Me To Theme Options!', 'Avada' ); ?>
										</a>
									<?php endif; ?>

								<?php endif; ?>
							<?php endif; ?>
						</div>
						<div class="avada-footer"><a class="avada-themefusion-link" href="https://theme-fusion.com" target="_blank" title="ThemeFusion">ThemeFusion</a><span class="avada-separator">|</span><?php printf( esc_html__( 'Created with %s', 'Avada' ), '<span class="avada-heart"></span>' ); ?></div>
					</div>
					<?php echo $this->redirect_script(); ?>
				</div>
			</body>
		</html>
		<?php
	}

	/**
	 * Run when all steps have been completed.
	 */
	public function finished() {
		// Reset the css
		update_option( 'avada_dynamic_css_posts', array() );
	}

	/**
	 * take care of redirecting to the next step
	 */
	public function redirect_script() {
		$languages    = $this->available_languages;
		$current_step = intval( $this->step );
		$next_step    = $current_step + 1;
		// Add 500ms delay for refreshes
		$delay = 500;
		if ( ( $current_step + 1 ) <= count( $this->steps ) && $this->proceed ) {
			// Redirect to next step
			$lang = ( $_GET && isset( $_GET['lang'] ) ) ? $_GET['lang'] : $this->starting_language;
			return '<script type="text/javascript">setTimeout(function () {window.location.href = "' . admin_url( 'index.php?avada_update=1&ver=400&lang=' . $lang . '&step=' . $next_step ) . '";}, ' . $delay . ');</script>';
		} else {
			// check if this is a multilingual site
			if ( ! empty( $languages ) ) {
				// get the next language code
				$next_lang = $this->get_next_language();
				if ( 'finished' == $next_lang ) {
					return;
				}
				return '<script type="text/javascript">setTimeout(function () {window.location.href = "' . admin_url( 'index.php?avada_update=1&ver=400&new=1&lang=' . $next_lang ) . '";}, ' . $delay . ');</script>';
			}
		}
	}

	public function get_next_language() {
		// Get all languages
		$languages = $this->available_languages;
		// Get the current language key.
		if ( $_GET && isset( $_GET['lang'] ) ) {
			$current_lang_code = $_GET['lang'];
			$current_lang_key  = (int) array_search( $current_lang_code, $languages );
			if ( false === $current_lang_key ) {
				$current_lang_key = null;
			}
		} else {
			$current_lang_key = null;
		}

		// If no language is currently defined, then proceed to 0.
		if ( null === $current_lang_key ) {
			$next_lang_key = 0;
		} else { // Proceed to next language
			$next_lang_key = $current_lang_key + 1;
		}

		// Check if this key exists in the array.
		// If not, then proceed to the next one.
		if ( ! isset( $languages[ $next_lang_key ] ) ) {
			$next_lang_key++;
		}

		// If the next language is "en" skip it.
		if ( isset( $languages[ $next_lang_key ] ) && 'en' == $languages[ $next_lang_key ] ) {
			$next_lang_key++;
		}

		// Check if we're finished.
		// If yes, then return "finished".
		if ( $next_lang_key >= count( $languages ) ) {
			return 'finished';
		}

		// return the code of the next language
		return esc_attr( $languages[ $next_lang_key ] );

	}

	public static function generate_debug_log( $data = array() ) {
		$debug_log = '';
		$debug_content = '';
		$debug_file_path = WP_CONTENT_DIR . '/avada-migration-debug.log';
		if ( defined( 'AVADA_MIGRATION_DEBUG_LOG' ) && AVADA_MIGRATION_DEBUG_LOG ) {
			if ( ! empty( $data ) ) {
				$final_data = array();
				foreach ( $data as $item ) {
					$final_data[] = ( is_array( $item ) ) ? json_encode( $item ) : $item;
				}
				$debug_log .= 'Old Setting: ' . $final_data[0] . "\r\n";
				$debug_log .= 'New Setting: ' . $final_data[1] . "\r\n";
				$debug_log .= 'Old Value: ' . $final_data[2] . "\r\n";
				$debug_log .= 'New Value: ' . $final_data[3] . "\r\n";
				$debug_log .= "\r\n";
			}
			// write debug file contents
			if ( file_exists( $debug_file_path ) ) {
				$debug_content = file_get_contents( $debug_file_path );
			}
			$debug_content .= $debug_log;
			file_put_contents( $debug_file_path, $debug_content );
		}
	}

}

Zerion Mini Shell 1.0