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

/***** 規定値の設定 *****/
/* $parent_slug メインメニューのスラグ */
//haumenu_define_menu_slug()

/* $menu_slug サブメニューのスラグ */
function haumenu_define_slug_security(){
	return 'haumenu_page_security';
}

/*** ユーザーとログインのセキュリティ ***/
/* セクションID */
function haumenu_define_section_id_01_security(){
	return 'haumenu-section-01-security';
}

/* タブのスラグ */
function haumenu_define_tab_slug_01_security(){
	return 'haumenu-tab-slug-01-security';
}

/* $option_group 設定グループ名 */
function haumenu_define_option_group_01_security(){
	return 'haumenu-option-group-01-security';
}

/* $option_name 設定名 */
function haumenu_define_option_name_01_security(){
	return 'hautility-option-01-security';
}

/* get_option */
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
function GetOP01_security(){
	$output = get_option(haumenu_define_option_name_01_security() , [] );
	return $output;
}

/*** サイト全体のセキュリティ ***/
/* セクションID */
function haumenu_define_section_id_02_security(){
	return 'haumenu-section-02-security';
}

/* タブのスラグ */
function haumenu_define_tab_slug_02_security(){
	return 'haumenu-tab-slug-02-security';
}

/* $option_group 設定グループ名 */
function haumenu_define_option_group_02_security(){
	return 'haumenu-option-group-02-security';
}

/* $option_name 設定名 */
function haumenu_define_option_name_02_security(){
	return 'hautility-option-02-security';
}

/* get_option */
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
function GetOP02_security(){
	$output = get_option(haumenu_define_option_name_02_security() , [] );
	return $output;
}

/*** スパム対策 ***/
/* セクションID */
function haumenu_define_section_id_03_security(){
	return 'haumenu-section-03-security';
}

/* タブのスラグ */
function haumenu_define_tab_slug_03_security(){
	return 'haumenu-tab-slug-03-security';
}

/* $option_group 設定グループ名 */
function haumenu_define_option_group_03_security(){
	return 'haumenu-option-group-03-security';
}

/* $option_name 設定名 */
function haumenu_define_option_name_03_security(){
	return 'hautility-option-03-security';
}

/* get_option */
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
function GetOP03_security(){
	$output = get_option(haumenu_define_option_name_03_security() , [] );
	return $output;
}

/*** SSL通信 ***/
/* セクションID */
function haumenu_define_section_id_04_security(){
	return 'haumenu-section-04-security';
}

/* タブのスラグ */
function haumenu_define_tab_slug_04_security(){
	return 'haumenu-tab-slug-04-security';
}

/* $option_group 設定グループ名 */
function haumenu_define_option_group_04_security(){
	return 'haumenu-option-group-04-security';
}

/* $option_name 設定名 */
function haumenu_define_option_name_04_security(){
	return 'hautility-option-04-security';
}

/* get_option */
// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound
function GetOP04_security(){
	$output = get_option(haumenu_define_option_name_04_security() , [] );
	return $output;
}

/*****  サブメニューの追加 *****/
/* サブメニューの追加 */
function haumenu_add_submenu_scurity() {
	add_submenu_page(
		haumenu_define_menu_slug(), // $parent_slug メインメニューのスラグ
		__('Security & Anti Spam','hima-art-utility'), //設定ページのタイトル
		__('Security & Anti Spam','hima-art-utility'), //管理画面メニューに表示される名前
		'manage_options', // $capability 権限
		haumenu_define_slug_security(), // $menu_slug サブメニューのスラグ
		'haumenu_setting_screen_security', // $callback コールバック関数
		1 //$position サブメニューを表示する位置
	);
}
add_action( 'admin_menu', 'haumenu_add_submenu_scurity' );

/***** このサブメニューに表示させるセクションの登録 *****/
function haumenu_add_section_security(){
// ユーザーとログインのセキュリティ
	add_settings_section(
		haumenu_define_section_id_01_security(), // セクションID
		__('User and login security settings','hima-art-utility'), // セクションタイトル
		'haumenu_section_callback_01_security', // セクションの説明を表示するコールバック関数
		haumenu_define_tab_slug_01_security() // タブのスラグ
	);

// サイト全体のセキュリティ
	add_settings_section(
		haumenu_define_section_id_02_security(), // セクションID
		__('Site-wide security settings','hima-art-utility'), // セクションタイトル
		'haumenu_section_callback_02_security', // セクションの説明を表示するコールバック関数
		haumenu_define_tab_slug_02_security() // タブのスラグ
	);

// スパム対策
	add_settings_section(
		haumenu_define_section_id_03_security(), // セクションID
		__('Antispam settings','hima-art-utility'), // セクションタイトル
		'haumenu_section_callback_03_security', // セクションの説明を表示するコールバック関数
		haumenu_define_tab_slug_03_security() // タブのスラグ
	);

// SSL通信
	add_settings_section(
		haumenu_define_section_id_04_security(), // セクションID
		__('SSL communication settings','hima-art-utility'), // セクションタイトル
		'haumenu_section_callback_04_security', // セクションの説明を表示するコールバック関数
		haumenu_define_tab_slug_04_security() // タブのスラグ
	);

}
add_action('admin_init', 'haumenu_add_section_security');

