public static function show_setting_msgs($plugslug = '')
 {
     //	if( ! isset($_GET['settings-updated']) || empty($_POST) ) return;
     if (empty($plugslug)) {
         $plugslug = Skeleteon_Generic::get_plug_var('plug_slug');
     }
     $setting_msgs = get_transient($plugslug . '_setting_msgs');
     if (!$setting_msgs) {
         return;
     }
     $ret = '<div class="dsms_alertwrap setting_msg_wrap">';
     $ret .= '<input id="dismiss_cbox_setting_msgs" type="checkbox" class="cbox_dismiss" role="button">';
     $ret .= '<label class="cbox_dismiss" for="dismiss_cbox_setting_msgs"><span class="btn btn-primary btn-xs">X ' . __('Dismiss') . '</span></label>';
     $ret .= '<div class="cbt_cont alert alert-success"> <i class="fa fa-check-square-o"></i> Settings saved succesfully. <br />';
     if ($setting_msgs) {
         $ret .= Skeleteon_Interface::gen_field('exp_setting_msgs', array('type' => 'togglebox_start', 'label' => 'Additional Details', 'std' => true), true);
         foreach ($setting_msgs as $k => $msgs) {
             $ret .= '<div class="alert alert-' . $k . ' pad"><ul>';
             foreach ($msgs as $msg) {
                 $ret .= '<li>' . $msg . '</li>';
             }
             $ret .= '</ul></div>';
         }
         $ret .= Skeleteon_Interface::gen_field(null, array('type' => 'togglebox_end'), true);
     }
     $ret .= '</div></div>';
     echo $ret;
     // Delete messages upon showing.
     delete_transient($plugslug . '_setting_msgs');
 }
 function sanitize_typography($input, $k)
 {
     $output = wp_parse_args($input, array('face' => '', 'style' => '', 'size' => '', 'color' => '', 'subset' => ''));
     //				var_dump($input,$output,$k);
     //		die("111");
     // Check Google font variant for sanity. We should already have a google font transient in place. If we dont, just fall back to regular
     $rt = Skeleteon_Generic::get_plug_var('reg_transients');
     $gf_trans_name = $rt['google_fonts'];
     $google_font_faces = get_transient($gf_trans_name);
     if ($google_font_faces) {
         $is_google_font = array_key_exists($input['face'], $google_font_faces);
         if (!$is_google_font) {
             unset($output['subset']);
         }
         if ($is_google_font) {
             $fonts_styles = $google_font_faces[$input['face']]['variants'];
             $fonts_subsets = $google_font_faces[$input['face']]['subsets'];
             // Remove subset if the font doesnt have it.
             foreach ($input['subset'] as $isk => $isub) {
                 if (!in_array($isub, $fonts_subsets)) {
                     unset($output['subset'][$isk]);
                 }
             }
             if (!in_array($input['style'], $fonts_styles)) {
                 $output['style'] = 'regular';
             }
         }
         //		var_dump($fonts_styles);
         /*
         	if ( is_array( $input ) ) {		
         			foreach ( $input as $v ) {
         				$output[] = $v;
         			}
         		}*/
         //	if( ! in_array($input['style'],$fonts_styles) )	$output['style'] = 'regular';
     } else {
         $output['style'] = 'normal';
     }
     //	var_dump($input,$output,$k);
     //	die("111");
     /*
     		if ( isset( $option['options']['faces'] ) && isset( $input['face'] ) ) {
     			if ( !( array_key_exists( $input['face'], $option['options']['faces'] ) ) ) {
     				$output['face'] = '';
     			}
     		}
     		else {
     			$output['face']  = apply_filters( 'of_font_face', $output['face'] );
     		}*/
     //		$output['size']  = apply_filters( 'ske_font_size', $output['size'] );
     //		$output['style'] = apply_filters( 'ske_font_style', $output['style'] );
     return $output;
 }
 static function gen_uploader($settk, $_id, $_value, $_desc = '', $_name = '', $lang_slug = '')
 {
     $output = '';
     $id = '';
     $class = '';
     $int = '';
     $value = '';
     $name = '';
     $id = strip_tags(strtolower($_id));
     if (empty($lang_slug)) {
         $lang_slug = Skeleteon_Generic::get_plug_var('lang_slug');
     }
     // If a value is passed and we don't have a stored value, use the value that's passed through.
     if ($_value != '' && $value == '') {
         $value = $_value;
     }
     if ($_name != '') {
         $name = $_name;
     } else {
         $name = $settk . '[' . $id . ']';
     }
     if ($value) {
         $class = ' has-file';
     }
     //	var_dump($name);
     $output .= '<input id="' . $id . '" class="upload' . $class . '" type="text" name="' . $name . '" value="' . $value . '" placeholder="' . __('No file chosen', $lang_slug) . '" />' . "\n";
     if (function_exists('wp_enqueue_media')) {
         if ($value == '') {
             $output .= '<input id="upload-' . $id . '" class="upload-button button" type="button" value="' . __('Upload', $lang_slug) . '" />' . "\n";
         } else {
             $output .= '<input id="remove-' . $id . '" class="remove-file button" type="button" value="' . __('Remove', $lang_slug) . '" />' . "\n";
         }
     } else {
         $output .= '<p><i>' . __('Upgrade your version of WordPress for full media support.', $lang_slug) . '</i></p>';
     }
     if ($_desc != '') {
         $output .= '<span class="of-metabox-desc">' . $_desc . '</span>' . "\n";
     }
     // add togglebox for preview
     // _eo-todo: remove hide preview if no pic
     $output .= '<input id="' . esc_attr($id) . '_prev_cboxt" type="checkbox" ';
     $output .= 'class="cbox_toggle_i upltogi" role="button"><label class="cbox_toggle uplprevtoglbl" for="' . esc_attr($id) . '_prev_cboxt">';
     $output .= '<span class="label label-success cbt_s">+ Show Preview</span><span class="label label-default cbt_h">— Hide Preview</span>';
     $output .= '</label>';
     $output .= '<div class="cbt_cont togglebox screenshot uplprev" id="' . $id . '-image">' . "\n";
     if ($value != '') {
         $remove = '<a class="uplrem remove-image btn btn-danger btn-xs">X Remove</a>';
         $image = preg_match('/(^.*\\.jpg|jpeg|png|gif|ico*)/i', $value);
         if ($image) {
             $output .= '<img src="' . $value . '" alt="" class="img-responsive" />' . $remove;
         } else {
             $parts = explode("/", $value);
             for ($i = 0; $i < sizeof($parts); ++$i) {
                 $title = $parts[$i];
             }
             // No output preview if it's not an image.
             $output .= '';
             // Standard generic output if it's not an image.
             $title = __('View File', $lang_slug);
             $output .= '<div class="no-image"><span class="file_link"><a href="' . $value . '" target="_blank" rel="external">' . $title . '</a></span></div>';
         }
     }
     $output .= '</div>' . "\n";
     return $output;
 }
