<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/* $menu_slug スラグ */
function haumenu_define_menu_slug(){
	return 'haumenu-admin-page';
}

/***** 設定メニューへ独自メニューを追加 *****/
function haumenu_init_main_menu() {
	add_menu_page(
		__('HimaArt Utilitiy(New)','hima-art-utility'), // $page_title ページのタイトル（ブラウザのタブへ表示）
		__('HA Utilitiy(New)','hima-art-utility'), // $menu_title メニューのタイトル
		'manage_options', // $capability 権限
		haumenu_define_menu_slug(), // $menu_slug スラグ
		'haumenu_main_menu_page', // $callback コールバック関数
		'dashicons-screenoptions', // $icon_url アイコン
		9998 //$position メニューを表示する位置
	);
}
add_action('admin_menu', 'haumenu_init_main_menu');

/*** メニューページの中身を作成 ***/
/* メインメニュー */
function haumenu_main_menu_page() {
	if ( ! current_user_can( 'manage_options' ) ) {
		wp_die( esc_html(__( 'You do not have sufficient permissions to access this page.' ,'hima-art-utility') ) );
	}

	//リセットボタンの文字列
	$reset_button_text = __('Reset Setting','hima-art-utility');

	//削除確認ダイアログに表示するメッセージ
	$confirm_message = esc_js(__('Are you sure you want to reset your settings ?', 'hima-art-utility'));
	
	?>
	<div class="wrap">
		<h1><?php esc_html_e('HimaArt Utilitiy Setting','hima-art-utility'); ?></h1>
		<p><?php esc_html_e('Himart Utility plug-in setting main screen','hima-art-utility'); ?></p>
		<p><?php esc_html_e('By making various settings, you can improve the security of your WordPress site, optimize the site, and improve usability','hima-art-utility'); ?></p>
		<p style="font-size:1.1em; color:red; font-weight:500;"><?php esc_html_e('Notice:This plugin was developed for the site that I myself manage, and does not necessarily work with all sites and themes','hima-art-utility'); ?></p>
		<p style="font-size:1.1em; color:red; font-weight:500;"><?php esc_html_e('Notice:It is necessary for you to deal with troubles during use, and we do not take any responsibility','hima-art-utility'); ?></p>

	<form method="post" action="">
	<?php
		settings_fields( haumenu_define_menu_slug() ); // 設定ページのスラグ
		do_settings_sections( haumenu_define_menu_slug() );  // 設定ページのスラグ
            
		// WordPressのnonceフィールドを生成
		wp_nonce_field('ha_utility_reset_options', 'ha_utility_reset_nonce');
	?>
		<input type="hidden" name="ha_utility_reset_action" value="haup-reset">
		<p><input type="submit" value="<?php echo esc_html($reset_button_text); ?>" class="button button-primary" id="hautility-plugin-reset-button"></p>
	</form>
	</div>
<!-- リセット時の確認ダイアログ表示 -->
<script type="text/javascript">
	document.getElementById('hautility-plugin-reset-button').addEventListener('click', function(event) {

	var confirmMessage = "<?php echo esc_html($confirm_message); ?>";
            
		if (!confirm(confirmMessage)) {
			event.preventDefault(); // フォーム送信をキャンセル
		}
	});
</script>
<?php
}

