<?php

namespace HaoZiTeam\IPUA\Service;

defined( 'ABSPATH' ) || exit;

use HaoZiTeam\Setting\API;

/**
 * Class Setting
 * 插件设置服务
 * @package HaoZiTeam\IPUA\Service
 */
class Setting {
	private $setting_api;

	public function __construct() {
		$this->setting_api = new API();
		add_action( 'admin_init', [ $this, 'admin_init' ] );
		add_action( is_multisite() ? 'network_admin_menu' : 'admin_menu', [ $this, 'admin_menu' ] );
	}

	/**
	 * 挂载设置项
	 */
	public function admin_init() {

		$sections = [
			[
				'id'    => 'wp_ipua_setting',
				'title' => __( '设置', 'wp-ipua' )
			],
			[
				'id'          => 'wp_ipua_about',
				'title'       => __( '关于', 'wp-ipua' ),
				'show_submit' => false
			]
		];

		$fields = [
			'wp_ipua_setting' => [
				[
					'name'    => 'from',
					'label'   => __( 'IP 位置来源', 'wp-ipua' ),
					'desc'    => __( '可选纯真 IP 库或腾讯位置服务，选择纯真 IP 库则下方腾讯位置服务、位置缓存、属地格式配置不会生效', 'wp-ipua' ),
					'type'    => 'radio',
					'default' => 'qqwry',
					'options' => [
						'qqwry' => '纯真 IP 库',
						'tx'    => '腾讯位置服务'
					]
				],
				[
					'name'        => 'tx_key',
					'label'       => __( '腾讯位置服务 应用Key', 'wp-ipua' ),
					'desc'        => __( '输入腾讯位置服务的应用Key', 'wp-ipua' ),
					'type'        => 'text',
					'placeholder' => 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX',
					'default'     => ''
				],
				[
					'name'    => 'cache',
					'label'   => __( 'IP 位置缓存', 'wp-ipua' ),
					'desc'    => __( '为保证加载速度，强烈建议设置 3 个月及以上的缓存时间', 'wp-ipua' ),
					'type'    => 'select',
					'default' => 'no',
					'options' => [
						'no'  => __( '不缓存', 'wp-ipua' ),
						'1'   => __( '1天', 'wp-ipua' ),
						'7'   => __( '7天', 'wp-ipua' ),
						'30'  => __( '1月', 'wp-ipua' ),
						'60'  => __( '2月', 'wp-ipua' ),
						'90'  => __( '3月', 'wp-ipua' ),
						'180' => __( '6月', 'wp-ipua' ),
						'365' => __( '1年', 'wp-ipua' ),
					]
				],
				[
					'name'    => 'ip_format',
					'label'   => __( 'IP 属地格式', 'wp-ipua' ),
					'desc'    => __( '设置 IP 属地输出的格式', 'wp-ipua' ),
					'type'    => 'select',
					'default' => 'npc',
					'options' => [
						'npc'   => __( '国家省份城市', 'wp-ipua' ),
						'n-p-c' => __( '国家 省份 城市', 'wp-ipua' ),
						'np'    => __( '国家省份', 'wp-ipua' ),
						'n-p'   => __( '国家 省份', 'wp-ipua' ),
						'pc'    => __( '省份城市', 'wp-ipua' ),
						'p-c'   => __( '省份 城市', 'wp-ipua' ),
						'n'     => __( '国家', 'wp-ipua' ),
						'np2'   => __( '省份(海外显示国家)', 'wp-ipua' ),
						'p'     => __( '省份', 'wp-ipua' ),
						'c'     => __( '城市', 'wp-ipua' ),
					]
				],
				[
					'name'    => 'ua_format',
					'label'   => __( 'User-Agent 格式', 'wp-ipua' ),
					'desc'    => __( '设置 User-Agent 输出的格式', 'wp-ipua' ),
					'type'    => 'select',
					'default' => 'pb',
					'options' => [
						'pb'  => __( '平台名 浏览器名（Windows10 Edge）', 'wp-ipua' ),
						'pbv' => __( '平台名 浏览器名 版本（Windows10 Edge 108.0.1462.54）', 'wp-ipua' ),
						'p'   => __( '平台名（Windows10）', 'wp-ipua' ),
						'b'   => __( '浏览器名（Edge）', 'wp-ipua' ),
						'bv'  => __( '浏览器名 版本（Edge 108.0.1462.54）', 'wp-ipua' ),
					]
				],
				[
					'name'  => 'code',
					'label' => __( '代码集成', 'wp-ipua' ),
					'type'  => 'html',
					'html'  => __( '<p>请在主题的评论模板开头加入下方代码以引用 <b>WP-IPUA</b> 的函数:</p><code>use function HaoZiTeam\IPUA\get_ip_address;</code></br><code>use function HaoZiTeam\IPUA\get_ua_info;</code><p>然后在输出评论者的语句附近调用输出函数:</p><code>&lt;?php echo get_ip_address(); ?&gt;</code></br><code>&lt;?php echo get_ua_info(); ?&gt;</code><p>输出格式为纯文本，你可以自行调整输出内容的 CSS 样式。</p><p>目前已支持在评论循环中自动提取评论者 IP 和 User-Agent，如果你在使用 bbPress 等非 WordPress 默认评论环境，请自行传入 IP 和 User-Agent 信息给函数。</p>',
						'wp-ipua' )
				]
			],
			'wp_ipua_about'   => [
				[
					'name'  => 'about',
					'label' => __( '关于插件', 'wp-ipua' ),
					'type'  => 'html',
					'html'  => __( '<h4>官网：<a href="https://wepublish.cn" target="_blank">https://wepublish.cn</a> | 隐私协议：<a href="https://lbs.qq.com/userAgreements/agreements/terms" target="_blank">https://lbs.qq.com/userAgreements/agreements/terms</a></h4><p><b>WP-IPUA</b>是WordPress本土化的一部分，其作用是提供简易的方法为WordPress添加评论IP属地显示及User-Agent显示。</p><p>该插件由<b>WePublish@耗子</b>负责维护，使用问题与反馈交流QQ群：<a href="https://jq.qq.com/?_wv=1027&k=I1oJKSTH">12370907</a></p>',
						'wp-ipua' )
				]
			]
		];

		$this->setting_api->set_sections( $sections );
		$this->setting_api->set_fields( $fields );
		$this->setting_api->admin_init();
	}

