wp/wp-content/plugins/option-tree/includes/ot-settings-api.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
--- a/wp/wp-content/plugins/option-tree/includes/ot-settings-api.php	Mon Jun 08 16:11:51 2015 +0000
+++ b/wp/wp-content/plugins/option-tree/includes/ot-settings-api.php	Tue Jun 09 03:35:32 2015 +0200
@@ -49,9 +49,18 @@
      * @since     2.0
      */
     public function hooks() {
-      
+
+      /**
+       * Filter the `admin_menu` action hook priority.
+       *
+       * @since 2.5.0
+       *
+       * @param int $priority The priority. Default '10'.
+       */
+      $priority = apply_filters( 'ot_admin_menu_priority', 10 );
+
       /* add pages & menu items */
-      add_action( 'admin_menu', array( $this, 'add_page' ) );
+      add_action( 'admin_menu', array( $this, 'add_page' ), $priority );
       
       /* register sections */
       add_action( 'admin_init', array( $this, 'add_sections' ) );
@@ -233,20 +242,19 @@
             /* update active layout content */
             if ( isset( $_REQUEST['settings-updated'] ) && $_REQUEST['settings-updated'] == 'true' ) {
   
-              $layouts = get_option( 'option_tree_layouts' );
+              $layouts = get_option( ot_layouts_id() );
               
               /* has active layout */
               if ( isset( $layouts['active_layout'] ) ) {
                 $option_tree = get_option( $option['id'] );
                 $layouts[$layouts['active_layout']] = ot_encode( serialize( $option_tree ) );
-                update_option( 'option_tree_layouts', $layouts );
+                update_option( ot_layouts_id(), $layouts );
               }
               
             }
             
             echo '<div class="wrap settings-wrap" id ="page-' . $page['id'] . '">';
   
-              screen_icon( ( isset( $page['screen_icon'] ) ? $page['screen_icon'] : 'options-general' ) );
               echo '<h2>' . $page['page_title'] . '</h2>';
               
               echo ot_alert_message( $page );
@@ -258,9 +266,12 @@
               
                 echo '<ul id="option-tree-header">';
                   
-                  echo '<li id="option-tree-logo"><a href="http://wordpress.org/extend/plugins/option-tree/" target="_blank">OptionTree</a></li>';
+                  echo '<li id="option-tree-logo">' . apply_filters( 'ot_header_logo_link', '<a href="http://wordpress.org/extend/plugins/option-tree/" target="_blank">OptionTree</a>', $page['id'] ) . '</li>';
                   
-                  echo '<li id="option-tree-version"><span>Version ' . OT_VERSION . '</span></li>';
+                  echo '<li id="option-tree-version"><span>' . apply_filters( 'ot_header_version_text', 'OptionTree ' . OT_VERSION, $page['id'] ) . '</span></li>';
+                  
+                  // Add additional theme specific links here.
+                  do_action( 'ot_header_list', $page['id'] );
                 
                 echo '</ul>';
                 
@@ -287,7 +298,7 @@
                 echo '<div id="option-tree-sub-header">';
                   
                 if ( $show_buttons )
-                  echo '<button class="option-tree-ui-button blue right">' . $page['button_text'] . '</button>';
+                  echo '<button class="option-tree-ui-button button button-primary right">' . $page['button_text'] . '</button>';
                   
                 echo '</div>';
                 
@@ -332,7 +343,7 @@
               
                 echo '<div class="option-tree-ui-buttons">';
                 
-                  echo '<button class="option-tree-ui-button blue right">' . $page['button_text'] . '</button>';
+                  echo '<button class="option-tree-ui-button button button-primary right">' . $page['button_text'] . '</button>';
                   
                 echo '</div>';
                 
@@ -350,7 +361,7 @@
         
                   echo '<input type="hidden" name="action" value="reset" />';
                   
-                  echo '<button type="submit" class="option-tree-ui-button red left reset-settings" title="' . __( 'Reset Options', 'option-tree' ) . '">' . __( 'Reset Options', 'option-tree' ) . '</button>';
+                  echo '<button type="submit" class="option-tree-ui-button button button-secondary left reset-settings" title="' . __( 'Reset Options', 'option-tree' ) . '">' . __( 'Reset Options', 'option-tree' ) . '</button>';
                 
                 echo '</form>';
                 
@@ -472,6 +483,7 @@
      * @since     2.0
      */
     public function display_setting( $args = array() ) {
+
       extract( $args );
       
       /* get current saved data */
@@ -484,6 +496,9 @@
       if ( isset( $std ) ) {  
         $field_value = ot_filter_std_value( $field_value, $std );
       }
+      
+      // Allow the descriptions to be filtered before being displayed
+      $desc = apply_filters( 'ot_filter_description', ( isset( $desc ) ? $desc : '' ), $id );
 
       /* build the arguments array */
       $_args = array(
@@ -491,12 +506,14 @@
         'field_id'          => $id,
         'field_name'        => $get_option . '[' . $id . ']',
         'field_value'       => $field_value,
-        'field_desc'        => isset( $desc ) ? $desc : '',
+        'field_desc'        => $desc,
         'field_std'         => isset( $std ) ? $std : '',
         'field_rows'        => isset( $rows ) && ! empty( $rows ) ? $rows : 15,
         'field_post_type'   => isset( $post_type ) && ! empty( $post_type ) ? $post_type : 'post',
         'field_taxonomy'    => isset( $taxonomy ) && ! empty( $taxonomy ) ? $taxonomy : 'category',
         'field_min_max_step'=> isset( $min_max_step ) && ! empty( $min_max_step ) ? $min_max_step : '0,100,1',
+        'field_condition'   => isset( $condition ) && ! empty( $condition ) ? $condition : '',
+        'field_operator'    => isset( $operator ) && ! empty( $operator ) ? $operator : 'and',
         'field_class'       => isset( $class ) ? $class : '',
         'field_choices'     => isset( $choices ) && ! empty( $choices ) ? $choices : array(),
         'field_settings'    => isset( $settings ) && ! empty( $settings ) ? $settings : array(),
@@ -504,6 +521,12 @@
         'get_option'        => $get_option,
       );
       
+      // Limit DB queries for Google Fonts.
+      if ( $type == 'google-fonts' ) {
+        ot_fetch_google_fonts();
+        ot_set_google_fonts( $id, $field_value );
+      }
+      
       /* get the option HTML */
       echo ot_display_by_type( $_args );
     }
@@ -574,7 +597,7 @@
             if ( isset( $setting['type'] ) && isset( $input[$setting['id']] ) ) {
               
               /* get the defaults */
-              $current_settings = get_option( 'option_tree_settings' );
+              $current_settings = get_option( ot_settings_id() );
               $current_options = get_option( $option['id'] );
                 
               /* validate setting */
@@ -632,6 +655,41 @@
                   }
                 
                 }
