<?php
/**
 * Welcome Notice
 * This file is loaded at after_setup_theme@10
 */

/**
 * Whether to load notice
 */
function olius_load_notices() {
	global $pagenow;
	$subpage = isset( $_GET['page'] ) ? $_GET['page'] : 'subpage';
	$slug = olius_abouttag( 'slug' );
	$dashslug = hoot_dashboard( 'slug' );
	return (
		$slug && is_string( $slug )
		&& ! get_option( "{$slug}-dismiss-welcome" )
		&& (
			in_array( $pagenow, array( 'themes.php', 'plugins.php', 'upload.php' ) )
			|| ( $pagenow === 'edit.php' && ( empty( $_GET['post_type'] ) || $_GET['post_type'] === 'page' ) )
		)
		&& ! in_array( $subpage, array( $dashslug, 'hootkit', 'hoot-import' ) )
	);
}

/**
 * Add a welcome notice if not already dismissed
 */
function olius_welcome_notice() {
	$slug = olius_abouttag( 'slug' );
	$hootkitactive = function_exists( 'hootkit' );
	$hootkitrequired = hoot_hootkit_version_required();
	$hootkitcompat = $hootkitactive ? version_compare( hootkit()->version, $hootkitrequired, '>=' ) : true;
	$hootkitdismissed = get_option( "{$slug}-dismiss-hkcompat" );
	$noticefn = '';
	if ( $hootkitactive && ! $hootkitcompat && !$hootkitdismissed )
		$noticefn = 'olius_add_hootkit_version_notice';
	elseif ( olius_load_notices() )
		$noticefn = 'olius_add_welcome_notice';
	if ( !empty( $noticefn ) )
		add_action( 'admin_notices', $noticefn );
	if ( !empty( $_GET['hoot-noticereset'] ) ) {
		update_option( "{$slug}-dismiss-welcome", 0 );
		update_option( "{$slug}-dismiss-hkcompat", 0 );
		update_option( "{$slug}-dismiss-import", 0 );
	}
}
add_action( 'admin_head', 'olius_welcome_notice' );

/**
 * Enqueue CSS
 *
 * @since 1.0
 * @access public
 * @return void
 */
function olius_admin_enqueue_notice_styles( $hook ) {
	if ( olius_load_notices() || $hook === hoot_dashboard( 'screen' ) ) {
		wp_enqueue_style( 'hoot-admin-notice', hoot_data()->incuri . 'admin/css/notice.css', array(),  hoot_data()->hoot_version );
		wp_enqueue_script( 'hoot-admin-notice', hoot_data()->incuri . 'admin/js/notice.js', array( 'jquery' ),  hoot_data()->hoot_version, true );
		wp_localize_script( 'hoot-admin-notice', 'hoot_admin_notice', array(
							'ajax_url' => esc_url( admin_url( 'admin-ajax.php' ) ),
							'nonce' => wp_create_nonce( 'hoottheme-welcome-action' ),
							'dismiss_action' => 'olius_dismiss_welcome_notice',
							'hoot_processplugin_action' => 'olius_processplugin',
							'hoot_processplugin_btntext' => esc_html__( 'Please Wait. This may take a while...', 'olius' ),
						) );
	}
}
add_action( 'admin_enqueue_scripts', 'olius_admin_enqueue_notice_styles' );

/**
 * Display admin notice
 */
