wp/wp-content/plugins/option-tree/includes/class-ot-settings.php
author ymh <ymh.work@gmail.com>
Mon, 14 Oct 2019 18:35:50 +0200
changeset 11 bf1778c34b9a
permissions -rw-r--r--
upgrade optiontree
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * OptionTree Settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * @package OptionTree
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
if ( ! defined( 'OT_VERSION' ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
	exit( 'No direct script access allowed' );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
if ( ! class_exists( 'OT_Settings' ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
	/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
	 * OptionTree Settings class.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
	 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
	 * This class loads all the methods and helpers specific to a Settings page.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
	 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
	class OT_Settings {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
		 * An array of options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
		 * @var array
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
		private $options;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
		 * Page hook for targeting admin page.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
		 * @var string
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
		private $page_hook;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
		 * Constructor
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
		 * @param array $args An array of options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
		public function __construct( $args ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
			$this->options = $args;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
			// Return early if not viewing an admin page or no options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
			if ( ! is_admin() || ! is_array( $this->options ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
				return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
			// Load everything.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
			$this->hooks();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
		 * Execute the WordPress Hooks
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
		public function hooks() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
			/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
			 * Filter the `admin_menu` action hook priority.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
			 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
			 * @since 2.5.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
			 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
			 * @param int $priority The priority. Default '10'.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
			 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
			$priority = apply_filters( 'ot_admin_menu_priority', 10 );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
			// Add pages & menu items.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
			add_action( 'admin_menu', array( $this, 'add_page' ), $priority );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
			// Register sections.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
			add_action( 'admin_init', array( $this, 'add_sections' ) );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
			// Register settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
			add_action( 'admin_init', array( $this, 'add_settings' ) );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
			// Reset options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
			add_action( 'admin_init', array( $this, 'reset_options' ), 10 );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
			// Initialize settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
			add_action( 'admin_init', array( $this, 'initialize_settings' ), 11 );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
		 * Loads each admin page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
		 * @return bool
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
		public function add_page() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			// Loop through options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
			foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
				// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
				foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
					/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
					 * Theme Check... stop nagging me about this kind of stuff.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
					 * The damn admin pages are required for OT to function, duh!
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
					 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
					$theme_check_bs  = 'add_menu_' . 'page'; // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
					$theme_check_bs2 = 'add_submenu_' . 'page'; // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
					// Load page in WP top level menu.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
					if ( ! isset( $page['parent_slug'] ) || empty( $page['parent_slug'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
						$page_hook = $theme_check_bs(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
							$page['page_title'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
							$page['menu_title'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
							$page['capability'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
							$page['menu_slug'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
							array( $this, 'display_page' ),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
							$page['icon_url'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
							$page['position']
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
						);
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
						// Load page in WP sub menu.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
					} else {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
						$page_hook = $theme_check_bs2(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
							$page['parent_slug'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
							$page['page_title'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
							$page['menu_title'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
							$page['capability'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
							$page['menu_slug'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
							array( $this, 'display_page' )
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
						);
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
					// Only load if not a hidden page.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
					if ( ! isset( $page['hidden_page'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
						// Associate $page_hook with page id.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
						$this->page_hook[ $page['id'] ] = $page_hook;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
						// Add scripts.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
						add_action( 'admin_print_scripts-' . $page_hook, array( $this, 'scripts' ) );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
						// Add styles.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
						add_action( 'admin_print_styles-' . $page_hook, array( $this, 'styles' ) );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
						// Add contextual help.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
						add_action( 'load-' . $page_hook, array( $this, 'help' ) );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
		 * Loads the scripts
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
		public function scripts() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
			ot_admin_scripts();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
		 * Loads the styles
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
		public function styles() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
			ot_admin_styles();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
		 * Loads the contextual help for each page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
		 * @return bool
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
		public function help() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
			$screen = get_current_screen();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
			// Loop through options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
			foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
				// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
				foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
					// Verify page.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
					if ( ! isset( $page['hidden_page'] ) && $screen->id === $this->page_hook[ $page['id'] ] ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
						// Set up the help tabs.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
						if ( ! empty( $page['contextual_help']['content'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
							foreach ( $page['contextual_help']['content'] as $contextual_help ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
								$screen->add_help_tab(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
									array(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
										'id'      => esc_attr( $contextual_help['id'] ),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
										'title'   => esc_attr( $contextual_help['title'] ),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
										'content' => htmlspecialchars_decode( $contextual_help['content'] ),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
									)
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
								);
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
						// Set up the help sidebar.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
						if ( ! empty( $page['contextual_help']['sidebar'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
							$screen->set_help_sidebar( htmlspecialchars_decode( $page['contextual_help']['sidebar'] ) );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
		 * Loads the content for each page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
		public function display_page() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
			$screen = get_current_screen();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
			// Loop through settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
			foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
				// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
				foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
					// Verify page.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
					if ( ! isset( $page['hidden_page'] ) && $screen->id === $this->page_hook[ $page['id'] ] ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
						$show_buttons = isset( $page['show_buttons'] ) && false === $page['show_buttons'] ? false : true;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
						// Update active layout content.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
						if ( isset( $_REQUEST['settings-updated'] ) && true === filter_var( wp_unslash( $_REQUEST['settings-updated'] ), FILTER_VALIDATE_BOOLEAN ) ) { // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
							$layouts = get_option( ot_layouts_id() );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
							// Has active layout.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
							if ( isset( $layouts['active_layout'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
								$option_tree                          = get_option( $option['id'], array() );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
								$layouts[ $layouts['active_layout'] ] = ot_encode( $option_tree );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
								update_option( ot_layouts_id(), $layouts );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
						echo '<div class="wrap settings-wrap" id="page-' . esc_attr( $page['id'] ) . '">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
						echo '<h2>' . wp_kses_post( $page['page_title'] ) . '</h2>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
						echo ot_alert_message( $page ); // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
						settings_errors( 'option-tree' );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
						// Header.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
						echo '<div id="option-tree-header-wrap">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
						echo '<ul id="option-tree-header">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
						$link = '<a href="https://wordpress.org/plugins/option-tree/" target="_blank">' . esc_html__( 'OptionTree', 'option-tree' ) . '</a>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
						echo '<li id="option-tree-logo">' . wp_kses_post( apply_filters( 'ot_header_logo_link', $link, $page['id'] ) ) . '</li>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
						echo '<li id="option-tree-version"><span>' . esc_html( apply_filters( 'ot_header_version_text', 'OptionTree ' . OT_VERSION, $page['id'] ) ) . '</span></li>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
						// Add additional theme specific links here.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
						do_action( 'ot_header_list', $page['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
						echo '</ul>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
						// Layouts form.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
						if ( 'ot_theme_options' === $page['id'] && true === OT_SHOW_NEW_LAYOUT ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
							ot_theme_options_layouts_form();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
						echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
						// Remove forms on the custom settings pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
						if ( $show_buttons ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
							echo '<form action="options.php" method="post" id="option-tree-settings-api">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
							settings_fields( $option['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
						} else {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
							echo '<div id="option-tree-settings-api">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
						// Sub Header.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
						echo '<div id="option-tree-sub-header">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
						if ( $show_buttons ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
							echo '<button class="option-tree-ui-button button button-primary right">' . esc_html( $page['button_text'] ) . '</button>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
						echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
						// Navigation.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
						echo '<div class="ui-tabs">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
						// Check for sections.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
						if ( isset( $page['sections'] ) && 0 < count( $page['sections'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
							echo '<ul class="ui-tabs-nav">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
							// Loop through page sections.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
							foreach ( (array) $page['sections'] as $section ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
								echo '<li id="tab_' . esc_attr( $section['id'] ) . '"><a href="#section_' . esc_attr( $section['id'] ) . '">' . wp_kses_post( $section['title'] ) . '</a></li>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
							echo '</ul>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
						// Sections.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
						echo '<div id="poststuff" class="metabox-holder">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
						echo '<div id="post-body">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
						echo '<div id="post-body-content">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
						$this->do_settings_sections( isset( $_GET['page'] ) ? $_GET['page'] : '' ); // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
						echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
						echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
						echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
						echo '<div class="clear"></div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
						echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
						// Buttons.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
						if ( $show_buttons ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
							echo '<div class="option-tree-ui-buttons">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
							echo '<button class="option-tree-ui-button button button-primary right">' . esc_html( $page['button_text'] ) . '</button>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
							echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
						echo $show_buttons ? '</form>' : '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
						// Reset button.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
						if ( $show_buttons ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
							echo '<form method="post" action="' . esc_url_raw( str_replace( '&settings-updated=true', '', $_SERVER['REQUEST_URI'] ) ) . '">'; // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
							// Form nonce.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
							wp_nonce_field( 'option_tree_reset_form', 'option_tree_reset_nonce' );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
							echo '<input type="hidden" name="action" value="reset" />';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
							echo '<button type="submit" class="option-tree-ui-button button button-secondary left reset-settings" title="' . esc_html__( 'Reset Options', 'option-tree' ) . '">' . esc_html__( 'Reset Options', 'option-tree' ) . '</button>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
							echo '</form>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
						echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
		 * Adds sections to the page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
		 * @return bool
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
		public function add_sections() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
			// Loop through options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
			foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
				// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
				foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
					// Loop through page sections.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
					foreach ( (array) $this->get_sections( $page ) as $section ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
						// Add each section.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
						add_settings_section(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
							$section['id'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
							$section['title'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
							array( $this, 'display_section' ),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
							$page['menu_slug']
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
						);
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
		 * Callback for add_settings_section()
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
		public function display_section() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
			/* currently pointless */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
		 * Add settings the the page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
		 * @return bool
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
		public function add_settings() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
			// Loop through options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
			foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
				register_setting( $option['id'], $option['id'], array( $this, 'sanitize_callback' ) );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
				// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
				foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
					// Loop through page settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
					foreach ( (array) $this->get_the_settings( $page ) as $setting ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
						// Skip if missing setting ID, label, or section.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
						if ( ! isset( $setting['id'] ) || ! isset( $setting['label'] ) || ! isset( $setting['section'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
							continue;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
						// Add get_option param to the array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
						$setting['get_option'] = $option['id'];
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
						// Add each setting.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
						add_settings_field(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
							$setting['id'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
							$setting['label'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
							array( $this, 'display_setting' ),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
							$page['menu_slug'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
							$setting['section'],
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
							$setting
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
						);
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
		 * Callback for add_settings_field() to build each setting by type
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
		 * @param  array $args Setting object array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
		public function display_setting( $args = array() ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
			extract( $args ); // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
			// Get current saved data.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
			$options = get_option( $get_option, false );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
			// Set field value.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
			$field_value = isset( $options[ $id ] ) ? $options[ $id ] : '';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
			// Set standard value.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
			if ( isset( $std ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
				$field_value = ot_filter_std_value( $field_value, $std );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
			// Allow the descriptions to be filtered before being displayed.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
			$desc = apply_filters( 'ot_filter_description', ( isset( $desc ) ? $desc : '' ), $id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
			// Build the arguments array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
			$_args = array(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
				'type'               => $type,
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
				'field_id'           => $id,
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
				'field_name'         => $get_option . '[' . $id . ']',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
				'field_value'        => $field_value,
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
				'field_desc'         => $desc,
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
				'field_std'          => isset( $std ) ? $std : '',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
				'field_rows'         => isset( $rows ) && ! empty( $rows ) ? $rows : 15,
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
				'field_post_type'    => isset( $post_type ) && ! empty( $post_type ) ? $post_type : 'post',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
				'field_taxonomy'     => isset( $taxonomy ) && ! empty( $taxonomy ) ? $taxonomy : 'category',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
				'field_min_max_step' => isset( $min_max_step ) && ! empty( $min_max_step ) ? $min_max_step : '0,100,1',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
				'field_condition'    => isset( $condition ) && ! empty( $condition ) ? $condition : '',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
				'field_operator'     => isset( $operator ) && ! empty( $operator ) ? $operator : 'and',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
				'field_class'        => isset( $class ) ? $class : '',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
				'field_choices'      => isset( $choices ) && ! empty( $choices ) ? $choices : array(),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
				'field_settings'     => isset( $settings ) && ! empty( $settings ) ? $settings : array(),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
				'post_id'            => ot_get_media_post_ID(),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
				'get_option'         => $get_option,
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
			);
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
			// Limit DB queries for Google Fonts.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
			if ( 'google-fonts' === $type ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
				ot_fetch_google_fonts();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
				ot_set_google_fonts( $id, $field_value );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
			// Get the option HTML.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
			echo ot_display_by_type( $_args ); // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
		 * Sets the option standards if nothing yet exists.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
		public function initialize_settings() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
			// Loop through options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
			foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
				// Skip if option is already set.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
				if ( isset( $option['id'] ) && get_option( $option['id'], false ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
					return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
				$defaults = array();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
				// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
				foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
					// Loop through page settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
					foreach ( (array) $this->get_the_settings( $page ) as $setting ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
						if ( isset( $setting['std'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
							$defaults[ $setting['id'] ] = ot_validate_setting( $setting['std'], $setting['type'], $setting['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
				update_option( $option['id'], $defaults );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
		 * Sanitize callback for register_setting()
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
		 * @param mixed $input The setting input.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
		 * @return string
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
		public function sanitize_callback( $input ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
			// Store the post global for use later.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
			$post_global = $_POST; // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
			// Loop through options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
			foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
				// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
				foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
					// Loop through page settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
					foreach ( (array) $this->get_the_settings( $page ) as $setting ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
						// Verify setting has a type & value.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
						if ( isset( $setting['type'] ) && isset( $input[ $setting['id'] ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
							// Get the defaults.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
							$current_settings = get_option( ot_settings_id() );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
							$current_options  = get_option( $option['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
							// Validate setting.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
							if ( is_array( $input[ $setting['id'] ] ) && in_array( $setting['type'], array( 'list-item', 'slider' ), true ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
								// Required title setting.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
								$required_setting = array(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
									array(
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
										'id'        => 'title',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   593
										'label'     => __( 'Title', 'option-tree' ),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
										'desc'      => '',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
										'std'       => '',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
										'type'      => 'text',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
										'rows'      => '',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
										'class'     => 'option-tree-setting-title',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
										'post_type' => '',
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
										'choices'   => array(),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   601
									),
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
								);
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
								// Convert the settings to an array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
								$settings = isset( $post_global[ $setting['id'] . '_settings_array' ] ) ? ot_decode( $post_global[ $setting['id'] . '_settings_array' ] ) : array();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
								// Settings are empty for some odd reason get the defaults.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
								if ( empty( $settings ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
									$settings = 'slider' === $setting['type'] ? ot_slider_settings( $setting['id'] ) : ot_list_item_settings( $setting['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
								}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
								// Merge the two settings arrays.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
								$settings = array_merge( $required_setting, $settings );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
								// Create an empty WPML id array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
								$wpml_ids = array();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   617
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
								foreach ( $input[ $setting['id'] ] as $k => $setting_array ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
									$has_value = false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
									foreach ( $settings as $sub_setting ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
										// Setup the WPML ID.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
										$wpml_id = $setting['id'] . '_' . $sub_setting['id'] . '_' . $k;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
										// Add id to array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
										$wpml_ids[] = $wpml_id;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
										/* verify sub setting has a type & value */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
										if ( isset( $sub_setting['type'] ) && isset( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   632
											// Validate setting.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
											$input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] = ot_validate_setting( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ], $sub_setting['type'], $sub_setting['id'], $wpml_id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
											$has_value = true;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
										}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   636
									}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   637
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   638
									if ( ! $has_value ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
										unset( $input[ $setting['id'] ][ $k ] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
									}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
								}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   642
							} elseif ( is_array( $input[ $setting['id'] ] ) && 'social-links' === $setting['type'] ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   643
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   644
								// Convert the settings to an array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   645
								$settings = isset( $post_global[ $setting['id'] . '_settings_array' ] ) ? ot_decode( $post_global[ $setting['id'] . '_settings_array' ] ) : array();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   646
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   647
								// Settings are empty get the defaults.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   648
								if ( empty( $settings ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   649
									$settings = ot_social_links_settings( $setting['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   650
								}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   651
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   652
								// Create an empty WPML id array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   653
								$wpml_ids = array();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   655
								foreach ( $input[ $setting['id'] ] as $k => $setting_array ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   657
									$has_value = false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
									foreach ( $settings as $sub_setting ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
										// Setup the WPML ID.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   661
										$wpml_id = $setting['id'] . '_' . $sub_setting['id'] . '_' . $k;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
										// Add id to array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
										$wpml_ids[] = $wpml_id;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
										// Verify sub setting has a type & value.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
										if ( isset( $sub_setting['type'] ) && isset( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
											if ( 'href' === $sub_setting['id'] ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
												$sub_setting['type'] = 'url';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
											}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   673
											// Validate setting.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
											$input_safe = ot_validate_setting( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ], $sub_setting['type'], $sub_setting['id'], $wpml_id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
											if ( ! empty( $input_safe ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   677
												$input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] = $input_safe;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
												$has_value = true;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   679
											}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   680
										}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
									}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
									if ( ! $has_value ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
										unset( $input[ $setting['id'] ][ $k ] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   685
									}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
								}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
							} else {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
								$input[ $setting['id'] ] = ot_validate_setting( $input[ $setting['id'] ], $setting['type'], $setting['id'], $setting['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
						// Unregister WPML strings that were deleted from lists and sliders.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   693
						if ( isset( $current_settings['settings'] ) && isset( $setting['type'] ) && in_array( $setting['type'], array( 'list-item', 'slider' ), true ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   694
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   695
							if ( ! isset( $wpml_ids ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   696
								$wpml_ids = array();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   697
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   698
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   699
							foreach ( $current_settings['settings'] as $check_setting ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   700
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   701
								if ( $setting['id'] === $check_setting['id'] && ! empty( $current_options[ $setting['id'] ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
									foreach ( $current_options[ $setting['id'] ] as $key => $value ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
										foreach ( $value as $ckey => $cvalue ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   707
											$id = $setting['id'] . '_' . $ckey . '_' . $key;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   708
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   709
											if ( ! in_array( $id, $wpml_ids, true ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
												ot_wpml_unregister_string( $id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   711
											}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   712
										}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   713
									}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   714
								}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
						/* unregister WPML strings that were deleted from social links */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
						if ( isset( $current_settings['settings'] ) && isset( $setting['type'] ) && 'social-links' === $setting['type'] ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
							if ( ! isset( $wpml_ids ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   722
								$wpml_ids = array();
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   724
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   725
							foreach ( $current_settings['settings'] as $check_setting ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   726
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   727
								if ( $setting['id'] === $check_setting['id'] && ! empty( $current_options[ $setting['id'] ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   728
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   729
									foreach ( $current_options[ $setting['id'] ] as $key => $value ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   730
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   731
										foreach ( $value as $ckey => $cvalue ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   732
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   733
											$id = $setting['id'] . '_' . $ckey . '_' . $key;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   734
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   735
											if ( ! in_array( $id, $wpml_ids, true ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   736
												ot_wpml_unregister_string( $id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   737
											}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   738
										}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   739
									}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   740
								}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   741
							}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   742
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   743
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   744
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   745
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   746
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   747
			return $input;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   748
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   749
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   750
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   751
		 * Helper function to get the pages array for an option
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   752
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   753
		 * @param  array $option Option array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   754
		 * @return mixed
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   755
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   756
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   757
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   758
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   759
		public function get_pages( $option = array() ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   760
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   761
			if ( empty( $option ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   762
				return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   763
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   764
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   765
			// Check for pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   766
			if ( isset( $option['pages'] ) && ! empty( $option['pages'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   767
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   768
				// Return pages array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   769
				return $option['pages'];
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   770
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   771
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   772
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   773
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   775
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   776
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   777
		 * Helper function to get the sections array for a page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   778
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
		 * @param  array $page Page array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
		 * @return mixed
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   781
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   782
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   784
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   785
		public function get_sections( $page = array() ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   786
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   787
			if ( empty( $page ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   788
				return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   789
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   790
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   791
			// Check for sections.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   792
			if ( isset( $page['sections'] ) && ! empty( $page['sections'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   793
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   794
				// Return sections array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   795
				return $page['sections'];
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   796
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   797
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   799
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   801
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   802
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   803
		 * Helper function to get the settings array for a page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   804
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   805
		 * @param  array $page Page array.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   806
		 * @return mixed
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   807
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   808
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   809
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   810
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   811
		public function get_the_settings( $page = array() ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   812
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   813
			if ( empty( $page ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   814
				return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   815
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   816
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   817
			/* check for settings */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   818
			if ( isset( $page['settings'] ) && ! empty( $page['settings'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   819
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   820
				/* return settings array */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   821
				return $page['settings'];
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   827
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   828
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   829
		 * Prints out all settings sections added to a particular settings page
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   830
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   831
		 * @global $wp_settings_sections Storage array of all settings sections added to admin pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   832
		 * @global $wp_settings_fields   Storage array of settings fields and info about their pages/sections.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   833
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   834
		 * @param  string $page The slug name of the page whos settings sections you want to output.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   835
		 * @return string
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   836
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   837
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   838
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   839
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   840
		public function do_settings_sections( $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   841
			global $wp_settings_sections, $wp_settings_fields;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   842
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   843
			if ( ! isset( $wp_settings_sections ) || ! isset( $wp_settings_sections[ $page ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   844
				return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   845
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   846
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   847
			foreach ( (array) $wp_settings_sections[ $page ] as $section ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   848
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   849
				if ( ! isset( $section['id'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   850
					continue;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   851
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   852
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   853
				$section_id = $section['id'];
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   854
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   855
				echo '<div id="section_' . esc_attr( $section_id ) . '" class="postbox ui-tabs-panel">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   856
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   857
				call_user_func( $section['callback'], $section );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   858
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   859
				if ( ! isset( $wp_settings_fields ) || ! isset( $wp_settings_fields[ $page ] ) || ! isset( $wp_settings_fields[ $page ][ $section_id ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   860
					continue;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   861
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   862
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   863
				echo '<div class="inside">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   864
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   865
				/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   866
				 * Hook to insert arbitrary markup before the `do_settings_fields` method.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   867
				 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   868
				 * @since 2.6.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   869
				 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   870
				 * @param string $page       The page slug.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   871
				 * @param string $section_id The section ID.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   872
				 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   873
				do_action( 'ot_do_settings_fields_before', $page, $section_id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   874
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   875
				$this->do_settings_fields( $page, $section_id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   876
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   877
				/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   878
				 * Hook to insert arbitrary markup after the `do_settings_fields` method.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   879
				 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   880
				 * @since 2.6.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   881
				 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   882
				 * @param string $page       The page slug.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   883
				 * @param string $section_id The section ID.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   884
				 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   885
				do_action( 'ot_do_settings_fields_after', $page, $section_id );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   886
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   887
				echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   888
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   889
				echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   890
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   891
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   892
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   893
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   894
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   895
		 * Print out the settings fields for a particular settings section
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   896
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   897
		 * @global $wp_settings_fields Storage array of settings fields and their pages/sections
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   898
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   899
		 * @param  string $page    Slug title of the admin page who's settings fields you want to show.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   900
		 * @param  string $section Slug title of the settings section who's fields you want to show.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   901
		 * @return string
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   902
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   903
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   904
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   905
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   906
		public function do_settings_fields( $page, $section ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   907
			global $wp_settings_fields;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   908
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   909
			if ( ! isset( $wp_settings_fields ) || ! isset( $wp_settings_fields[ $page ] ) || ! isset( $wp_settings_fields[ $page ][ $section ] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   910
				return;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   911
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   912
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   913
			foreach ( (array) $wp_settings_fields[ $page ][ $section ] as $field ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   914
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   915
				$conditions = '';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   916
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   917
				if ( isset( $field['args']['condition'] ) && ! empty( $field['args']['condition'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   918
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   919
					$conditions  = ' data-condition="' . esc_attr( $field['args']['condition'] ) . '"';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   920
					$conditions .= isset( $field['args']['operator'] ) && in_array( $field['args']['operator'], array( 'and', 'AND', 'or', 'OR' ), true ) ? ' data-operator="' . esc_attr( $field['args']['operator'] ) . '"' : '';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   921
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   922
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   923
				// Build the setting CSS class.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   924
				if ( isset( $field['args']['class'] ) && ! empty( $field['args']['class'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   925
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   926
					$classes = explode( ' ', $field['args']['class'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   927
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   928
					foreach ( $classes as $key => $value ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   929
						$classes[ $key ] = $value . '-wrap';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   930
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   931
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   932
					$class = 'format-settings ' . implode( ' ', $classes );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   933
				} else {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   934
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   935
					$class = 'format-settings';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   936
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   937
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   938
				echo '<div id="setting_' . esc_attr( $field['id'] ) . '" class="' . esc_attr( $class ) . '"' . $conditions . '>'; // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   939
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   940
				echo '<div class="format-setting-wrap">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   941
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   942
				if ( 'textblock' !== $field['args']['type'] && ! empty( $field['title'] ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   943
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   944
					echo '<div class="format-setting-label">';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   945
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   946
					echo '<h3 class="label">' . wp_kses_post( $field['title'] ) . '</h3>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   947
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   948
					echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   949
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   950
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   951
				call_user_func( $field['callback'], $field['args'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   952
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   953
				echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   954
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   955
				echo '</div>';
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   956
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   957
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   958
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   959
		/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   960
		 * Resets page options before the screen is displayed
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   961
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   962
		 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   963
		 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   964
		 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   965
		 * @return bool
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   966
		 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   967
		public function reset_options() {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   968
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   969
			// Check for reset action.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   970
			if ( isset( $_POST['option_tree_reset_nonce'] ) && wp_verify_nonce( $_POST['option_tree_reset_nonce'], 'option_tree_reset_form' ) ) { // phpcs:ignore
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   971
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   972
				// Loop through options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   973
				foreach ( (array) $this->options as $option ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   974
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   975
					// Loop through pages.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   976
					foreach ( (array) $this->get_pages( $option ) as $page ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   977
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   978
						// Verify page.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   979
						if ( isset( $_GET['page'] ) && $_GET['page'] === $page['menu_slug'] ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   980
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   981
							// Reset options.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   982
							delete_option( $option['id'] );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   983
						}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   984
					}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   985
				}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   986
			}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   987
			return false;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   988
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   989
	}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   990
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   991
}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   992
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   993
if ( ! function_exists( 'ot_register_settings' ) ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   994
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   995
	/**
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   996
	 * This method instantiates the settings class & builds the UI.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   997
	 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   998
	 * @uses OT_Settings()
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
   999
	 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1000
	 * @param array $args Array of arguments to create settings.
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1001
	 *
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1002
	 * @access public
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1003
	 * @since  2.0
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1004
	 */
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1005
	function ot_register_settings( $args ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1006
		if ( ! $args ) {
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1007
			return;
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1008
		}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1009
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1010
		new OT_Settings( $args );
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1011
	}
bf1778c34b9a upgrade optiontree
ymh <ymh.work@gmail.com>
parents:
diff changeset
  1012
}