/*** 説明文のコールバック ***/
/* ユーザーとログインのセキュリティの説明文 */
function haumenu_section_callback_01_security() {
	$content01 =__('It is a setting of a function useful for unauthorized login countermeasures','hima-art-utility');
	$content02 =__('It is a setting for adding restrictions at the time of user registration','hima-art-utility');
	echo '<p>'.esc_html($content01).'</p>';
	echo '<p>'.esc_html($content02).'</p>';
}

/* サイト全体のセキュリティの説明文 */
function haumenu_section_callback_02_security() {
	$content01 =__('It is a useful function to improve the security of your WordPress site','hima-art-utility');
	echo '<p>'.esc_html($content01).'</p>';
}

/* スパム対策の説明文 */
function haumenu_section_callback_03_security() {
	$content01 =__('It is a useful function to anti spam of your WordPress site','hima-art-utility');
	echo '<p>'.esc_html($content01).'</p>';
}

/* SSL通信の説明文 */
function haumenu_section_callback_04_security() {
	$desc_content05a =__('Settings for sites accessed and managed via SSL communication (https://~)','hima-art-utility');
	$desc_content05aa =__('Never use this together with other plug-ins that have functions to assist SSL communication!','hima-art-utility');
	$desc_content05b =__('This function adds code to the .htaccess file. Please note that it does not check whether the same code already exists.','hima-art-utility');
	$desc_content05c =__('This function is a beta function. Please note that there is a possibility that problems may occur, so please use after acknowledging.','hima-art-utility');
	$desc_content05d =__('If you do not fully understand the meaning of the settings, please avoid the following settings as it may cause problems.','hima-art-utility');
	$desc_content05e =__('This setting is valid only for WordPress sites (Apache or compatible servers) with .htaccess files. Otherwise, problems may occur.','hima-art-utility');

	
	echo '<p>'.esc_html($desc_content05a).'</p>
	<p style="color:red;font-weight:bolder;">'.esc_html($desc_content05aa).'</p>
	<p style="color:green;font-weight:bolder;">'.esc_html($desc_content05b).'</p>
	<p style="color:red;font-weight:bolder;">'.esc_html($desc_content05c).'</p>
	<p style="color:red;font-weight:bolder;">'.esc_html($desc_content05d).'</p>
	<p style="color:red;font-weight:bolder;">'.esc_html($desc_content05e).'</p>'
	;
}

/***** 設定グループを追加 *****/
function haumenu_register_setting_security(){
/* ユーザーとログインのセキュリティ */
	register_setting(
		haumenu_define_option_group_01_security(), // $option_group 設定グループ名
		haumenu_define_option_name_01_security(), // $option_name 設定名
		[
			'sanitize_callback' => 'haumenu_sanitize_security_user_security',
		] //$args サニタイズ（データの無害化）関数の呼び出し
	);

/* サイト全体のセキュリティ */
	register_setting(
		haumenu_define_option_group_02_security(), // $option_group 設定グループ名
		haumenu_define_option_name_02_security(), // $option_name 設定名
		[
			'sanitize_callback' => 'haumenu_sanitize_security_site_security',
		] //$args サニタイズ（データの無害化）関数の呼び出し
	);


/* スパム対策 */
	register_setting(
		haumenu_define_option_group_03_security(), // $option_group 設定グループ名
		haumenu_define_option_name_03_security(), // $option_name 設定名
		[
			'sanitize_callback' => 'haumenu_sanitize_security_spam',
		] //$args サニタイズ（データの無害化）関数の呼び出し
	);

/* SSL通信 */
	register_setting(
		haumenu_define_option_group_04_security(), // $option_group 設定グループ名
		haumenu_define_option_name_04_security(), // $option_name 設定名
		[
			'sanitize_callback' => 'haumenu_sanitize_security_ssl',
		] //$args サニタイズ（データの無害化）関数の呼び出し
	);

}
add_action('admin_init', 'haumenu_register_setting_security');