//リセットボタンクリック後の処理
function haumenu_reset_button_click_function() {
if (isset($_POST['ha_utility_reset_action']) && $_POST['ha_utility_reset_action'] === 'haup-reset') {
	// nonceの検証
		if (!isset($_POST['ha_utility_reset_nonce']) || !wp_verify_nonce(sanitize_text_field( wp_unslash($_POST['ha_utility_reset_nonce'])), 'ha_utility_reset_options')) {
			wp_die('nonce verification failed');
		}

	// 削除するオプション
	delete_option( haumenu_define_option_name_01_optimize() );
	delete_option( haumenu_define_option_name_02_optimize() );
	delete_option( haumenu_define_option_name_03_optimize() );
	delete_option( haumenu_define_option_name_04_optimize() );
	delete_option( haumenu_define_option_name_05_optimize() );

	delete_option( haumenu_define_option_name_01_ana_ad() );
	delete_option( haumenu_define_option_name_02_ana_ad() );
	delete_option( haumenu_define_option_name_03_ana_ad() );
	delete_option( haumenu_define_option_name_04_ana_ad() );
	delete_option( haumenu_define_option_name_05_ana_ad() );

	delete_option( haumenu_define_option_name_01_security() );
	delete_option( haumenu_define_option_name_02_security() );
	delete_option( haumenu_define_option_name_03_security() );
	delete_option( haumenu_define_option_name_04_security() );

	delete_option( haumenu_define_option_name_01_utility() );
	delete_option( haumenu_define_option_name_02_utility() );
	delete_option( haumenu_define_option_name_03_utility() );
	delete_option( haumenu_define_option_name_04_utility() );
	delete_option( haumenu_define_option_name_05_utility() );
	delete_option( haumenu_define_option_name_06_utility() );
	delete_option( haumenu_define_option_name_08_utility() );

	delete_option( haumenu_define_option_name_01_addcontent() );
	delete_option( haumenu_define_option_name_02_addcontent() );
	delete_option( haumenu_define_option_name_03_addcontent() );
	delete_option( haumenu_define_option_name_04_addcontent() );
	delete_option( haumenu_define_option_name_05_addcontent() );
	delete_option( haumenu_define_option_name_06_addcontent() );
	delete_option( haumenu_define_option_name_07_addcontent() );
	delete_option( haumenu_define_option_name_08_addcontent() );
	delete_option( haumenu_define_option_name_09_addcontent() );
	delete_option( haumenu_define_option_name_10_addcontent() );
	delete_option( haumenu_define_option_name_11_addcontent() );
	delete_option( haumenu_define_option_name_12_addcontent() );

	delete_option( haumenu_define_option_name_01_blocktheme() );
	delete_option( haumenu_define_option_name_02_blocktheme() );
	delete_option( haumenu_define_option_name_03_blocktheme() );

	delete_option( haumenu_define_option_name_01_blockoption() );
	delete_option( haumenu_define_option_name_02_blockoption() );
	delete_option( haumenu_define_option_name_03_blockoption() );
	delete_option( haumenu_define_option_name_04_blockoption() );
	delete_option( haumenu_define_option_name_05_blockoption() );

	// リダイレクトしてメッセージを表示
		wp_safe_redirect(add_query_arg('haup-reset', 'true', wp_get_referer()));
		exit;
}
}
add_action('admin_init', 'haumenu_reset_button_click_function');

// リセット成功メッセージの表示
function haumenu_reset_admin_notices() {
	//完了メッセージ
	$suc_text = __('All settings reset completed','hima-art-utility');

	//nonceフィールドがなければ無視する
	if ( !isset( $_POST['ha_utility_reset_nonce'] ) ){
		return;
	}

	//nounceが正しくなければ無視する
		if (!wp_verify_nonce(sanitize_text_field( wp_unslash($_POST['ha_utility_reset_nonce'])), 'ha_utility_reset_options')) {
			return;
		}

	if (isset($_GET['haup-reset']) && $_GET['haup-reset'] === 'true') {
	?>
		<div class="notice notice-success is-dismissible">
			<p><?php echo esc_html($suc_text); ?></p>
		</div>
	<?php
	}
}
add_action('admin_notices', 'haumenu_reset_admin_notices');


/*** メインメニューページの詳細を作成 ***/
/*** 設定のセクション追加 ***/
function haumenu_main_menu_section() {
/* 各サブメニューへのリンク */
	add_settings_section(
		'haumenu-section-main01', //セクションID
		__('Links to various setting screens','hima-art-utility'), //セクションの見出し
		'haumenu_section_description_main_01',// セクションの説明文を表示するための関数.
		haumenu_define_menu_slug() //設定ページのスラグ
	);

/* プラグイン設定のリセット */
	add_settings_section(
		'haumenu-section-main02', //セクションID
		__('Reset all plugin settings','hima-art-utility'), //セクションの見出し
		'haumenu_section_description_main_02', // セクションの説明文を表示するための関数.
		haumenu_define_menu_slug() //設定ページのスラグ
	);
}
add_action( 'admin_init', 'haumenu_main_menu_section' );