	/**
	 * 挂载设置页面
	 */
	public function admin_menu() {
		// 后台设置
		add_submenu_page(
			is_multisite() ? 'settings.php' : 'options-general.php',
			esc_html__( 'WP-IPUA', 'wp-ipua' ),
			esc_html__( 'WP-IPUA', 'wp-ipua' ),
			is_multisite() ? 'manage_network_options' : 'manage_options',
			'wp-ipua',
			array( $this, 'setting_page' )
		);
		// 插件页设置
		add_filter( 'plugin_action_links', function ( $links, $file ) {
			if ( 'wp-ipua/wp-ipua.php' !== $file ) {
				return $links;
			}
			$settings_link = '<a href="' . add_query_arg( array( 'page' => 'wp-ipua' ),
					is_multisite() ? 'settings.php' : 'options-general.php' ) . '">' . esc_html__( '设置',
					'wp-ipua' ) . '</a>';
			array_unshift( $links, $settings_link );

			return $links;
		}, 10, 2 );
	}

	/**
	 * 设置页面模版
	 */
	public function setting_page() {
		echo '<h1>WP-IPUA</h1>';
		echo '<h2>为你的WordPress网站提供作者IP属地及User-Agent展示。</h2><span style="float: right; padding-right: 20px;">By: 耗子开源</span>';
		echo '<div class="wrap">';

		$this->setting_api->show_navigation();
		$this->setting_api->show_forms();

		echo '</div>';
	}
}