/***** 設定画面内に表示させる内容 *****/
function haumenu_setting_screen_security() {
?>
<div class="wrap">
	<h1><?php esc_html_e('HimaArt Utilitiy Security Setting','hima-art-utility'); ?></h1>
	<p><?php esc_html_e('It is a setting of the function to improve the security of the WordPress site','hima-art-utility'); ?></p>

	<?php settings_errors(); //更新時のメッセージ表示?>
<?php
//クリックしたらタブを開く（初期はtabs_01を開く）
if ( ! isset( $_POST['haumenu_admin_panel_nonce_field'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash($_POST['haumenu_admin_panel_nonce_field'])), 'haumenu_admin_panel_nonce_action' ) ) {
if( isset( $_GET[ 'tab' ] )) {
	$active_tab = sanitize_text_field(wp_unslash($_GET[ 'tab' ]));
}else{
	$active_tab = 'tabs_01';
}
}
?>

	<?php //ページスラグとタブスラグを変更すること ?>
	<h2 class="nav-tab-wrapper">
		<a href="?page=<?php echo esc_html(haumenu_define_slug_security()); ?>&tab=tabs_01" class="nav-tab <?php echo $active_tab == 'tabs_01' ? 'nav-tab-active' : ''; ?>">
			<?php esc_html_e('User and Login','hima-art-utility'); ?>
		</a>

		<a href="?page=<?php echo esc_html(haumenu_define_slug_security()); ?>&tab=tabs_02" class="nav-tab <?php echo $active_tab == 'tabs_02' ? 'nav-tab-active' : ''; ?>">
			<?php esc_html_e('Site-wide','hima-art-utility'); ?>
		</a>

		<a href="?page=<?php echo esc_html(haumenu_define_slug_security()); ?>&tab=tabs_03" class="nav-tab <?php echo $active_tab == 'tabs_03' ? 'nav-tab-active' : ''; ?>">
			<?php esc_html_e('Anti-spam','hima-art-utility'); ?>
		</a>

		<a href="?page=<?php echo esc_html(haumenu_define_slug_security()); ?>&tab=tabs_04" class="nav-tab <?php echo $active_tab == 'tabs_04' ? 'nav-tab-active' : ''; ?>">
			<?php esc_html_e('SSL communication','hima-art-utility'); ?>
		</a>

	</h2>

<form action="options.php" method="post">
<?php wp_nonce_field( 'haumenu_admin_panel_nonce_action', 'haumenu_admin_panel_nonce_field' ); ?>

	<?php 
//詳細項目の「表示させるタブのスラグ」によって設定内容を表示させるタブを分ける
	if( $active_tab == 'tabs_01') { 
		settings_fields( haumenu_define_option_group_01_security() ); //$option_group 設定グループ名
		do_settings_sections( haumenu_define_tab_slug_01_security() ); //タブのスラグ
	} elseif( $active_tab == 'tabs_02' ) { 
		settings_fields( haumenu_define_option_group_02_security() ); //$option_group 設定グループ名
		do_settings_sections( haumenu_define_tab_slug_02_security() ); //タブのスラグ
	} elseif( $active_tab == 'tabs_03' ) { 
		settings_fields( haumenu_define_option_group_03_security() ); //$option_group 設定グループ名
		do_settings_sections( haumenu_define_tab_slug_03_security() ); //タブのスラグ
	} elseif( $active_tab == 'tabs_04' ) { 
		settings_fields( haumenu_define_option_group_04_security() ); //$option_group 設定グループ名
		do_settings_sections( haumenu_define_tab_slug_04_security() ); //タブのスラグ
	}else{}

		// 保存ボタンを生成
				submit_button(); 
		?>

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

/*** 詳細設定項目の呼び出し ***/
/* ユーザーとログイン */
require_once (__DIR__ .'/user-security/setting.php');

/* サイト全体 */
require_once (__DIR__ .'/site-security/setting.php');

/* スパム対策 */
require_once (__DIR__ .'/spam/setting.php');

/* SSL通信 */
require_once (__DIR__ .'/ssl/setting.php');

/*** サニタイズ関数の呼び出し ***/
/* ユーザーとログイン */
require_once (__DIR__ .'/user-security/sanitize.php');

/* サイト全体 */
require_once (__DIR__ .'/site-security/sanitize.php');

/* スパム対策 */
require_once (__DIR__ .'/spam/sanitize.php');

/* SSL通信 */
require_once (__DIR__ .'/ssl/sanitize.php');