/* セクションの説明文を表示するための関数 */
function haumenu_section_description_main_01() {
	$menu_section_description_main_01 = __('Settings for this plug-in can be made from the following submenu screens','hima-art-utility');

/*** 各セクションへのリンクと説明文 ***/
//セキュリティのリンクと説明
	$sec_title = __('Security & Anti Spam Settings','hima-art-utility');
	$sec_des = __('It is a setting of the function to improve the security and anti spam of the WordPress site','hima-art-utility');

//コンテンツ追加のリンクと説明
	$addcon_title = __('Add Content Settings','hima-art-utility');
	$addcon_des = __('Settings for inserting content into the site and using convenient shortcodes','hima-art-utility');

//サイト最適化のリンクと説明
	$opti_title = __('Site Optimize settings','hima-art-utility');
	$opti_des = __('Setting screen for site optimization and SEO related items','hima-art-utility');

//便利機能のリンクと説明
	$util_title = __('Utility settings','hima-art-utility');
	$util_des = __('Settings for functions that improve usability, such as controlling WordPress core functions and editing screens','hima-art-utility');

//メディア機能のリンクと説明
	$media_title = __('Media settings','hima-art-utility');
	$media_des = __('This is a useful feature for managing media in WordPress.','hima-art-utility');

//GA & Adsenseのリンクと説明
	$ana_adsense_title = __('Analytics & Ad','hima-art-utility');
	$ana_adsense_des = __('Google Analytics analysis code and Adsense ad code settings','hima-art-utility');

//ブロックテーマ向け機能のリンクと説明
	$for_tt2_title = __('For Block Theme Utility','hima-art-utility');
	$for_tt2_des = __('This is a function setting that is considered useful when using block themes such as Twenty Twenty-Two.','hima-art-utility');

//ブロックオプション機能のリンクと説明
	$blop_title = __('Block Options','hima-art-utility');
	$blop_des = __('Optional design settings for standard WordPress blocks','hima-art-utility');

	$admin_url = get_site_url(); 

/*** リンクと説明文を出力 ***/
	echo '<p>'.esc_html($menu_section_description_main_01).'</p>
		<ul style="list-style: initial;margin-left: 20px;">
		<li>		<h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_security">'.esc_html($sec_title).'</a></h3><p>'.esc_html($sec_des).'</p></li>
		<li><h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_addcontent">'.esc_html($addcon_title).'</a></h3><p>'.esc_html($addcon_des).'</p></li>
		<li><h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_optimize">'.esc_html($opti_title).'</a></h3><p>'.esc_html($opti_des).'</p></li>
		<li><h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_utility">'.esc_html($util_title).'</a></h3><p>'.esc_html($util_des).'</p></li>
		<li><h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_media">'.esc_html($media_title).'</a></h3><p>'.esc_html($media_des).'</p></li>
		<li><h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_ana_ad">'.esc_html($ana_adsense_title).'</a></h3><p>'.esc_html($ana_adsense_des).'</p></li>
		<li><h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_blocktheme">'.esc_html($for_tt2_title).'</a></h3><p>'.esc_html($for_tt2_des).'</p></li>
		<li><h3><a href="'.esc_url($admin_url).'/wp-admin/admin.php?page=haumenu_page_blockoption">'.esc_html($blop_title).'</a></h3><p>'.esc_html($blop_des).'</p></li>
		</ul>';
}

/* セクションの説明文を表示するための関数 */
function haumenu_section_description_main_02() {
	$menu_section_description_main_02 = __('Deletes all settings information for this plugin and returns it to the state it was in when it was installed.','hima-art-utility');
	$menu_section_description_main_03 = __('Please note that you cannot undo this action once it has been performed.','hima-art-utility');
	echo '<p>'.esc_html($menu_section_description_main_02).'</p>';
	echo '<p class="haup-admin-font-red">'.esc_html($menu_section_description_main_03).'</p>';
}

/*** 子要素の表示コントロール用jsを読み込む ***/
function haup_setting_control_js_init(){
	wp_register_script(
		'haup-child-setting-control-js',
		plugin_dir_url( __FILE__ ) .'child-setting-view-control.js', 
		array(),
		haup_plugin_version(),
		array( 
			'strategy'  => 'defer',
			'in_footer' => true,// Note: This is the default value.
		)
	);

	wp_enqueue_script('haup-child-setting-control-js');

}
add_action('admin_enqueue_scripts','haup_setting_control_js_init');


/***** 各メニューの呼び出し *****/
/* セキュリティメニュー */
require_once (__DIR__ .'/security/menu-panel.php');

/* 解析＆広告メニュー */
require_once (__DIR__ .'/analytics-advert/menu-panel.php');

/* 最適化 */
require_once (__DIR__ .'/optimize/menu-panel.php');

/* コンテンツ追加 */
require_once (__DIR__ .'/add-content/menu-panel.php');

/* 便利機能 */
require_once (__DIR__ .'/utility/menu-panel.php');

/* メディア */
require_once (__DIR__ .'/media/menu-panel.php');

/* For Block Theme */
require_once (__DIR__ .'/for-block-theme/menu-panel.php');

/* ブロックオプション */
require_once (__DIR__ .'/block-option/menu-panel.php');