<?php

if (!defined('ABSPATH')) {
    exit;
}
//$setting_key = $this->vars['plug_slug'].'_demo_settings';
$settings_key = str_replace(array("render-metabox-", "-"), array("", "_"), basename(__FILE__, '.php'));
$plugslug = Skeleteon_Generic::get_plug_var('plug_slug');
$full_settings_key = $plugslug . '_' . $settings_key;
//var_dump($settings_key);
?>
<form method="post" action="options.php">
    <?php 
settings_fields($full_settings_key);
//
//	do_settings_sections( $settings_key );
//	get_settings($optk=null,$section=null,$sett_key=null,$def_pairs=false,$ign=true,$sanit=true) {
//$options = Skeleteon_Generic::get_settings('demo_settings');
$options = Skeleteon_Generic::get_settings_for($settings_key);
if ($options) {
    foreach ($options as $key => $field) {
        Skeleteon_Interface::gen_field($key, $field, $full_settings_key);
    }
}
submit_button(__('Save Changes'), 'primary', '', false);
submit_button(__('Restore'), 'secondary', 'reset_settings', false);
$storedvals = get_option($full_settings_key);
Skeleteon_Generic::vd($storedvals, true);
?>
</form>
 function sync_settings()
 {
     //	var_dump(self::$vars);
     //	var_dump(Skeleteon_Generic::get_plug_var('all_settings'));
     $all_settings = Skeleteon_Generic::get_plug_var('all_settings');
     $plugslug = self::$vars['plug_slug'];
     $sync_msg = '';
     foreach ($all_settings as $sett_k => $settings) {
         $default_pairs = array();
         $set_optk = $plugslug . '_' . $sett_k;
         $stored_pairs = get_option($set_optk);
         foreach ($settings as $sect => $options) {
             //		var_dump($sect,$options);
             // If is section
             foreach ($options as $sk => $option) {
                 if (is_int($sk)) {
                     continue;
                 }
                 $std = array_key_exists('std', $option) ? $option['std'] : '';
                 //	var_dump($sk, $option);
                 $default_pairs[$sk] = $std;
             }
         }
         //				var_dump($default_pairs,$stored_pairs);
         //				var_dump($settings);
         if ($stored_pairs) {
             var_dump($stored_pairs);
             //	var_dump($default_pairs,$stored_pairs);
             //		var_dump($sett_k);
             //		var_dump($default_pairs,$stored_pairs);
             $new_opts = array_diff_key($default_pairs, $stored_pairs);
             $old_opts = array_diff_key($stored_pairs, $default_pairs);
             if (!empty($new_opts) || !empty($old_opts)) {
                 if ($new_opts) {
                     $sync_msg .= count($new_opts) . ' new options found for <code>' . $sett_k . '</code><br />';
                 }
                 if ($old_opts) {
                     $sync_msg .= count($old_opts) . ' old options found for <code>' . $sett_k . '</code><br />';
                 }
                 //var_dump($new_opts,$old_opts);
                 if (!empty($new_opts)) {
                     foreach ($new_opts as $new_opt_k => $new_opt_v) {
                         $stored_pairs[$new_opt_k] = $new_opt_v;
                     }
                 }
                 if (!empty($old_opts)) {
                     foreach ($old_opts as $old_opt_k => $old_opt_v) {
                         unset($stored_pairs[$old_opt_k]);
                     }
                 }
                 //									var_dump($stored_pairs);
                 //					var_dump(function_exists('update_option'));
                 var_dump($set_optk, $stored_pairs);
                 update_option($set_optk, "22");
                 update_option("333", "22");
                 //		update_option("2323",$stored_pairs);
             }
         }
         //		update_option($set_optk,$stored_pairs);
         //			$new_opts = array_diff_key($default_pairs,$stored_pairs);
         //	var_dump($sett_k,$settings,$stored_pairs,$default_pairs);
     }
     // foreach main
     if (!empty($sync_msg)) {
         return Skeleteon_Generic::add_trans_msg("settings_synced", sprintf(__('Settings Synced. <br />%s', self::$vars['lang_slug']), $sync_msg), 'info');
     } else {
         return false;
     }
 }