Current File : /home/mdkeenpw/shafqattraders.com/wp-content/plugins/admin-site-enhancements/settings.php
<?php

/**
 * Initialize options. [TODO] Move this into activation class at v7.
 * 
 * @since 6.4.1
 */
if ( false === get_option( ASENHA_SLUG_U ) ) {
    add_option( ASENHA_SLUG_U, array(), true );
}
if ( false === get_option( ASENHA_SLUG_U . '_stats' ) ) {
    add_option( ASENHA_SLUG_U . '_stats', array(), false );
}
if ( false === get_option( ASENHA_SLUG_U . '_extra' ) ) {
    add_option( ASENHA_SLUG_U . '_extra', array(), true );
}
// Bugfix in v7.1.2 for Custom Content Type module
$options_extra = get_option( ASENHA_SLUG_U . '_extra', array() );
if ( !isset( $options_extra['cfgroup_next_field_id'] ) ) {
    $options_extra['cfgroup_next_field_id'] = 1;
    update_option( ASENHA_SLUG_U . '_extra', $options_extra, true );
}
// Move Admin Menu Organizer options storage to extra table since v7.8.5
if ( !isset( $options_extra['admin_menu'] ) ) {
    $options = get_option( ASENHA_SLUG_U, array() );
    $options_extra['admin_menu']['custom_menu_order'] = ( isset( $options['custom_menu_order'] ) ? $options['custom_menu_order'] : '' );
    unset($options['custom_menu_order']);
    $options_extra['admin_menu']['custom_menu_titles'] = ( isset( $options['custom_menu_titles'] ) ? $options['custom_menu_titles'] : '' );
    unset($options['custom_menu_titles']);
    $options_extra['admin_menu']['custom_menu_hidden'] = ( isset( $options['custom_menu_hidden'] ) ? trim( $options['custom_menu_hidden'], ',' ) : '' );
    unset($options['custom_menu_hidden']);
    update_option( ASENHA_SLUG_U . '_extra', $options_extra, true );
    update_option( ASENHA_SLUG_U, $options, true );
}
/**
 * Register admin menu
 *
 * @since 1.0.0
 */
function asenha_register_admin_menu() {
    add_submenu_page(
        'tools.php',
        // Parent page/menu
        'Admin and Site Enhancements',
        // Browser tab/window title
        __( 'Enhancements', 'admin-site-enhancements' ),
        // Sube menu title
        'manage_options',
        // Minimal user capabililty
        ASENHA_SLUG,
        // Page slug. Shows up in URL.
        'asenha_add_settings_page'
    );
}

/**
 * Create the settings page of the plugin
 *
 * @since 1.0.0
 */