+              
+              } else if ( is_array( $input[$setting['id']] ) && $setting['type'] == 'social-links' ) {
+                
+                /* get the settings array */
+                $settings = isset( $_POST[$setting['id'] . '_settings_array'] ) ? unserialize( ot_decode( $_POST[$setting['id'] . '_settings_array'] ) ) : array();
+                
+                /* settings are empty get the defaults */
+                if ( empty( $settings ) ) {
+                  $settings = ot_social_links_settings( $setting['id'] );
+                }
+                
+                /* create an empty WPML id array */
+                $wpml_ids = array();
+                
+                foreach( $input[$setting['id']] as $k => $setting_array ) {
+
+                  foreach( $settings as $sub_setting ) {
+                    
+                    /* setup the WPML ID */
+                    $wpml_id = $setting['id'] . '_' . $sub_setting['id'] . '_' . $k;
+                    
+                    /* add id to array */
+                    $wpml_ids[] = $wpml_id;
+                      
+                    /* verify sub setting has a type & value */
+                    if ( isset( $sub_setting['type'] ) && isset( $input[$setting['id']][$k][$sub_setting['id']] ) ) {
+
+                      /* validate setting */
+                      $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 );
+                      
+                    }
+                    
+                  }
+                
+                }
 
               } else {
                 
@@ -672,6 +730,38 @@
               }
               
             }
+            
+            /* unregister WPML strings that were deleted from social links */
+            if ( isset( $current_settings['settings'] ) && isset( $setting['type'] ) && $setting['type'] == 'social-links' ) {
+              
+              if ( ! isset( $wpml_ids ) )
+                $wpml_ids = array();
+                
+              foreach( $current_settings['settings'] as $check_setting ) {
+              
+                if ( $setting['id'] == $check_setting['id'] && ! empty( $current_options[$setting['id']] ) ) {
+                
+                  foreach( $current_options[$setting['id']] as $key => $value ) {
+                
+                    foreach( $value as $ckey => $cvalue ) {
+                      
+                      $id = $setting['id'] . '_' . $ckey . '_' . $key;
+                      
+                      if ( ! in_array( $id, $wpml_ids ) ) {
+                      
+                        ot_wpml_unregister_string( $id );
+                        
+                      }
+                      
+                    }
+                  
+                  }
+                
+                }
+                
+              }
+              
+            }
       
           }
         
@@ -820,8 +910,36 @@
         return;
     
       foreach ( (array) $wp_settings_fields[$page][$section] as $field ) {
+
+        $conditions = '';
+
+        if ( isset( $field['args']['condition'] ) && ! empty( $field['args']['condition'] ) ) {
+
+          $conditions = ' data-condition="' . $field['args']['condition'] . '"';
+          $conditions.= isset( $field['args']['operator'] ) && in_array( $field['args']['operator'], array( 'and', 'AND', 'or', 'OR' ) ) ? ' data-operator="' . $field['args']['operator'] . '"' : '';
+
+        }
         
-        echo '<div id="setting_' . $field['id'] . '" class="format-settings">';
+        // Build the setting CSS class
+        if ( isset( $field['args']['class'] ) && ! empty( $field['args']['class'] ) ) {
+          
+          $classes = explode( ' ', $field['args']['class'] );
+          
+          foreach( $classes as $key => $value ) {
+          
+            $classes[$key] = $value . '-wrap';
+            
+          }
+          
+          $class = 'format-settings ' . implode( ' ', $classes );
+          
+        } else {
+        
+          $class = 'format-settings';
+          
+        }
+        
+        echo '<div id="setting_' . $field['id'] . '" class="' . $class . '"' . $conditions . '>';
           
           echo '<div class="format-setting-wrap">';