function olius_add_hootkit_version_notice() {
	$themename = olius_abouttag( 'name' );
	?><div id="hoot-hkcompat-msg" class="hoot-hkcompat-msg notice notice-error is-dismissible" data-hootmsg="hkcompat">
		<div class="hoot-welcome-content">
			<p><?php
				/* Translators: 1 is the theme name */
				printf( esc_html__( 'Your current HootKit plugin is outdated. Please %1$supdate to the latest version%2$s to ensure compatibility with %3$s theme.', 'olius' ), '<a href="' . esc_url( admin_url( 'update-core.php' ) ) . '">', '</a>', $themename );
			?></p>
		</div>
	</div><?php
}
function olius_add_welcome_notice() {
	$slug = olius_abouttag( 'slug' );
	$themename = olius_abouttag( 'name' );
	$imgshot = olius_abouttag( 'fullshot', true );
	$issmall = false;
	if ( ! $imgshot ) {
		$imgshot = olius_abouttag( 'shot' );
		$issmall = true;
	}
	$import_config = apply_filters( 'hootimport_theme_config', array() ); // Hoot Import has been configured for active theme
	$display_import = ! empty( $import_config ) && ! get_option( "{$slug}-dismiss-import" );
	$display_hootkit = ! class_exists( 'HootKit' );
	$display_qstart = !$display_import || !$display_hootkit;
	?>
	<div id="hoot-welcome-msg" class="hoot-welcome-msg notice is-dismissible">
		<div class="hoot-welcome-content">
			<?php if ( $imgshot ) : ?>
				<a class="hoot-welcome-img <?php echo ( $issmall ? 'hoot-welcome-img--ss': 'hoot-welcome-img--large' ); ?>" href="<?php echo esc_url( "https://demosites.wphoot.com/olius" ); ?>" target="_blank">
					<img class="hoot-welcome-screenshot <?php if ( ! $issmall ) { echo 'hoot-welcome-scrollableimg'; } ?>" src="<?php echo esc_url( $imgshot ); ?>" alt="<?php echo esc_attr( $themename ); ?>" />
				</a>
			<?php endif; ?>
			<div class="hoot-welcome-text">
				<h1><?php
					/* Translators: 1 is the theme name 2 and 3 are span tags */
					printf( esc_html__( 'Thank you for choosing %2$s%1$s!%3$s', 'olius' ), $themename, '<span>', '</span>' );
				?></h1>
				<p>
					<?php
					/* Translators: 1 is the link start markup, 2 is link markup end 3 is line break 4 is the theme name */
					printf( esc_html__( 'To get started and fully take advantage of our theme, please visit the Theme Dashboard for the %1$sQuick Start Guide%2$s.%3$sWe hope you enjoy using %4$s', 'olius' ), '<a href="' . esc_url( hoot_dashboard( 'url', array( 'tab' => 'qstart' ) ) ) . '" style="display: inline-block;">', '</a>', '<br />', $themename );
				?></p>

				<?php $class = $display_import && $display_hootkit ? 'hoot-welcome-multiactions' : ''; ?>
					<div class="hoot-welcome-actions <?php echo sanitize_html_class( $class ); ?>">
						<?php if ( $display_hootkit ) :
							?>
							<div>
								<div>
									<div><a class="button button-primary hoot-welcome-btn hoot-btn-processplugin" href="<?php echo esc_url( hoot_dashboard( 'url', array( 'tab' => 'plugins' ) ) ); ?>" data-plugin="hootkit"><?php esc_html_e( 'Install Hoot Kit', 'olius' ); ?></a></div>
									<?php if ( ! $display_qstart ) : ?><p><?php _e( 'Add Sliders and Widgets developed and designed specifically for the theme.', 'olius' ); ?></p><?php endif; ?>
								</div>
								<?php if ( ! $display_qstart ) : ?><div class="hoot-welcome-note"><?php _e( 'Above button installs the "HootKit" plugin.', 'olius' ); ?></div><?php endif; ?>
							</div>
						<?php endif; ?>
						<?php if ( $display_qstart ) :
							$class = $display_hootkit ? 'button-secondary' : 'button-primary';
							?>
							<div>
								<div>
									<div><a class="button <?php echo sanitize_html_class( $class ); ?> hoot-welcome-btn" href="<?php echo esc_url( hoot_dashboard( 'url', array( 'tab' => 'qstart' ) ) ); ?>"><?php esc_html_e( 'Quick Start', 'olius' ); ?></a></div>
								</div>
							</div>
						<?php endif; ?>
						<?php if ( $display_import ) :
							?>
							<div>
								<div>
									<div><a class="button button-secondary hoot-welcome-btn hoot-btn-processplugin" href="<?php echo esc_url( hoot_dashboard( 'url', array( 'tab' => 'plugins' ) ) ); ?>" data-plugin="hoot-import"><?php esc_html_e( 'Import Demo Site', 'olius' ); ?></a></div>
									<?php if ( ! $display_qstart ) : ?><p><?php _e( 'Import a complete demo site to get started.', 'olius' ); ?></p><p><em><?php
										/* Translators: 1 is the link start markup, 2 is link markup end */
										printf( esc_html__( '%1$sPro Tip:%2$s If you have existing content on your site, Import only the widgets and customizer settings.', 'olius' ), '<strong>', '</strong>' ); ?></em></p><?php endif; ?>
								</div>
								<?php if ( ! $display_qstart ) : ?><?php if ( ! class_exists( 'HootImport' ) ) : ?><div class="hoot-welcome-note"><?php _e( 'Above button installs the "Hoot Import" plugin.', 'olius' ); ?></div><?php endif; ?><?php endif; ?>
							</div>
						<?php endif; ?>
					</div>
					<?php if ( $display_qstart ) :
						if ( $display_hootkit ) : ?><div class="hoot-welcome-note"><?php _e( 'Above button installs the "HootKit" plugin.', 'olius' ); ?></div><?php endif;
						if ( $display_import && ! class_exists( 'HootImport' ) ) : ?><div class="hoot-welcome-note"><?php _e( 'Above button installs the "Hoot Import" plugin.', 'olius' ); ?></div><?php endif;
					endif; ?>

			</div>
		</div>
	</div>
	<?php
}

