/**
 * @shortcode hw_widget_content shortcode to display any widget content
 * @param $prop
 * @param $content
 */
function _hw_awc_feature_widget_content_shortcode($prop, $content)
{
    $args = array('widget' => '', 'sidebar' => '', 'params_config' => '', 'skin' => 'skin_default');
    $d = shortcode_atts($args, $prop);
    extract($d);
    //valid
    if (empty($widget)) {
        return;
    }
    global $wp_registered_sidebars;
    global $wp_registered_widgets;
    //default sidebar params
    $sidebar_params = array('before_title' => '', 'after_title' => '', 'before_widget' => '', 'after_widget' => '');
    if (!empty($sidebar) && !empty($skin) && isset($wp_registered_sidebars[$sidebar])) {
        $sidebar_params = HW_AWC::apply_sidebar_skin($sidebar, $skin, array('widget_id' => 'hw-shortcode-widget', 'classname' => strtolower($widget) . ' hw-awc-override'));
    }
    //get widget instance by saved widget config
    if (!empty($params_config) && is_numeric($params_config)) {
        $config = AWC_WidgetFeature_saveconfig::get_widget_setting($params_config);
        if ($config) {
            $widget_params = AWC_WidgetFeature_saveconfig::decode_config($config->setting);
        }
    }
    if (isset($widget) && class_exists($widget, false) && !empty($widget_params)) {
        //display widget content
        the_widget($widget, $widget_params, $sidebar_params);
    }
}
 /**
  * ajax callback
  */
 public function _ajax_hwawc_widfea_saveconfig()
 {
     if (!wp_verify_nonce($_REQUEST['nonce'], "hwawc_widfea_saveconfig_nonce")) {
         exit("No naughty business please");
     }
     if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
         //$result = json_encode($result);
         $setting = isset($_POST['setting']) ? $_POST['setting'] : '';
         if (!empty($setting)) {
             //remove setting from this widget feature
             $setting = AWC_WidgetFeature_saveconfig::decode_config($setting);
             $setting = $this->remove_settings($setting);
             //encode widget settings
             $setting = AWC_WidgetFeature_saveconfig::encode_config($setting);
         }
         $data = array('name' => isset($_POST['name']) ? $_POST['name'] : '', '_group' => isset($_POST['group']) ? $_POST['group'] : '', 'setting' => $setting, 'description' => isset($_POST['description']) ? $_POST['description'] : '', 'widget' => isset($_POST['widget']) ? $_POST['widget'] : '');
         $insert_id = $this->add_widget_setting($data);
         echo $insert_id;
         //return new id inserted to database
     } else {
         header("Location: " . $_SERVER["HTTP_REFERER"]);
     }
     die;
 }