274 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			274 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * This file handles resetting of options.
 | 
						|
 *
 | 
						|
 * @package GP Premium
 | 
						|
 */
 | 
						|
 | 
						|
if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
	exit; // No direct access, please.
 | 
						|
}
 | 
						|
 | 
						|
add_action( 'generate_admin_right_panel', 'generate_premium_reset_metabox', 25 );
 | 
						|
/**
 | 
						|
 * Add the reset options to the Dashboard.
 | 
						|
 */
 | 
						|
function generate_premium_reset_metabox() {
 | 
						|
	?>
 | 
						|
	<div class="postbox generate-metabox" id="generate-reset">
 | 
						|
		<h3 class="hndle"><?php esc_html_e( 'Reset Settings', 'gp-premium' ); ?></h3>
 | 
						|
		<div class="inside">
 | 
						|
			<form method="post">
 | 
						|
				<span class="show-advanced"><?php esc_html_e( 'Advanced', 'gp-premium' ); ?></span>
 | 
						|
				<div class="reset-choices advanced-choices">
 | 
						|
					<label><input type="checkbox" name="module_group[]" value="generate_settings" checked /><?php _ex( 'Core', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_backgrounds', 'GENERATE_BACKGROUNDS' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_background_settings" checked /><?php _ex( 'Backgrounds', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_blog', 'GENERATE_BLOG' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_blog_settings" checked /><?php _ex( 'Blog', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_hooks', 'GENERATE_HOOKS' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_hooks" checked /><?php _ex( 'Hooks', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_page_header', 'GENERATE_PAGE_HEADER' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_page_header_settings" checked /><?php _ex( 'Page Header', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_secondary_nav', 'GENERATE_SECONDARY_NAV' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_secondary_nav_settings" checked /><?php _ex( 'Secondary Navigation', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_spacing', 'GENERATE_SPACING' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_spacing_settings" checked /><?php _ex( 'Spacing', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_menu_plus', 'GENERATE_MENU_PLUS' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_menu_plus_settings" checked /><?php _ex( 'Menu Plus', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_woocommerce', 'GENERATE_WOOCOMMERCE' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="generate_woocommerce_settings" checked /><?php _ex( 'WooCommerce', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
 | 
						|
					<?php if ( generatepress_is_module_active( 'generate_package_copyright', 'GENERATE_COPYRIGHT' ) ) { ?>
 | 
						|
						<label><input type="checkbox" name="module_group[]" value="copyright" checked /><?php _ex( 'Copyright', 'Module name', 'gp-premium' ); ?></label>
 | 
						|
					<?php } ?>
 | 
						|
				</div>
 | 
						|
				<p><input type="hidden" name="generate_reset_action" value="reset_settings" /></p>
 | 
						|
				<p style="margin-bottom:0">
 | 
						|
					<?php
 | 
						|
					$warning = 'return confirm("' . __( 'Warning: This will delete your settings and can not be undone.', 'gp-premium' ) . '")';
 | 
						|
					wp_nonce_field( 'generate_reset_settings_nonce', 'generate_reset_settings_nonce' );
 | 
						|
					submit_button(
 | 
						|
						__( 'Reset', 'gp-premium' ),
 | 
						|
						'button-primary',
 | 
						|
						'submit',
 | 
						|
						false,
 | 
						|
						array(
 | 
						|
							'onclick' => esc_js( $warning ),
 | 
						|
							'id' => '',
 | 
						|
						)
 | 
						|
					);
 | 
						|
					?>
 | 
						|
				</p>
 | 
						|
			</form>
 | 
						|
		</div>
 | 
						|
	</div>
 | 
						|
	<?php
 | 
						|
}
 | 
						|
 | 
						|
add_action( 'admin_init', 'generate_premium_process_reset' );
 | 
						|
/**
 | 
						|
 * Process the reset functions.
 | 
						|
 */
 | 
						|
function generate_premium_process_reset() {
 | 
						|
	if ( empty( $_POST['generate_reset_action'] ) || 'reset_settings' !== $_POST['generate_reset_action'] ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( ! wp_verify_nonce( $_POST['generate_reset_settings_nonce'], 'generate_reset_settings_nonce' ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( ! current_user_can( 'manage_options' ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	$theme_mods = array(
 | 
						|
		'font_body_variants',
 | 
						|
		'font_body_category',
 | 
						|
		'font_site_title_variants',
 | 
						|
		'font_site_title_category',
 | 
						|
		'font_site_tagline_variants',
 | 
						|
		'font_site_tagline_category',
 | 
						|
		'font_navigation_variants',
 | 
						|
		'font_navigation_category',
 | 
						|
		'font_secondary_navigation_variants',
 | 
						|
		'font_secondary_navigation_category',
 | 
						|
		'font_buttons_variants',
 | 
						|
		'font_buttons_category',
 | 
						|
		'font_heading_1_variants',
 | 
						|
		'font_heading_1_category',
 | 
						|
		'font_heading_2_variants',
 | 
						|
		'font_heading_2_category',
 | 
						|
		'font_heading_3_variants',
 | 
						|
		'font_heading_3_category',
 | 
						|
		'font_heading_4_variants',
 | 
						|
		'font_heading_4_category',
 | 
						|
		'font_heading_5_variants',
 | 
						|
		'font_heading_5_category',
 | 
						|
		'font_heading_6_variants',
 | 
						|
		'font_heading_6_category',
 | 
						|
		'font_widget_title_variants',
 | 
						|
		'font_widget_title_category',
 | 
						|
		'font_footer_variants',
 | 
						|
		'font_footer_category',
 | 
						|
		'generate_copyright',
 | 
						|
	);
 | 
						|
 | 
						|
	$settings = array(
 | 
						|
		'generate_settings',
 | 
						|
		'generate_background_settings',
 | 
						|
		'generate_blog_settings',
 | 
						|
		'generate_hooks',
 | 
						|
		'generate_page_header_settings',
 | 
						|
		'generate_secondary_nav_settings',
 | 
						|
		'generate_spacing_settings',
 | 
						|
		'generate_menu_plus_settings',
 | 
						|
		'generate_woocommerce_settings',
 | 
						|
	);
 | 
						|
 | 
						|
	$data = array(
 | 
						|
		'mods' => array(),
 | 
						|
		'options' => array(),
 | 
						|
	);
 | 
						|
 | 
						|
	foreach ( $theme_mods as $theme_mod ) {
 | 
						|
		if ( 'generate_copyright' === $theme_mod ) {
 | 
						|
			if ( in_array( 'copyright', $_POST['module_group'] ) ) {
 | 
						|
				remove_theme_mod( $theme_mod );
 | 
						|
			}
 | 
						|
		} else {
 | 
						|
			if ( in_array( 'generate_settings', $_POST['module_group'] ) ) {
 | 
						|
				remove_theme_mod( $theme_mod );
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	foreach ( $settings as $setting ) {
 | 
						|
		if ( in_array( $setting, $_POST['module_group'] ) ) {
 | 
						|
			delete_option( $setting );
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	// Delete our dynamic CSS option.
 | 
						|
	delete_option( 'generate_dynamic_css_output' );
 | 
						|
	delete_option( 'generate_dynamic_css_cached_version' );
 | 
						|
 | 
						|
	// Reset our dynamic CSS file updated time so it regenerates.
 | 
						|
	$dynamic_css_data = get_option( 'generatepress_dynamic_css_data', array() );
 | 
						|
 | 
						|
	if ( isset( $dynamic_css_data['updated_time'] ) ) {
 | 
						|
		unset( $dynamic_css_data['updated_time'] );
 | 
						|
	}
 | 
						|
 | 
						|
	update_option( 'generatepress_dynamic_css_data', $dynamic_css_data );
 | 
						|
 | 
						|
	// Delete any GeneratePress Site CSS in Additional CSS.
 | 
						|
	$additional_css = wp_get_custom_css_post();
 | 
						|
 | 
						|
	if ( ! empty( $additional_css ) ) {
 | 
						|
		$additional_css->post_content = preg_replace( '#(/\\* GeneratePress Site CSS \\*/).*?(/\\* End GeneratePress Site CSS \\*/)#s', '', $additional_css->post_content );
 | 
						|
		wp_update_custom_css_post( $additional_css->post_content );
 | 
						|
	}
 | 
						|
 | 
						|
	wp_safe_redirect( admin_url( 'themes.php?page=generate-options&status=reset' ) );
 | 
						|
	exit;
 | 
						|
}
 | 
						|
 | 
						|
add_action( 'admin_head', 'generate_reset_options_css', 100 );
 | 
						|
/**
 | 
						|
 * Add CSS to the dashboard.
 | 
						|
 */
 | 
						|
function generate_reset_options_css() {
 | 
						|
	$screen = get_current_screen();
 | 
						|
 | 
						|
	if ( ! is_object( $screen ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( 'appearance_page_generate-options' !== $screen->base ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	?>
 | 
						|
	<style>
 | 
						|
		#gen-delete {
 | 
						|
			display: none;
 | 
						|
		}
 | 
						|
 | 
						|
		.advanced-choices {
 | 
						|
			margin-top: 10px;
 | 
						|
			font-size: 95%;
 | 
						|
			opacity: 0.9;
 | 
						|
		}
 | 
						|
 | 
						|
		.advanced-choices:not(.show) {
 | 
						|
			display: none;
 | 
						|
		}
 | 
						|
 | 
						|
		.advanced-choices label {
 | 
						|
			display: block;
 | 
						|
		}
 | 
						|
 | 
						|
		.show-advanced {
 | 
						|
			font-size: 13px;
 | 
						|
			opacity: 0.8;
 | 
						|
			cursor: pointer;
 | 
						|
		}
 | 
						|
 | 
						|
		.show-advanced:after {
 | 
						|
			content: "\f347";
 | 
						|
			font-family: dashicons;
 | 
						|
			padding-left: 2px;
 | 
						|
			padding-top: 2px;
 | 
						|
			font-size: 10px;
 | 
						|
		}
 | 
						|
 | 
						|
		.show-advanced.active:after {
 | 
						|
			content: "\f343";
 | 
						|
		}
 | 
						|
	</style>
 | 
						|
	<?php
 | 
						|
}
 | 
						|
 | 
						|
add_action( 'admin_footer', 'generate_reset_options_scripts', 100 );
 | 
						|
/**
 | 
						|
 * Add scripts to the Dashboard.
 | 
						|
 */
 | 
						|
function generate_reset_options_scripts() {
 | 
						|
	$screen = get_current_screen();
 | 
						|
 | 
						|
	if ( ! is_object( $screen ) ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
 | 
						|
	if ( 'appearance_page_generate-options' !== $screen->base ) {
 | 
						|
		return;
 | 
						|
	}
 | 
						|
	?>
 | 
						|
	<script>
 | 
						|
		jQuery( function( $ ) {
 | 
						|
			$( '.show-advanced' ).on( 'click', function() {
 | 
						|
				$( this ).toggleClass( 'active' );
 | 
						|
				$( this ).next( '.advanced-choices' ).toggleClass( 'show' );
 | 
						|
			} );
 | 
						|
		} );
 | 
						|
	</script>
 | 
						|
	<?php
 | 
						|
}
 |