/**
 * Ajax callback to set dismissable notice
 */
function olius_dismiss_welcome_notice() {
	check_ajax_referer( 'hoottheme-welcome-action', 'nonce' );
	$slug = olius_abouttag( 'slug' );
	update_option( "{$slug}-dismiss-welcome", 1 );
	wp_die();
}
add_action( 'wp_ajax_olius_dismiss_welcome_notice', 'olius_dismiss_welcome_notice' );

/**
 * Ajax callback to import and activate Hoot Import plugin
 */
function olius_processplugin() {
	check_ajax_referer( 'hoottheme-welcome-action', 'nonce' );
	$slug = olius_abouttag( 'slug' );
	$state = '';
	$alreadyexists = false;
	$response = array();
	$plugin = isset( $_POST['plugin'] ) && in_array( $_POST['plugin'], array( 'hoot-import', 'hootkit' ) ) ? $_POST['plugin'] : '';
	$redirectdashtab = isset( $_POST['redirectdashtab'] ) ? sanitize_text_field( wp_unslash( $_POST['redirectdashtab'] ) ) : '';
	if (
		( $plugin === 'hoot-import' && class_exists( 'HootImport' ) ) ||
		( $plugin === 'hootkit' && class_exists( 'HootKit' ) )
	 ) {
		$state = 'activated';
		$alreadyexists = true;
	} elseif ( file_exists( WP_PLUGIN_DIR . "/{$plugin}/{$plugin}.php" ) ) {
		$state = 'installed';
	} else {
		/** Install plugin. **/
		wp_enqueue_style( 'plugin-install' );
		wp_enqueue_script( 'plugin-install' );
		include_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' );
		include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
		include_once( ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php' );
		include_once( ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php' );
		$api = plugins_api(
			'plugin_information',
			array(
				'slug'   => sanitize_key( wp_unslash( $plugin ) ),
				'fields' => array(
					'short_description' => false,
					'sections' => false,
					'requires' => false,
					'rating' => false,
					'ratings' => false,
					'downloaded' => false,
					'last_updated' => false,
					'added' => false,
					'tags' => false,
					'compatibility' => false,
					'homepage' => false,
					'donate_link' => false,
				),
			)
		);
		if ( is_wp_error( $api ) ) {
			$response['errorInstall'] = $api->get_error_message();
		} else {
			$skin     = new WP_Ajax_Upgrader_Skin();
			$upgrader = new Plugin_Upgrader( $skin );
			$result   = $upgrader->install( $api->download_link );
			if ( $result ) {
				$state = 'installed';
			} else {
				$pluginname = ucwords( str_replace( '-', ' ', $plugin ) );
				/* Translators: 1 is line break, 2 is the link start markup, 3 is link markup end, 4 is the plugin name, 5 and 6 are strong tags */
				$errormsg = sprintf( esc_html__( 'WordPress encountered an unexpected error during the plugin installation.%1$sPlease %2$sclick this link%3$s to install the %5$s%4$s plugin%6$s directly.', 'olius' ), '<br />', '<a href="' . esc_url( admin_url( "plugin-install.php?s={$plugin}&tab=search&type=term" ) ) . '">', '</a>', $pluginname, '<strong>', '</strong>' );
				$response['errorInstall'] = $errormsg;
			}
		}
	}

	if ( 'installed' === $state ) {
		if ( current_user_can( 'activate_plugin' ) ) {
			$result = activate_plugin( "{$plugin}/{$plugin}.php" );
			if ( ! is_wp_error( $result ) ) {
				$state = 'activated';
			} else {
				$response['errorCode']    = $result->get_error_code();
				$response['errorMessage'] = $result->get_error_message();
			}
		}
	}
	if ( 'activated' === $state ) {
		if ( $plugin === 'hoot-import' ) {
			$response['redirect'] = admin_url( 'themes.php?page=hoot-import' );
			update_option( "{$slug}-dismiss-import", 1 );
		} elseif ( $plugin === 'hootkit' ) {
			$response['redirect'] = 'true';
		}
	}

	wp_send_json( $response );
	exit();
}
add_action( 'wp_ajax_olius_processplugin', 'olius_processplugin' );