function asenha_add_settings_page() {
    $options = get_option( ASENHA_SLUG_U, array() );
    ?>
	<div class="wrap asenha">

		<div id="asenha-header" class="asenha-header">
			<div class="asenha-header-left">
				<img src="<?php 
    echo esc_html( ASENHA_URL ) . 'assets/img/ase_icon.png';
    ?>" class="asenha-icon"/>
				<h1 class="asenha-heading">
					<?php 
    echo esc_html( get_admin_page_title() );
    ?>
					(ASE)
					<?php 
    ?>
				</h1>
				<input id="module-search-input" type="search" placeholder="<?php 
    echo esc_attr__( 'Search...', 'admin-site-enhancements' );
    ?>" />
				<!-- <a href="https://wordpress.org/plugins/admin-site-enhancements/" target="_blank" class="asenha-header-action"><span>&#8505;</span> <?php 
    // esc_html_e( 'Info', 'admin-site-enhancements' );
    ?></a> -->
			</div>
			<div class="asenha-header-right">
                <?php 
    // https://icon-sets.iconify.design/iconamoon/star-bold/
    $svg_star = '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="2.5" d="m12 2l3.104 6.728l7.358.873l-5.44 5.03l1.444 7.268L12 18.28L5.534 21.9l1.444-7.268L1.538 9.6l7.359-.873L12 2Z"/></svg>';
    // https://icon-sets.iconify.design/octicon/question-16/
    $svg_support = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="currentColor" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13a6.5 6.5 0 0 0 0-13ZM6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.756 2.756 0 0 1 1.637.525c.503.377.863.965.863 1.725c0 .448-.115.83-.329 1.15c-.205.307-.47.513-.692.662c-.109.072-.22.138-.313.195l-.006.004a6.24 6.24 0 0 0-.26.16a.952.952 0 0 0-.276.245a.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661c.103-.067.207-.132.313-.195l.007-.004c.1-.061.182-.11.258-.161a.969.969 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.612.612 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1.01 1.01 0 0 0-.34.398ZM9 11a1 1 0 1 1-2 0a1 1 0 0 1 2 0Z"/></svg>';
    // https://icon-sets.iconify.design/octicon/comment-16/
    $svg_feedback = '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="currentColor" d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/></svg>';
    // https://icon-sets.iconify.design/ic/baseline-translate/
    $svg_translate = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" d="m12.87 15.07l-2.54-2.51l.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35C8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5l3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7l1.62-4.33L19.12 17z"/></svg>';
    // https://icon-sets.iconify.design/iconamoon/file-document/
    $svg_docs = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linejoin="round" stroke-width="2"><path stroke-linecap="round" d="M7 21a2 2 0 0 1-2-2V3h9l5 5v11a2 2 0 0 1-2 2H7Z"/><path d="M13 3v6h6"/><path stroke-linecap="round" d="M9 13h6m-6 4h6"/></g></svg>';
    // https://icon-sets.iconify.design/pajamas/heart/
    $svg_sponsor = '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M8.753 2.247L8 3l-.753-.753A4.243 4.243 0 0 0 1.25 8.25l5.69 5.69L8 15l1.06-1.06l5.69-5.69a4.243 4.243 0 0 0-5.997-6.003ZM8 12.879l5.69-5.69a2.743 2.743 0 0 0-3.877-3.881l-.752.753L8 5.12L6.94 4.06l-.753-.752v-.001A2.743 2.743 0 0 0 2.31 7.189L8 12.88Z" clip-rule="evenodd"/></svg>';
    ?>
	 				<a href="https://wordpress.org/plugins/admin-site-enhancements/#reviews" target="_blank" class="asenha-header-action review"><?php 
    echo wp_kses( $svg_star, get_kses_with_svg_ruleset() ) . esc_html__( 'Review', 'admin-site-enhancements' );
    ?></a>
					<a href="https://wordpress.org/support/plugin/admin-site-enhancements/" target="_blank" class="asenha-header-action feedback"><?php 
    echo wp_kses( $svg_feedback, get_kses_with_svg_ruleset() ) . esc_html__( 'Feedback', 'admin-site-enhancements' );
    ?></a>
					<a href="https://www.wpase.com/trnslt-plgnhdr" target="_blank" class="asenha-header-action translate"><?php 
    echo wp_kses( $svg_translate, get_kses_with_svg_ruleset() ) . esc_html__( 'Translate', 'admin-site-enhancements' );
    ?></a>
					<!--<a href="https://www.wpasenha.com/docs/" target="_blank" class="asenha-header-action docs"><?php 
    // echo $svg_docs . esc_html__( 'Docs', 'admin-site-enhancements' );
    ?></a>-->
					<!--<a id="plugin-sponsor" href="#" class="asenha-header-action sponsor"><?php 
    // echo $svg_sponsor . esc_html__( 'Sponsor', 'admin-site-enhancements' );
    ?></a>-->
	                <a href="https://www.wpase.com/upgrade-btn" target="_blank" id="plugin-upgrade" class="button button-primary plugin-upgrade"><?php 
    echo esc_html__( 'Get ASE Pro', 'admin-site-enhancements' );
    ?></a>
				<?php 
    ?>
				<a class="button button-primary asenha-save-button"><?php 
    echo esc_html__( 'Save Changes', 'admin-site-enhancements' );
    ?></a>
				<!-- https://icon-sets.iconify.design/svg-spinners/180-ring-with-bg/ -->
				<div class="asenha-saving-changes" style="display:none;"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#2271b1" d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z" opacity=".25"/><path fill="#2271b1" d="M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"><animateTransform attributeName="transform" dur="0.75s" repeatCount="indefinite" type="rotate" values="0 12 12;360 12 12"/></path></svg></div>
				<div class="asenha-changes-saved" style="display:none;"><svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24"><path fill="seagreen" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10s10-4.48 10-10S17.52 2 12 2zM9.29 16.29L5.7 12.7a.996.996 0 1 1 1.41-1.41L10 14.17l6.88-6.88a.996.996 0 1 1 1.41 1.41l-7.59 7.59a.996.996 0 0 1-1.41 0z"/></svg></div>
			</div>
		</div>

		<div class="asenha-body">
			<?php 
    $is_yearend_promo_period = is_yearend_promo_period();
    ?>
			<?php 
    if ( $is_yearend_promo_period ) {
        ?>
				<!-- <div class="asenha-upgrade-nudge" style="display: none;">
					<div class="asenha-upgrade-nudge__message"><?php 
        // echo esc_html__( 'Lifetime Deal (LTD) is available for the Pro version of ASE.', 'admin-site-enhancements' );
        ?></div>
					<a href="https://www.wpase.com/upgrade-ndg" class="button asenha-upgrade-nudge__button" target="_blank"><?php 
        // echo esc_html__( 'Find Out More', 'admin-site-enhancements' );
        ?></a>
					<a href="#" id="dismiss-upgrade-nudge" class="asenha-upgrade-nudge__dismiss">
						<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"><path fill="currentColor" d="M24 2.4L21.6 0L12 9.6L2.4 0L0 2.4L9.6 12L0 21.6L2.4 24l9.6-9.6l9.6 9.6l2.4-2.4l-9.6-9.6z"/></svg>
					</a>
				</div> -->
				<div class="asenha-promo-nudge" style="display: none;">
					<div class="asenha-promo-nudge__message"><?php 
        echo esc_html__( 'ASE Pro YEAR-END SALE! 20% DISCOUNT. Lifetime Deal (LTD) available.', 'admin-site-enhancements' );
        ?></div>
					<a href="https://www.wpase.com/promo-ndg" class="button asenha-promo-nudge__button" target="_blank"><?php 
        echo esc_html__( 'Get It Now', 'admin-site-enhancements' );
        ?></a>
					<a href="#" id="dismiss-promo-nudge" class="asenha-promo-nudge__dismiss">
						<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"><path fill="currentColor" d="M24 2.4L21.6 0L12 9.6L2.4 0L0 2.4L9.6 12L0 21.6L2.4 24l9.6-9.6l9.6 9.6l2.4-2.4l-9.6-9.6z"/></svg>
					</a>
				</div>
				<?php 
    } else {
        ?>
				<div class="asenha-upgrade-nudge" style="display: none;">
					<div class="asenha-upgrade-nudge__message"><?php 
        echo esc_html__( 'Lifetime Deal (LTD) is available for the Pro version of ASE.', 'admin-site-enhancements' );
        ?></div>
					<a href="https://www.wpase.com/upgrade-ndg" class="button asenha-upgrade-nudge__button" target="_blank"><?php 
        echo esc_html__( 'Find Out More', 'admin-site-enhancements' );
        ?></a>
					<a href="#" id="dismiss-upgrade-nudge" class="asenha-upgrade-nudge__dismiss">
						<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24"><path fill="currentColor" d="M24 2.4L21.6 0L12 9.6L2.4 0L0 2.4L9.6 12L0 21.6L2.4 24l9.6-9.6l9.6 9.6l2.4-2.4l-9.6-9.6z"/></svg>
					</a>
				</div>
				<?php 
    }
    ?>
			<?php 
    ?>
			<div class="asenha-support-nudge nudge-show-more is-enabled" style="display: none;">
				<h3><?php 
    _e( 'Looks like some of these free enhancements have been useful for your site?', 'admin-site-enhancements' );
    ?></h3> 
				<p class="nudge-description intro"><?php 
    _e( 'Please consider supporting ASE.', 'admin-site-enhancements' );
    ?></p>
				<div class="nudge-content">
					<div class="nudge-primary">
						<h4><?php 
    _e( 'Write a quick, 5-star review for ASE', 'admin-site-enhancements' );
    ?></h4>
						<div class="nudge-ctas">
							<a href="https://wordpress.org/plugins/admin-site-enhancements/#reviews" target="_blank" class="button button-outline asenha-review-button"><?php 
    _e( 'Add Your Review', 'admin-site-enhancements' );
    ?></a>
							<a href="#" id="have-reviewed" class="asenha-have-supported"><?php 
    _e( 'I\'ve reviewed', 'admin-site-enhancements' );
    ?></a>
						</div>
						<p class="nudge-description"><?php 
    _e( 'Or, help improve ASE by <a href="https://wordpress.org/support/plugin/admin-site-enhancements/" target="_blank">providing feedback</a>.', 'admin-site-enhancements' );
    ?></p>
					</div>
					<div class="nudge-secondary">
						<h4><?php 
    _e( 'Share about ASE on:', 'admin-site-enhancements' );
    ?></h4>
						<div class="nudge-ctas">
							<a href="https://www.facebook.com/sharer.php?u=<?php 
    echo urlencode( 'https://www.wpase.com' );
    ?>" target="_blank" class="button button-outline asenha-share-button"><?php 
    _e( 'Facebook', 'admin-site-enhancements' );
    ?></a>
							<a href="https://twitter.com/intent/post?url=<?php 
    echo urlencode( 'https://www.wpase.com' );
    ?>&text=<?php 
    echo esc_attr( urlencode( 'Admin and Site Enhancements (ASE)' ) );
    ?>" target="_blank" class="button button-outline asenha-share-button"><?php 
    _e( 'X / Twitter', 'admin-site-enhancements' );
    ?></a>
							<a href="https://www.wpase.com/video-reviews/" target="_blank" class="button button-outline asenha-share-button"><?php 
    _e( 'YouTube', 'admin-site-enhancements' );
    ?></a>
							<a href="#" id="have-shared" class="asenha-have-supported"><?php 
    _e( 'I\'ve shared', 'admin-site-enhancements' );
    ?></a>
						</div>
						<div class="nudge-info">
							<p class="nudge-description"><?php 
    _e( 'Help others discover ASE and maybe <a href="https://www.wpase.com/trnslt-plgnndg" target="_blank">translate</a> to your language.', 'admin-site-enhancements' );
    ?></p>
						</div>
					</div>
				</div>
				<div class="dismiss-support-nudge"><a href="#" id="support-nudge-dismiss" class="asenha-support-nudge-dismiss"><?php 
    _e( 'Dismiss', 'admin-site-enhancements' );
    ?></a></div>
			</div>
			<?php 
    ?>
			<form action="options.php" method="post">
				<div class="asenha-vertical-tabs">
					<div class="asenha-tab-buttons">
						<?php 
    // https://icon-sets.iconify.design/mdi/database-check-outline/ -- db check
    // https://icon-sets.iconify.design/mdi/file-document-box-multiple-outline/ -- docs
    // https://icon-sets.iconify.design/fluent/content-view-28-regular/ -- content
    // https://icon-sets.iconify.design/lucide/shapes/ -- shapes
    $icon_content_management = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"/><rect width="7" height="7" x="3" y="14" rx="1"/><circle cx="17.5" cy="17.5" r="3.5"/></g></svg>';
    // https://icon-sets.iconify.design/mingcute/layout-line/
    $icon_admin_interface = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M24 0v24H0V0h24ZM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035c-.01-.004-.019-.001-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427c-.002-.01-.009-.017-.017-.018Zm.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093c.012.004.023 0 .029-.008l.004-.014l-.034-.614c-.003-.012-.01-.02-.02-.022Zm-.715.002a.023.023 0 0 0-.027.006l-.006.014l-.034.614c0 .012.007.02.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01l-.184-.092Z"/><path fill="currentColor" d="M3 5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm16 0H5v3h14V5ZM5 19v-9h4v9H5Zm6 0h8v-9h-8v9Z"/></g></svg>';
    // https://icon-sets.iconify.design/ri/login-circle-line/
    $icon_login_logout = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="m10.998 16l5-4l-5-4v3h-9v2h9z"/><path fill="currentColor" d="M12.999 2.999a8.938 8.938 0 0 0-6.364 2.637L8.049 7.05c1.322-1.322 3.08-2.051 4.95-2.051s3.628.729 4.95 2.051S20 10.13 20 12s-.729 3.628-2.051 4.95s-3.08 2.051-4.95 2.051s-3.628-.729-4.95-2.051l-1.414 1.414c1.699 1.7 3.959 2.637 6.364 2.637s4.665-.937 6.364-2.637C21.063 16.665 22 14.405 22 12s-.937-4.665-2.637-6.364a8.938 8.938 0 0 0-6.364-2.637z"/></svg>';
    // https://icon-sets.iconify.design/mingcute/code-line/
    $icon_custom_code = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><path d="M0 0h24v24H0z"/><path fill="currentColor" d="M14.486 3.143a1 1 0 0 1 .692 1.233l-4.43 15.788a1 1 0 0 1-1.926-.54l4.43-15.788a1 1 0 0 1 1.234-.693ZM7.207 7.05a1 1 0 0 1 0 1.414L3.672 12l3.535 3.535a1 1 0 1 1-1.414 1.415L1.55 12.707a1 1 0 0 1 0-1.414L5.793 7.05a1 1 0 0 1 1.414 0Zm9.586 1.414a1 1 0 1 1 1.414-1.414l4.243 4.243a1 1 0 0 1 0 1.414l-4.243 4.242a1 1 0 0 1-1.414-1.414L20.328 12l-3.535-3.536Z"/></g></svg>';
    // https://icon-sets.iconify.design/mdi/forbid/
    $icon_disable_components = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M12 2c5.5 0 10 4.5 10 10s-4.5 10-10 10S2 17.5 2 12S6.5 2 12 2m0 2c-1.9 0-3.6.6-4.9 1.7l11.2 11.2c1-1.4 1.7-3.1 1.7-4.9c0-4.4-3.6-8-8-8m4.9 14.3L5.7 7.1C4.6 8.4 4 10.1 4 12c0 4.4 3.6 8 8 8c1.9 0 3.6-.6 4.9-1.7Z"/></svg>';
    // https://icon-sets.iconify.design/jam/shield-check/
    $icon_security = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="m8 1.75l5.25 2v5c0 2.25-2 4.5-5.25 5.5c-3.25-1-5.25-3-5.25-5.5v-5z"/><path d="m5.75 7.75l1.5 1.5l3-3.5"/></g></svg>';
    // https://icon-sets.iconify.design/streamline/image-flash-1-flash-power-connect-charge-electricity-lightning/
    $icon_optimizations = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 14 14"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M4.25.5L2 5.81a.5.5 0 0 0 .46.69h2.79l-2 7l8.59-8.14a.5.5 0 0 0-.34-.86H7.75l2-4Z"/></svg>';
    // https://icon-sets.iconify.design/iconoir/tools/
    $icon_utilities = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path d="m10.05 10.607l-7.07 7.07a2 2 0 0 0 0 2.83v0a2 2 0 0 0 2.828 0l7.07-7.072m4.315.365l3.878 3.878a2 2 0 0 1 0 2.828v0a2 2 0 0 1-2.828 0l-6.209-6.208M6.733 5.904L4.61 6.61L2.49 3.075l1.414-1.414L7.44 3.782l-.707 2.122Zm0 0l2.83 2.83"/><path d="M10.05 10.607c-.844-2.153-.679-4.978 1.061-6.718c1.74-1.74 4.95-2.121 6.717-1.06l-3.04 3.04l-.283 3.111l3.111-.282l3.04-3.041c1.062 1.768.68 4.978-1.06 6.717c-1.74 1.74-4.564 1.905-6.717 1.061"/></g></svg>';
    ?>
					    <input id="tab-content-management" type="radio" name="tabs" checked><label for="tab-content-management" class="modules-tab"><?php 
    echo wp_kses( $icon_content_management, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Content Management', 'admin-site-enhancements' );
    ?></span></label>
					    <input id="tab-admin-interface" type="radio" name="tabs"><label for="tab-admin-interface" class="modules-tab"><?php 
    echo wp_kses( $icon_admin_interface, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Admin Interface', 'admin-site-enhancements' );
    ?></span></label>
					    <input id="tab-login-logout" type="radio" name="tabs"><label for="tab-login-logout" class="modules-tab"><?php 
    echo wp_kses( $icon_login_logout, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Log In/Out | Register', 'admin-site-enhancements' );
    ?></span></label>
					    <input id="tab-custom-code" type="radio" name="tabs"><label for="tab-custom-code" class="modules-tab"><?php 
    echo wp_kses( $icon_custom_code, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Custom Code', 'admin-site-enhancements' );
    ?></span></label>
					    <input id="tab-disable-components" type="radio" name="tabs"><label for="tab-disable-components" class="modules-tab"><?php 
    echo wp_kses( $icon_disable_components, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Disable Components', 'admin-site-enhancements' );
    ?></span></label>
					    <input id="tab-security" type="radio" name="tabs"><label for="tab-security" class="modules-tab"><?php 
    echo wp_kses( $icon_security, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Security', 'admin-site-enhancements' );
    ?></span></label>
					    <input id="tab-optimizations" type="radio" name="tabs"><label for="tab-optimizations" class="modules-tab"><?php 
    echo wp_kses( $icon_optimizations, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Optimizations', 'admin-site-enhancements' );
    ?></span></label>
					    <input id="tab-utilities" type="radio" name="tabs"><label for="tab-utilities" class="modules-tab"><?php 
    echo wp_kses( $icon_utilities, get_kses_with_svg_ruleset() );
    ?><span><?php 
    echo esc_html__( 'Utilities', 'admin-site-enhancements' );
    ?></span></label>
					    <label for="tab-search" class="search-tab" style="display:none;height:52px;"><span><?php 
    echo esc_html__( 'Search results:', 'admin-site-enhancements' );
    ?></span></label>
					</div>
					<div class="asenha-tab-contents">
					    <section class="asenha-fields fields-content-management"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					    <section class="asenha-fields fields-admin-interface"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					    <section class="asenha-fields fields-login-logout"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					    <section class="asenha-fields fields-custom-code"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					    <section class="asenha-fields fields-disable-components"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					    <section class="asenha-fields fields-security"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					    <section class="asenha-fields fields-optimizations"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					    <section class="asenha-fields fields-utilities"> 
					    	<table class="form-table" role="presentation">
					    		<tbody></tbody>
					    	</table>
					    </section>
					</div>
				</div>
				<div style="display:none;"><!-- Hide to prevent flash of fields appearing at the bottom of the page -->
					<?php 
    settings_fields( ASENHA_ID );
    ?>
					<?php 
    do_settings_sections( ASENHA_SLUG );
    ?>
					<?php 
    submit_button(
        __( 'Save Changes', 'admin-site-enhancements' ),
        // Button copy
        'primary',
        // Type: 'primary', 'small', or 'large'
        'submit',
        // The 'name' attribute
        true,
        // Whether to wrap in <p> tag
        array(
            'id' => 'asenha-submit',
        )
    );
    ?>
				</div>
			</form>
            <?php 
    ?>
			<div id="bottom-upgrade-nudge" class="asenha-upgrade-nudge-bottom" style="display:none;">
				<div class="asenha-upgrade-nudge-bottom__message"><?php 
    echo __( 'Do more with <a href="https://www.wpase.com/upgrade-ndg-btm" target="_blank">ASE Pro</a>. Lifetime deal (LTD) <a href="https://www.wpase.com/upgrade-ndg-btm-prc" target="_blank">available</a>.', 'admin-site-enhancements' );
    ?> <?php 
    if ( $is_yearend_promo_period ) {
        echo __( 'Currently on YEAR-END SALE. <a href="https://www.wpase.com/promo-ndg" target="_blank">20% discount</a>.', 'admin-site-enhancements' );
    }
    ?></div>
			</div>
			<?php 
    ?>
		</div>

		<?php 
    ?>

	</div>
	<?php 
    // Record the number of times changes were saved as well as the date of last save
    $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
    $changes_saved = ( isset( $_GET['settings-updated'] ) && 'true' == $_GET['settings-updated'] ? true : false );
    if ( $changes_saved ) {
        $current_date = date( 'Y-m-d', time() );
        if ( !isset( $asenha_stats['first_save_date'] ) ) {
            $asenha_stats['first_save_date'] = $current_date;
            $asenha_stats['last_save_date'] = $current_date;
            $asenha_stats['save_count'] = 1;
            $asenha_stats['have_supported'] = false;
            $asenha_stats['support_nudge_dismissed'] = false;
            $asenha_stats['support_nudge_last_shown_date'] = '';
            $asenha_stats['support_nudge_last_shown_save_count'] = 0;
        } else {
            $asenha_stats['last_save_date'] = $current_date;
            $save_count = $asenha_stats['save_count'];
            $save_count++;
            $asenha_stats['save_count'] = $save_count;
        }
        update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
    }
}

/**
 * Check whether it's the year-end promo period
 * 
 * @since 7.8.11
 */
function is_yearend_promo_period() {
    $current_month = intval( date( 'n', time() ) );
    // n is for numeric value of month, 1 to 12
    if ( $current_month >= 10 ) {
        $is_yearend_promo_period = true;
    } else {
        $is_yearend_promo_period = false;
    }
    return $is_yearend_promo_period;
}

/**
 * Suppress all notices, then add notice for successful settings update
 *
 * @since 1.1.0
 */
function asenha_suppress_add_notices() {
    global $plugin_page;
    // Suppress all notices
    if ( ASENHA_SLUG === $plugin_page ) {
        remove_all_actions( 'admin_notices' );
    }
    // Add notice for successful settings update
    if ( isset( $_GET['page'] ) && ASENHA_SLUG == $_GET['page'] && isset( $_GET['settings-updated'] ) && true == $_GET['settings-updated'] ) {
        ?>
			<script>
				jQuery(document).ready( function() {
					jQuery('.asenha-changes-saved').fadeIn(400).delay(2500).fadeOut(400);
				});
			</script>

		<?php 
    }
}

/**
 * Suppress all generic notices on the plugin settings page
 *
 * @since 2.7.0
 */
function asenha_suppress_generic_notices() {
    global $plugin_page;
    // Suppress all notices
    if ( ASENHA_SLUG === $plugin_page ) {
        remove_all_actions( 'all_admin_notices' );
    }
}

/**
 * Enqueue admin scripts
 *
 * @since 1.0.0
 */
function asenha_admin_scripts(  $hook_suffix  ) {
    global 
        $wp_version,
        $pagenow,
        $typenow,
        $taxnow,
        $hook_suffix,
        $current_user
    ;
    $current_screen = get_current_screen();
    // Get all WP Enhancements options, default to empty array in case it's not been created yet
    $options = get_option( 'admin_site_enhancements', array() );
    // For main page of this plugin
    if ( is_asenha() ) {
        wp_enqueue_style(
            'asenha-jbox',
            ASENHA_URL . 'assets/css/jBox.all.min.css',
            array(),
            ASENHA_VERSION
        );
        wp_enqueue_script(
            'asenha-jbox',
            ASENHA_URL . 'assets/js/jBox.all.min.js',
            array(),
            ASENHA_VERSION,
            false
        );
        wp_enqueue_script(
            'asenha-jsticky',
            ASENHA_URL . 'assets/js/jquery.jsticky.mod.min.js',
            array('jquery'),
            ASENHA_VERSION,
            false
        );
        wp_enqueue_script(
            'asenha-js-cookie',
            ASENHA_URL . 'assets/js/js.cookie.min.js',
            array(),
            ASENHA_VERSION,
            false
        );
        // First, we unload the CodeMirror libraries included in WP core
        wp_deregister_script( 'wp-codemirror' );
        wp_deregister_script( 'code-editor' );
        wp_deregister_script( 'htmlhint' );
        wp_deregister_script( 'csslint' );
        wp_deregister_script( 'esprima' );
        wp_deregister_script( 'jshint' );
        // Then, we load ASENHA's CodeMirror libraries. In use, e.g. for Utilities >> Enable Custom Admin / Frontend CSS / ads.txt / app-ads.txt
        wp_enqueue_style(
            'asenha-codemirror',
            ASENHA_URL . 'assets/css/codemirror/codemirror.min.css',
            array(),
            ASENHA_VERSION
        );
        wp_enqueue_script(
            'asenha-codemirror',
            ASENHA_URL . 'assets/js/codemirror/codemirror.min.js',
            array('jquery'),
            ASENHA_VERSION,
            true
        );
        wp_enqueue_script(
            'asenha-codemirror-htmlmixed-mode',
            ASENHA_URL . 'assets/js/codemirror/htmlmixed.js',
            array('asenha-codemirror'),
            ASENHA_VERSION,
            true
        );
        wp_enqueue_script(
            'asenha-codemirror-xml-mode',
            ASENHA_URL . 'assets/js/codemirror/xml.js',
            array('asenha-codemirror'),
            ASENHA_VERSION,
            true
        );
        wp_enqueue_script(
            'asenha-codemirror-javascript-mode',
            ASENHA_URL . 'assets/js/codemirror/javascript.js',
            array('asenha-codemirror'),
            ASENHA_VERSION,
            true
        );
        wp_enqueue_script(
            'asenha-codemirror-css-mode',
            ASENHA_URL . 'assets/js/codemirror/css.js',
            array('asenha-codemirror'),
            ASENHA_VERSION,
            true
        );
        wp_enqueue_script(
            'asenha-codemirror-markdown-mode',
            ASENHA_URL . 'assets/js/codemirror/markdown.js',
            array('asenha-codemirror'),
            ASENHA_VERSION,
            true
        );
        // DataTables. In use, e.g. for Security >> Limit Login Attempts
        wp_enqueue_style(
            'asenha-datatables',
            ASENHA_URL . 'assets/css/datatables/datatables.min.css',
            array(),
            ASENHA_VERSION
        );
        wp_enqueue_script(
            'asenha-datatables',
            ASENHA_URL . 'assets/js/datatables/datatables.min.js',
            array('jquery'),
            ASENHA_VERSION,
            false
        );
        // Add WP media library assets
        wp_enqueue_media();
        // Add WP color picker assets
        wp_enqueue_style( 'wp-color-picker' );
        wp_enqueue_script( 'wp-color-picker' );
        // We force loading the uncompressed version of TinyMCE. This ensures we load 'wp-tinymce-root' and then 'wp-tinymce',
        // which prevents issue where the Visual tab is unusable in some scenarios
        $wp_scripts = wp_scripts();
        $wp_scripts->remove( 'wp-tinymce' );
        wp_register_tinymce_scripts( $wp_scripts, true );
        // Main style and script for the admin page
        wp_enqueue_style(
            'asenha-admin-page',
            ASENHA_URL . 'assets/css/admin-page.css',
            array(
                'asenha-jbox',
                'asenha-codemirror',
                'asenha-datatables',
                'wp-color-picker'
            ),
            ASENHA_VERSION
        );
        wp_enqueue_script(
            'asenha-admin-page',
            ASENHA_URL . 'assets/js/admin-page.js',
            array(
                'asenha-jsticky',
                'asenha-jbox',
                'asenha-js-cookie',
                'asenha-codemirror-htmlmixed-mode',
                'asenha-codemirror-xml-mode',
                'asenha-codemirror-javascript-mode',
                'asenha-codemirror-css-mode',
                'asenha-codemirror-markdown-mode',
                'asenha-datatables',
                'wp-color-picker',
                'wp-mediaelement',
                'wp-tinymce-root',
                'wp-tinymce'
            ),
            ASENHA_VERSION,
            false
        );
        wp_localize_script( 'asenha-admin-page', 'adminPageVars', array(
            'nonce'                         => wp_create_nonce( 'asenha-' . get_current_user_id() ),
            'siteUrl'                       => get_site_url(),
            'wpcontentUrl'                  => content_url(),
            'mediaFrameTitle'               => __( 'Select an Image', 'admin-site-enhancements' ),
            'mediaFrameButtonText'          => __( 'Use Selected Image', 'admin-site-enhancements' ),
            'resetMenuNonce'                => wp_create_nonce( 'reset-menu-nonce' ),
            'sendTestEmailNonce'            => wp_create_nonce( 'send-test-email-nonce_' . get_current_user_id() ),
            'formBuilderSendTestEmailNonce' => wp_create_nonce( 'formbuilder_ajax' ),
            'expandText'                    => __( 'Expand', 'admin-site-enhancements' ),
            'collapseText'                  => __( 'Collapse', 'admin-site-enhancements' ),
            'dataTable'                     => array(
                'emptyTable'   => __( 'No data available in table', 'admin-site-enhancements' ),
                'info'         => __( 'Showing _START_ to _END_ of _TOTAL_ entries', 'admin-site-enhancements' ),
                'infoEmpty'    => __( 'Showing 0 to 0 of 0 entries', 'admin-site-enhancements' ),
                'infoFiltered' => __( '(filtered from _MAX_ total entries)', 'admin-site-enhancements' ),
                'lengthMenu'   => __( 'Show _MENU_ entries', 'admin-site-enhancements' ),
                'search'       => __( 'Search:', 'admin-site-enhancements' ),
                'zeroRecords'  => __( 'No matching records found', 'admin-site-enhancements' ),
                'paginate'     => array(
                    'first'    => __( 'First', 'admin-site-enhancements' ),
                    'last'     => __( 'Last', 'admin-site-enhancements' ),
                    'next'     => __( 'Next', 'admin-site-enhancements' ),
                    'previous' => __( 'Previous', 'admin-site-enhancements' ),
                ),
            ),
        ) );
    }
    // Enqueue on all wp-admin
    wp_enqueue_style(
        'asenha-wp-admin',
        ASENHA_URL . 'assets/css/wp-admin.css',
        array(),
        ASENHA_VERSION
    );
    // Content Management >> Show IDs, for list tables in wp-admin, e.g. All Posts page
    if ( false !== strpos( $current_screen->base, 'edit' ) || false !== strpos( $current_screen->base, 'users' ) || false !== strpos( $current_screen->base, 'upload' ) ) {
        wp_enqueue_style(
            'asenha-list-table',
            ASENHA_URL . 'assets/css/list-table.css',
            array(),
            ASENHA_VERSION
        );
    }
    // Content Management >> Enable Media Replacement
    if ( $current_screen->base == 'upload' || $current_screen->id == 'attachment' ) {
        // wp_enqueue_style( 'asenha-jbox', ASENHA_URL . 'assets/css/jBox.all.min.css', array(), ASENHA_VERSION );
        // wp_enqueue_script( 'asenha-jbox', ASENHA_URL . 'assets/js/jBox.all.min.js', array(), ASENHA_VERSION, false );
        wp_enqueue_style(
            'asenha-media-replace',
            ASENHA_URL . 'assets/css/media-replace.css',
            array(),
            ASENHA_VERSION
        );
        wp_enqueue_script(
            'asenha-media-replace',
            ASENHA_URL . 'assets/js/media-replace.js',
            array(),
            ASENHA_VERSION,
            false
        );
        $media_replace = array(
            'selectMediaText'        => __( 'Select New Media File', 'admin-site-enhancements' ),
            'performReplacementText' => __( 'Perform Replacement', 'admin-site-enhancements' ),
        );
        wp_localize_script( 'asenha-media-replace', 'mediaReplace', $media_replace );
    }
    // Admin Interface >> Admin Menu Organizer
    if ( 'settings_page_admin-menu-organizer' == $current_screen->base ) {
        // Re-register and re-enqueue jQuery UI Core and plugins required for sortable, draggable and droppable when ordering menu items
        wp_deregister_script( 'jquery-ui-core' );
        wp_register_script(
            'jquery-ui-core',
            get_site_url() . '/wp-includes/js/jquery/ui/core.min.js',
            array('jquery'),
            ASENHA_VERSION,
            false
        );
        wp_enqueue_script( 'jquery-ui-core' );
        if ( version_compare( $wp_version, '5.6.0', '>=' ) ) {
            wp_deregister_script( 'jquery-ui-mouse' );
            wp_register_script(
                'jquery-ui-mouse',
                get_site_url() . '/wp-includes/js/jquery/ui/mouse.min.js',
                array('jquery-ui-core'),
                ASENHA_VERSION,
                false
            );
            wp_enqueue_script( 'jquery-ui-mouse' );
        } else {
            wp_deregister_script( 'jquery-ui-widget' );
            wp_register_script(
                'jquery-ui-widget',
                get_site_url() . '/wp-includes/js/jquery/ui/widget.min.js',
                array('jquery'),
                ASENHA_VERSION,
                false
            );
            wp_enqueue_script( 'jquery-ui-widget' );
            wp_deregister_script( 'jquery-ui-mouse' );
            wp_register_script(
                'jquery-ui-mouse',
                get_site_url() . '/wp-includes/js/jquery/ui/mouse.min.js',
                array('jquery-ui-core', 'jquery-ui-widget'),
                ASENHA_VERSION,
                false
            );
            wp_enqueue_script( 'jquery-ui-mouse' );
        }
        wp_deregister_script( 'jquery-ui-sortable' );
        wp_register_script(
            'jquery-ui-sortable',
            get_site_url() . '/wp-includes/js/jquery/ui/sortable.min.js',
            array('jquery-ui-mouse'),
            ASENHA_VERSION,
            false
        );
        wp_enqueue_script( 'jquery-ui-sortable' );
        wp_deregister_script( 'jquery-ui-draggable' );
        wp_register_script(
            'jquery-ui-draggable',
            get_site_url() . '/wp-includes/js/jquery/ui/draggable.min.js',
            array('jquery-ui-mouse'),
            ASENHA_VERSION,
            false
        );
        wp_enqueue_script( 'jquery-ui-draggable' );
        wp_deregister_script( 'jquery-ui-droppable' );
        wp_register_script(
            'jquery-ui-droppable',
            get_site_url() . '/wp-includes/js/jquery/ui/droppable.min.js',
            array('jquery-ui-draggable'),
            ASENHA_VERSION,
            false
        );
        wp_enqueue_script( 'jquery-ui-droppable' );
        // Script to set behaviour and actions of the sortable menu
        wp_enqueue_script(
            'asenha-custom-admin-menu',
            ASENHA_URL . 'assets/js/custom-admin-menu.js',
            array('jquery-ui-draggable'),
            ASENHA_VERSION,
            false
        );
        wp_enqueue_style(
            'asenha-admin-menu-organizer',
            ASENHA_URL . 'assets/css/admin-menu-organizer.css',
            array(),
            ASENHA_VERSION
        );
        wp_enqueue_script(
            'asenha-admin-menu-organizer',
            ASENHA_URL . 'assets/js/admin-menu-organizer.js',
            array('asenha-custom-admin-menu'),
            ASENHA_VERSION,
            false
        );
        wp_localize_script( 'asenha-admin-menu-organizer', 'amoPageVars', array(
            'saveMenuNonce'  => wp_create_nonce( 'save-menu-nonce' ),
            'resetMenuNonce' => wp_create_nonce( 'reset-menu-nonce' ),
        ) );
    }
    // Utilities >> Email Delivery Log
    if ( 'tools_page_email-delivery-log' == $hook_suffix ) {
        wp_enqueue_style( 'jquery-ui-css', ASENHA_URL . 'assets/premium/css/jquery-ui/jquery-ui.min.css' );
        wp_enqueue_style( 'asenha-email-delivery-log', ASENHA_URL . 'assets/premium/css/email-delivery-log.css' );
        wp_enqueue_script( 'jquery-ui' );
        // wp_enqueue_script( 'jquery-ui-datepicker' );
        wp_enqueue_script( 'jquery-ui-tabs' );
        wp_enqueue_script( 'asenha-email-delivery-log', ASENHA_URL . 'assets/premium/js/email-delivery-log.js' );
        $nonce = wp_create_nonce( 'email-delivery-log' . get_current_user_id() );
        wp_localize_script( 'asenha-email-delivery-log', 'emailLog', array(
            'nonce' => $nonce,
        ) );
    }
    // Utilities >> Image Sizes Panel∂
    if ( 'post' == $current_screen->base && 'attachment' == $current_screen->id ) {
        global $post;
        // Only enqueue if the attachment is an image
        if ( property_exists( $post, 'post_mime_type' ) && false !== strpos( $post->post_mime_type, 'image' ) ) {
            wp_enqueue_style( 'asenha-image-sizes-panel', ASENHA_URL . 'assets/css/image-sizes-panel.css' );
        }
    }
    // Code Snippets Manager
    if ( 'post' == $current_screen->base && 'asenha_code_snippet' == $current_screen->id || 'edit' == $current_screen->base && 'edit-asenha_code_snippet' == $current_screen->id ) {
    }
    // Content Management >> Hide Admin Notices
    if ( array_key_exists( 'hide_admin_notices', $options ) && $options['hide_admin_notices'] ) {
        $hide_for_nonadmins = ( isset( $options['hide_admin_notices_for_nonadmins'] ) ? $options['hide_admin_notices_for_nonadmins'] : false );
        $minimum_capability = 'manage_options';
        if ( function_exists( 'bwasenha_fs' ) ) {
            if ( $hide_for_nonadmins && bwasenha_fs()->can_use_premium_code__premium_only() ) {
                $minimum_capability = 'read';
            }
        }
        if ( current_user_can( $minimum_capability ) ) {
            wp_enqueue_style(
                'asenha-jbox',
                ASENHA_URL . 'assets/css/jBox.all.min.css',
                array(),
                ASENHA_VERSION
            );
            wp_enqueue_script(
                'asenha-jbox',
                ASENHA_URL . 'assets/js/jBox.all.min.js',
                array(),
                ASENHA_VERSION,
                false
            );
            wp_enqueue_style(
                'asenha-hide-admin-notices',
                ASENHA_URL . 'assets/css/hide-admin-notices.css',
                array(),
                ASENHA_VERSION
            );
            wp_enqueue_script(
                'asenha-hide-admin-notices',
                ASENHA_URL . 'assets/js/hide-admin-notices.js',
                array('asenha-jbox'),
                ASENHA_VERSION,
                false
            );
        }
    }
    // Utilities >> Multiple User Roles
    if ( array_key_exists( 'multiple_user_roles', $options ) && $options['multiple_user_roles'] ) {
        if ( 'user-edit.php' == $hook_suffix || 'user-new.php' == $hook_suffix ) {
            // Only replace roles dropdown with checkboxes for users that can assign roles to other users, e.g. administrators
            if ( current_user_can( 'promote_users', get_current_user_id() ) ) {
                wp_enqueue_script(
                    'asenha-multiple-user-roles',
                    ASENHA_URL . 'assets/js/multiple-user-roles.js',
                    array('jquery'),
                    ASENHA_VERSION,
                    false
                );
            }
        }
    }
    $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
    $hide_promo_nudge = false;
    $is_yearend_promo_period = is_yearend_promo_period();
    // Pass on ASENHA stats to admin-page.js to determine whether to show support nudge
    $current_date = date( 'Y-m-d', time() );
    $show_support_nudge = false;
    $asenha_stats_localized = array(
        'firstSaveDate'    => '',
        'lastSaveDate'     => '',
        'saveCount'        => 0,
        'hideUpgradeNudge' => false,
        'hidePromoNudge'   => false,
        'showSupportNudge' => false,
    );
    if ( !empty( $asenha_stats ) ) {
        $hide_upgrade_nudge = ( isset( $asenha_stats['upgrade_nudge_dismissed'] ) ? $asenha_stats['upgrade_nudge_dismissed'] : false );
        $hide_promo_nudge = ( isset( $asenha_stats['promo_nudge_dismissed'] ) ? $asenha_stats['promo_nudge_dismissed'] : false );
        $have_supported = ( isset( $asenha_stats['have_supported'] ) ? $asenha_stats['have_supported'] : false );
        $changes_saved = ( isset( $_GET['settings-updated'] ) && 'true' == sanitize_text_field( $_GET['settings-updated'] ) ? true : false );
        $save_count = ( isset( $asenha_stats['save_count'] ) ? $asenha_stats['save_count'] : 0 );
        // Compensate for redirect from settings-updated=true URL
        if ( $changes_saved ) {
            $save_count = $save_count + 1;
        } else {
            $save_count = $save_count;
        }
        $saves_to_nudge_support = 10;
        if ( $save_count < $saves_to_nudge_support ) {
            $save_count_modulo = -1;
        } else {
            $save_count_modulo = $save_count % $saves_to_nudge_support;
        }
        // User have not supported ASE
        if ( false === $have_supported ) {
            // Support nudge have not been dismissed
            if ( isset( $asenha_stats['support_nudge_dismissed'] ) && false === $asenha_stats['support_nudge_dismissed'] ) {
                // Show support nudge after every x saves
                if ( $save_count_modulo >= 0 ) {
                    $show_support_nudge = true;
                } else {
                    $show_support_nudge = false;
                }
                if ( $show_support_nudge && $save_count_modulo >= 0 ) {
                    $asenha_stats['support_nudge_last_shown_date'] = $current_date;
                    $asenha_stats['support_nudge_last_shown_save_count'] = $save_count;
                    update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
                }
            } else {
                if ( $save_count_modulo == 0 ) {
                    $support_nudge_last_shown_save_count = ( isset( $asenha_stats['support_nudge_last_shown_save_count'] ) ? $asenha_stats['support_nudge_last_shown_save_count'] : 0 );
                    if ( $save_count > $support_nudge_last_shown_save_count ) {
                        $asenha_stats['support_nudge_dismissed'] = false;
                        update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
                        $show_support_nudge = true;
                    } else {
                        $show_support_nudge = false;
                    }
                } else {
                    $show_support_nudge = false;
                }
            }
        }
        $first_save_date = ( isset( $asenha_stats['first_save_date'] ) ? $asenha_stats['first_save_date'] : '' );
        $last_save_date = ( isset( $asenha_stats['last_save_date'] ) ? $asenha_stats['last_save_date'] : '' );
        $asenha_stats_localized = array(
            'firstSaveDate'        => $first_save_date,
            'lastSaveDate'         => $last_save_date,
            'saveCount'            => $save_count,
            'isYearEndPromoPeriod' => $is_yearend_promo_period,
            'hideUpgradeNudge'     => $hide_upgrade_nudge,
            'hidePromoNudge'       => $hide_promo_nudge,
            'showSupportNudge'     => $show_support_nudge,
        );
    }
    wp_localize_script( 'asenha-admin-page', 'asenhaStats', $asenha_stats_localized );
}

/**
 * Inline CSS for Admin Menu Organizer in all wp-admin pages. Previously loaded externally as part of wp-admin.css file
 * 
 * @since 7.6.11
 */
function asenha_admin_menu_organizer_css() {
    ?>
	<style type="text/css">
	/* Admin Interface >> Admin Menu Organizer */
	#adminmenuwrap {
		height: auto !important;
	}

	.toplevel_page_wpide #adminmenuwrap {
		height: calc(100vh - var(--wpide-admin-bar-height)) !important;
	} /* Fix for when in WPIDE plugin's menu / admin page */

	.current.menu-top.hidden,
	.wp-has-current-submenu.hidden {
		display: list-item;
	}

	#adminmenu a.menu-top.hidden,
	ul#adminmenu a.wp-has-current-submenu.hidden {
		display: block;
	}

	/*! <fs_premium_only> */
	.always-hidden {
		display: none !important;
	}

	#adminmenu .wp-submenu a.hidden {
		display: none;
	}
	/*! </fs_premium_only> */
	</style>
	<?php 
}

/**
 * Dequeue scripts that prevents ASE settings page from working properly. Usually from plugins.
 * 
 * @since 6.3.3
 */
function asenha_dequeue_scritps() {
    if ( is_asenha() ) {
        // https://wordpress.org/plugins/user-activity-log/
        wp_dequeue_script( 'chats-js' );
        wp_dequeue_script( 'custom_wp_admin_js' );
        // https://wordpress.org/plugins/print-invoices-packing-slip-labels-for-woocommerce/
        wp_dequeue_script( 'print-invoices-packing-slip-labels-for-woocommerce' );
        wp_dequeue_script( 'print-invoices-packing-slip-labels-for-woocommerce-form-wizard' );
        // https://wordpress.org/plugins/wp-reading-progress/
        wp_dequeue_script( 'ruigehond006_admin_javascript' );
        // WordPress Mentions Légales plugin v1.2.3 by Jean-Baptiste Aramendy - http://jba-development.fr/
        wp_dequeue_script( 'jquery-ui' );
        wp_dequeue_script( 'wordpress-mentions-legales' );
        // https://wordpress.org/plugins/us-weather-widget-willyweather/
        wp_dequeue_script( 'self' );
        // iThemes Security Pro / Solid Security Pro
        wp_dequeue_script( 'itsec-core-admin-notices' );
        // WPML
        wp_dequeue_script( 'wpml-ate-jobs-sync-ui' );
        wp_dequeue_script( 'wpml-purify' );
        wp_dequeue_script( 'sitepress-scripts' );
        wp_dequeue_script( 'sitepress' );
        wp_dequeue_script( 'wpml-dismiss-notice' );
        wp_dequeue_script( 'wpml-tm-scripts' );
        wp_dequeue_script( 'otgs-installer-components-save-setting' );
        wp_dequeue_script( 'installer-dismiss-nag' );
        wp_dequeue_script( 'install-recommended_plugin' );
        wp_dequeue_script( 'icl-admin-notifier' );
        wp_dequeue_script( 'otgsPopoverTooltip' );
        // WPML String Translation
        wp_dequeue_script( 'wpml-theme-plugin-localization-scan' );
        // Asset Cleanup
        wp_dequeue_script( 'wpassetcleanup-script' );
    }
}

/**
 * Enqueue public scripts
 *
 * @since 3.9.0
 */
function asenha_public_scripts(  $hook_suffix  ) {
    // Get all WP Enhancements options, default to empty array in case it's not been created yet
    $options = get_option( 'admin_site_enhancements', array() );
    // External Permalinks
    $enable_external_permalinks = ( array_key_exists( 'enable_external_permalinks', $options ) ? $options['enable_external_permalinks'] : false );
    if ( $enable_external_permalinks ) {
        wp_enqueue_script(
            'asenha-public',
            ASENHA_URL . 'assets/js/external-permalinks.js',
            array(),
            ASENHA_VERSION,
            false
        );
        wp_localize_script( 'asenha-public', 'phpVars', array(
            'externalPermalinksEnabled' => $enable_external_permalinks,
        ) );
    }
    // Media Categories
    $enable_media_categories = ( array_key_exists( 'enable_media_categories', $options ) ? $options['enable_media_categories'] : false );
    if ( $enable_media_categories && !is_admin() && is_user_logged_in() ) {
        wp_enqueue_style(
            'asenha-media-categories-frontend',
            ASENHA_URL . 'assets/css/media-categories-frontend.css',
            array(),
            ASENHA_VERSION
        );
    }
    // Media Replacement
    $enable_media_replacement = ( array_key_exists( 'enable_media_replacement', $options ) ? $options['enable_media_replacement'] : false );
    if ( $enable_media_replacement && !is_admin() && is_user_logged_in() ) {
        wp_enqueue_style(
            'asenha-media-replace-frontend',
            ASENHA_URL . 'assets/css/media-replace-frontend.css',
            array(),
            ASENHA_VERSION
        );
    }
}

/**
 * Add admin bar styles for wp-admin and frontend
 * 
 * @since 6.2.1
 */
function asenha_admin_bar_item_js_css() {
    if ( is_user_logged_in() ) {
        ?>
		<!--<script></script>-->
		<style>
		#wp-admin-bar-user-info .avatar {
		    object-fit: cover;    
		}
		</style>
		<?php 
    }
}

/**
 * Add 'Access now' plugin action link.
 *
 * @since    1.0.0
 */
function asenha_plugin_action_links(  $links  ) {
    $settings_link = '<a href="tools.php?page=' . ASENHA_SLUG . '">' . __( 'Configure', 'admin-site-enhancements' ) . '</a>';
    array_unshift( $links, $settings_link );
    return $links;
}

/**
 * Modify footer text
 *
 * @since 1.0.0
 */
function asenha_footer_text() {
    // Show nothing
    ?>
	<?php 
}

/**
 * Change WP version number text in footer
 * 
 * @since 4.8.3
 */
function asenha_footer_version_text() {
    ?>
		ASE <a href="https://www.wpase.com/documentation/changelog/" target="_blank">v<?php 
    echo esc_html( ASENHA_VERSION );
    ?></a>
	<?php 
}

/**
 * Check if current screen is this plugin's main page
 *
 * @since 1.0.0
 */
function is_asenha() {
    $request_uri = sanitize_text_field( $_SERVER['REQUEST_URI'] );
    // e.g. /wp-admin/index.php?page=page-slug
    if ( strpos( $request_uri, 'page=' . ASENHA_SLUG ) !== false ) {
        return true;
        // Yes, this is the plugin's main page
    } else {
        return false;
        // Nope, this is NOT the plugin's page
    }
}

/**
 * Mark that user have supported ASE
 * 
 * @since 5.2.7
 */
function asenha_have_supported() {
    if ( isset( $_REQUEST ) && current_user_can( 'manage_options' ) ) {
        if ( wp_verify_nonce( sanitize_text_field( $_REQUEST['nonce'] ), 'asenha-' . get_current_user_id() ) ) {
            $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
            $asenha_stats['have_supported'] = true;
            $asenha_stats['support_nudge_dismissed'] = true;
            $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
            if ( $success ) {
                echo json_encode( array(
                    'success' => true,
                ) );
            } else {
                echo json_encode( array(
                    'success' => false,
                ) );
            }
        }
    }
}

/**
 * Dismiss support nudge
 * 
 * @since 5.8.2
 */
function asenha_dismiss_upgrade_nudge() {
    if ( isset( $_REQUEST ) && current_user_can( 'manage_options' ) ) {
        if ( wp_verify_nonce( sanitize_text_field( $_REQUEST['nonce'] ), 'asenha-' . get_current_user_id() ) ) {
            $current_date = date( 'Y-m-d', time() );
            $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
            $asenha_stats['upgrade_nudge_dismissed'] = true;
            $asenha_stats['upgrade_nudge_dismissed_date'] = $current_date;
            $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
            if ( $success ) {
                echo json_encode( array(
                    'success' => true,
                ) );
            } else {
                echo json_encode( array(
                    'success' => false,
                ) );
            }
        }
    }
}

/**
 * Dismiss promo nudge
 * 
 * @since 7.5.1
 */
function asenha_dismiss_promo_nudge() {
    if ( isset( $_REQUEST ) && current_user_can( 'manage_options' ) ) {
        if ( wp_verify_nonce( sanitize_text_field( $_REQUEST['nonce'] ), 'asenha-' . get_current_user_id() ) ) {
            $current_date = date( 'Y-m-d', time() );
            $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
            $asenha_stats['promo_nudge_dismissed'] = true;
            $asenha_stats['promo_nudge_dismissed_date'] = $current_date;
            $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
            if ( $success ) {
                echo json_encode( array(
                    'success' => true,
                ) );
            } else {
                echo json_encode( array(
                    'success' => false,
                ) );
            }
        }
    }
}

/**
 * Dismiss support nudge
 * 
 * @since 5.2.7
 */
function asenha_dismiss_support_nudge() {
    if ( isset( $_REQUEST ) && current_user_can( 'manage_options' ) ) {
        if ( wp_verify_nonce( sanitize_text_field( $_REQUEST['nonce'] ), 'asenha-' . get_current_user_id() ) ) {
            $asenha_stats = get_option( ASENHA_SLUG_U . '_stats', array() );
            $asenha_stats['support_nudge_dismissed'] = true;
            $success = update_option( ASENHA_SLUG_U . '_stats', $asenha_stats, false );
            if ( $success ) {
                echo json_encode( array(
                    'success' => true,
                ) );
            } else {
                echo json_encode( array(
                    'success' => false,
                ) );
            }
        }
    }
}