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