<?php
/**
 * Admin notice for Construction Firm theme.
 *
 * @package CONSTRUCTION_FIRM
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * AJAX handler for dismissing the admin notice.
 */
add_action( 'wp_ajax_construction_firm_dismissed_notice_handler', 'construction_firm_ajax_notice_dismiss_function' );

function construction_firm_ajax_notice_dismiss_function() {
	$nonce = isset( $_POST['wpnonce'] ) ? sanitize_text_field( wp_unslash( $_POST['wpnonce'] ) ) : '';
	if ( ! wp_verify_nonce( $nonce, 'construction_firm_dismissed_notice_nonce' ) ) {
		wp_send_json_error( 'Invalid nonce' );
		exit;
	}

	if ( isset( $_POST['type'] ) ) {
		$type = sanitize_text_field( wp_unslash( $_POST['type'] ) );
		update_option( 'dismissed-' . $type, true );
		wp_send_json_success( 'Notice dismissed' );
	} else {
		wp_send_json_error( 'Type not set' );
	}
}

/**
 * Display the admin notice.
 */
function construction_firm_custom_admin_notice() {
	if ( ! get_option( 'dismissed-get_started_notice', false ) ) {
		$current_screen   = get_current_screen();
		$theme            = wp_get_theme();
		$theme_name_clean = strtolower( preg_replace( '#[^a-zA-Z]#', '', $theme->get( 'Name' ) ) );
		$wizard_slug      = apply_filters( $theme_name_clean . '_theme_setup_wizard_construction_firm_page_slug', $theme_name_clean . '-wizard' );
		$wizard_screen    = 'appearance_page_' . $wizard_slug;
		$upsell_screen    = 'appearance_page_construction-firm-pro';

		if ( $current_screen && $current_screen->id !== $wizard_screen && $current_screen->id !== $upsell_screen ) {
			?>
			<div class="construction-firm-admin-notice notice notice-info is-dismissible content-install-plugin theme-info-notice" id="construction-firm-dismiss-notice" data-notice="get_started_notice">
				<div class="notice-div">
					<div>
						<p class="theme-name"><?php echo esc_html( $theme->get( 'Name' ) ); ?></p>
						<p><?php esc_html_e( 'For information and detailed instructions, check out our theme documentation.', 'construction-firm' ); ?></p>
					</div>
					<div class="notice-buttons-box">
						<a class="button-primary getstarted" href="<?php echo esc_url( admin_url( 'themes.php?page=construction-firm-pro' ) ); ?>"><?php esc_html_e( 'Theme Information', 'construction-firm' ); ?></a>
						<a class="button-primary livedemo" href="<?php echo esc_url( CONSTRUCTION_FIRM_LIVE_DEMO ); ?>" target="_blank"><?php esc_html_e( 'Live Demo', 'construction-firm' ); ?></a>
						<a class="button-primary buynow" href="<?php echo esc_url( CONSTRUCTION_FIRM_BUY_PRO ); ?>" target="_blank"><?php esc_html_e( 'Get Pro Theme', 'construction-firm' ); ?></a>
						<a class="button-primary theme-install" href="<?php echo esc_url( admin_url( 'themes.php?page=' . $wizard_slug ) ); ?>"><?php esc_html_e( 'Demo Importer', 'construction-firm' ); ?></a>
					</div>
				</div>
			</div>
			<?php
		}
	}
}
add_action( 'admin_notices', 'construction_firm_custom_admin_notice' );

/**
 * Reset dismissed notice on theme switch.
 */
add_action( 'after_switch_theme', 'construction_firm_after_switch_theme' );
function construction_firm_after_switch_theme() {
	update_option( 'dismissed-get_started_notice', false );
}

/**
 * Set a transient on theme activation so we can redirect safely on admin_init.
 */
add_action( 'after_switch_theme', 'construction_firm_set_activation_redirect' );
function construction_firm_set_activation_redirect() {
	set_transient( 'construction_firm_activation_redirect', true, 30 );
}

/**
 * Redirect to Get Started page after theme activation.
 * Uses admin_init to ensure headers have not been sent yet.
 */
add_action( 'admin_init', 'construction_firm_redirect_after_activation' );
function construction_firm_redirect_after_activation() {
	if ( ! get_transient( 'construction_firm_activation_redirect' ) ) {
		return;
	}
	delete_transient( 'construction_firm_activation_redirect' );

	// Do not redirect during bulk activations or AJAX requests.
	if ( is_network_admin() || isset( $_GET['activate-multi'] ) || wp_doing_ajax() ) {
		return;
	}

	wp_safe_redirect( admin_url( 'themes.php?page=construction-firm-pro' ) );
	exit;
}
