Example #1
0
function retrieve_widgets()
{
    global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets;
    $_sidebars_widgets = array();
    $sidebars = array_keys($wp_registered_sidebars);
    unset($sidebars_widgets['array_version']);
    $old = array_keys($sidebars_widgets);
    sort($old);
    sort($sidebars);
    if ($old == $sidebars) {
        return;
    }
    // Move the known-good ones first
    foreach ($sidebars as $id) {
        if (array_key_exists($id, $sidebars_widgets)) {
            $_sidebars_widgets[$id] = $sidebars_widgets[$id];
            unset($sidebars_widgets[$id], $sidebars[$id]);
        }
    }
    // if new theme has less sidebars than the old theme
    if (!empty($sidebars_widgets)) {
        foreach ($sidebars_widgets as $lost => $val) {
            if (is_array($val)) {
                $_sidebars_widgets['wp_inactive_widgets'] = array_merge((array) $_sidebars_widgets['wp_inactive_widgets'], $val);
            }
        }
    }
    // discard invalid, theme-specific widgets from sidebars
    $shown_widgets = array();
    foreach ($_sidebars_widgets as $sidebar => $widgets) {
        if (!is_array($widgets)) {
            continue;
        }
        $_widgets = array();
        foreach ($widgets as $widget) {
            if (isset($wp_registered_widgets[$widget])) {
                $_widgets[] = $widget;
            }
        }
        $_sidebars_widgets[$sidebar] = $_widgets;
        $shown_widgets = array_merge($shown_widgets, $_widgets);
    }
    $sidebars_widgets = $_sidebars_widgets;
    unset($_sidebars_widgets, $_widgets);
    // find hidden/lost multi-widget instances
    $lost_widgets = array();
    foreach ($wp_registered_widgets as $key => $val) {
        if (in_array($key, $shown_widgets, true)) {
            continue;
        }
        $number = preg_replace('/.+?-([0-9]+)$/', '$1', $key);
        if (2 > (int) $number) {
            continue;
        }
        $lost_widgets[] = $key;
    }
    $sidebars_widgets['wp_inactive_widgets'] = array_merge($lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets']);
    wp_set_sidebars_widgets($sidebars_widgets);
}
Example #2
0
/**
 *
 * HighThemes Options Framework
 * twitter : http://twitter.com/theHighthemes
 *
 */
function ht_sidebars_page()
{
    global $sidehook, $sidebar_options, $wpdb;
    if (isset($_POST['Submit'])) {
        // getting the list of custom sidebars
        $get_sidebar_options = ht_sidebar_generator::get_sidebars();
        $sidebar_name = str_replace(array("\n", "\r", "\t"), '', $_POST['ht_sidebar_name']);
        $sidebar_id = sanitize_title($sidebar_name);
        if ($sidebar_id == '') {
            $options_sidebar = $get_sidebar_options;
        } else {
            if (isset($get_sidebar_options[$sidebar_id])) {
                header("Location: admin.php?page=sidebars&error=true{$hidden_anchor}");
                die;
            }
            if (is_array($get_sidebar_options)) {
                $new_sidebar_gen[$sidebar_id] = $sidebar_name;
                $options_sidebar = array_merge($get_sidebar_options, (array) $new_sidebar_gen);
            } else {
                $options_sidebar[$sidebar_id] = $sidebar_name;
            }
        }
        update_option('ht_sidebar_generator', $options_sidebar);
        header("Location: admin.php?page=sidebars{$send}&saved=true{$hidden_anchor}");
        die;
    }
    if (isset($_GET['sn'])) {
        $sidebar_id = $_GET['sn'];
        $get_sidebar_options = ht_sidebar_generator::get_sidebars();
        if (array_key_exists($sidebar_id, $get_sidebar_options)) {
            unset($get_sidebar_options[$sidebar_id]);
            update_option('ht_sidebar_generator', $get_sidebar_options);
            //
            $get_widgets = wp_get_sidebars_widgets();
            unset($get_widgets['array_version']);
            foreach ($get_widgets as $key => $value) {
                if ($key == 'ht_' . $sidebar_id) {
                    unset($get_widgets['ht_' . $sidebar_id]);
                }
            }
            wp_set_sidebars_widgets($get_widgets);
            $sidebar_meta = $wpdb->get_results("SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value = '{$sidebar_id}'", ARRAY_A);
            if ($sidebar_meta) {
                if (is_array($sidebar_meta)) {
                    foreach ($sidebar_meta as $key => $value) {
                        delete_post_meta($value['post_id'], '_selected_sidebar');
                    }
                }
            } else {
                header("Location: admin.php?page=sidebars");
            }
        }
    }
    wp_enqueue_script('common');
    wp_enqueue_script('wp-lists');
    wp_enqueue_script('postbox');
    add_meta_box('ht_add_sidebars', 'Add New Sidebars', 'ht_add_sidebars', $sidehook, 'normal', 'high');
}
Example #3
0
 function import_widgets($file)
 {
     $data = unserialize(base64_decode(file_get_contents($file)));
     $data['positions']['wp_inactive_widgets'] = array();
     wp_set_sidebars_widgets($data['positions']);
     foreach ($data['widgets'] as $class => $widget) {
         update_option($class, $widget);
     }
 }
Example #4
0
 private static function clear_widgets()
 {
     $sidebars = wp_get_sidebars_widgets();
     $inactive = isset($sidebars['wp_inactive_widgets']) ? $sidebars['wp_inactive_widgets'] : array();
     unset($sidebars['wp_inactive_widgets']);
     foreach ($sidebars as $sidebar => $widgets) {
         $inactive = array_merge($inactive, $widgets);
         $sidebars[$sidebar] = array();
     }
     $sidebars['wp_inactive_widgets'] = $inactive;
     wp_set_sidebars_widgets($sidebars);
 }
 public function on_ecwid_plugin_installed()
 {
     $widgets = get_option('sidebars_widgets');
     if (strpos(implode(' ', $widgets['sidebar-1']), 'ecwidstorelink') === false) {
         array_unshift($widgets['sidebar-1'], 'ecwidstorelink-2');
         wp_set_sidebars_widgets($widgets);
         $options = get_option('widget_ecwidstorelink');
         if (!$options) {
             $options = array(2 => array('label' => __('Shop', 'ecwid-shopping-cart')), '_multiwidget' => 1);
         }
         update_option('widget_ecwidstorelink', $options);
     }
 }
Example #6
0
 public function import_sidebars_widgets($file)
 {
     $thememove_sidebars = get_option("sidebars_widgets");
     unset($thememove_sidebars['array_version']);
     $data = $this->file_options($file);
     if (is_array($data['sidebars'])) {
         $thememove_sidebars = array_merge((array) $thememove_sidebars, (array) $data['sidebars']);
         unset($thememove_sidebars['wp_inactive_widgets']);
         $thememove_sidebars = array_merge(array('wp_inactive_widgets' => array()), $thememove_sidebars);
         $thememove_sidebars['array_version'] = 2;
         wp_set_sidebars_widgets($thememove_sidebars);
     }
 }
Example #7
0
function rotary_install_default_widgets()
{
    //add default widgets to the home page side bar
    $sidebar = 'home-widget-area';
    $widget_name = 'text';
    $sidebars_widgets = wp_get_sidebars_widgets();
    if (empty($sidebars_widgets[$sidebar])) {
        $sidebar_options = get_option('widget_' . $widget_name);
        $startcount = $count = count($sidebar_options);
        $sidebar_options[$count] = array('title' => 'Rotary Vision', 'text' => '', 'filter' => '');
        $count++;
        $sidebar_options[$count] = array('title' => 'Rotary Mission', 'text' => '', 'filter' => '');
        $count++;
        $sidebar_options[$count] = array('title' => 'Project Filters', 'text' => '', 'filter' => '');
        $count++;
        $sidebar_options[$count] = array('title' => '4-Way Test', 'text' => '', 'filter' => '');
        update_option('widget_' . $widget_name, $sidebar_options);
        $sidebars_widgets[$sidebar] = array();
        for ($i = $startcount; $i <= $count; $i++) {
            $sidebars_widgets[$sidebar][] = $widget_name . '-' . $i;
        }
        //add the rotary blogroll
        $widget_name = 'rotarylinks';
        $sidebar_options = get_option('widget_' . $widget_name);
        $count = count($sidebar_options);
        $sidebar_options[$count] = array('images' => 0, 'name' => '', 'description' => '', 'rating' => 0, 'orderby' => 0, 'limit' => 0);
        update_option('widget_' . $widget_name, $sidebar_options);
        $sidebars_widgets[$sidebar][] = $widget_name . '-' . $count;
        wp_set_sidebars_widgets($sidebars_widgets);
    }
    //add default widgets to the secondary side bar
    $sidebar = 'secondary-widget-area';
    $widget_name = 'rotaryarchivewidget';
    $sidebars_widgets = wp_get_sidebars_widgets();
    if (empty($sidebars_widgets[$sidebar])) {
        $sidebar_options = get_option('widget_' . $widget_name);
        $count = count($sidebar_options);
        $sidebar_options[$count] = array('title' => 'Archives', 'showcount' => 0, 'linkcounter' => 0, 'truncmonth' => 0, 'jsexpand' => 1, 'groupbyyear' => 1, 'limitbycategory' => 0);
        $sidebars_widgets[$sidebar] = array();
        update_option('widget_' . $widget_name, $sidebar_options);
        $sidebars_widgets[$sidebar][] = $widget_name . '-' . $count;
        //add the tag cloud
        $widget_name = 'tag_cloud';
        $sidebar_options = get_option('widget_' . $widget_name);
        $count = count($sidebar_options);
        $sidebar_options[$count] = array('title' => 'Tags', 'taxonomy' => '');
        update_option('widget_' . $widget_name, $sidebar_options);
        $sidebars_widgets[$sidebar][] = $widget_name . '-' . $count;
        wp_set_sidebars_widgets($sidebars_widgets);
    }
}
 public function set_ls_sidebar()
 {
     $counter = $this->get_widget_index();
     $language_switcher_prefix = 'icl_lang_sel_widget-';
     $active_widgets = get_option('sidebars_widgets');
     foreach ($this->ls_sidebars as $target_sidebar_id => $add_widget) {
         $active_sidebar_widgets = $active_widgets[$target_sidebar_id];
         $widget_exists = $this->widget_exists($language_switcher_prefix, $active_sidebar_widgets);
         if ($add_widget && !$widget_exists) {
             $active_widgets = $this->add_to_sidebar($active_widgets, $target_sidebar_id, $language_switcher_prefix, $counter);
             $counter = $this->update_widget_options($counter);
         } elseif (!$add_widget && $widget_exists) {
             $active_widgets = $this->remove_widget($active_sidebar_widgets, $language_switcher_prefix, $active_widgets, $target_sidebar_id);
         }
     }
     wp_set_sidebars_widgets($active_widgets);
 }
Example #9
0
/**
 * Update some mods and options
 *
 * @since Fastfood 0.37
 */
function fastfood_upgrade()
{
    if (!is_admin()) {
        return;
    }
    $options_version = get_theme_mod('options_version', '0.36');
    if (version_compare($options_version, '0.37', '<')) {
        // footer widget area
        $sidebars_widgets = get_option('sidebars_widgets', array());
        $_sidebars_widgets = array();
        foreach (array('first-footer-widget-area', 'second-footer-widget-area', 'third-footer-widget-area') as $sidebar) {
            if (isset($sidebars_widgets[$sidebar])) {
                $_sidebars_widgets = array_merge($_sidebars_widgets, $sidebars_widgets[$sidebar]);
                unset($sidebars_widgets[$sidebar]);
            }
        }
        $sidebars_widgets['footer-widget-area'] = $_sidebars_widgets;
        wp_set_sidebars_widgets($sidebars_widgets);
        // header slider
        $header_image = get_theme_mod('header_image');
        if ($header_image === 'fastfood-slider-uploaded') {
            set_theme_mod('header_image', '');
            set_theme_mod('display_header_slider', 1);
        }
        // quickbar-navbar icons
        $background_color = get_theme_mod('background_color');
        $iconfont_color = get_theme_mod('background_icons_color');
        if ($background_color && !$iconfont_color) {
            $r = hexdec(substr($background_color, 0, 2));
            $g = hexdec(substr($background_color, 2, 2));
            $b = hexdec(substr($background_color, 4, 2));
            $yiq = ($r * 299 + $g * 587 + $b * 114) / 1000;
            $iconfont_color = $yiq >= 120 ? '#404040' : '#FFFFFF';
            set_theme_mod('background_icons_color', $iconfont_color);
        }
        // header text background
        $header_text_background = get_theme_mod('header_text_background');
        if ($header_text_background) {
            $match = array('transparent' => 'transparent', 'black' => '#000000', 'white' => '#FFFFFF');
            $header_text_background = isset($match[$header_text_background]) ? $match[$header_text_background] : 'transparent';
            set_theme_mod('header_text_background', $header_text_background);
        }
    }
    set_theme_mod('options_version', fastfood_get_info('version'));
}
Example #10
0
function wps_upgrade($current_version)
{
    global $wpdb;
    $table_name = $wpdb->prefix . "category_subdomains";
    //--- Run upgrades based on current version
    switch ($current_version) {
        case '':
            $wpdb->query("UPDATE " . $table_name . " SET is_subdomain = 1 WHERE not_subdomain = 0");
            $wpdb->query("UPDATE " . $table_name . " SET not_subdomain = 0");
            // Change options from old SR ones to CSD ones.
            update_option('csd_sub_pages', get_option('sr_sub_pages') ? get_option('sr_sub_pages') : '');
            update_option('csd_themes_on', get_option('sr_themes_on') ? get_option('sr_themes_on') : '');
            update_option('csd_catarchives_on', get_option('sr_catarchives_on') ? get_option('sr_catarchives_on') : '');
            update_option('csd_pagefilter_on', get_option('sr_pagefilter_on') ? get_option('sr_pagefilter_on') : '');
        case '0.5.0':
            // Change options to new names and settings
            update_option('wps_sub_pages', get_option('csd_sub_pages') ? WPS_CHK_ON : '');
            update_option('wps_themes', get_option('csd_themes_on') ? WPS_CHK_ON : '');
            update_option('wps_catarchives', get_option('csd_catarchives_on') ? WPS_CHK_ON : '');
            update_option('wps_pagefilter', get_option('csd_pagefilter_on') ? WPS_CHK_ON : '');
            update_option('wps_subdomainall', get_option('csd_subdomainall_on') ? WPS_CHK_ON : '');
            // Delete Old CSD options, leave the SR options so they can go back to old plugin
            delete_option('csd_themes_on');
            delete_option('csd_catarchives_on');
            delete_option('csd_pagefilter_on');
            delete_option('csd_subdomainall_on');
            // Change page meta keys to new ones
            $wpdb->query("UPDATE " . $wpdb->postmeta . " SET meta_key = 'wps_page_theme' WHERE meta_key = 'csd_page_theme'");
            $wpdb->query("UPDATE " . $wpdb->postmeta . " SET meta_key = 'wps_page_subdomain' WHERE meta_key = 'csd_page_subdomain'");
            $wpdb->query("UPDATE " . $wpdb->postmeta . " SET meta_key = 'wps_tie_to_category' WHERE meta_key = 'csd_tie_to_category'");
        case '0.5.1':
            // Change Widgets Names to the New Names
            $widgets = wp_get_sidebars_widgets();
            foreach (array_keys($widgets) as $sidebar) {
                if ($key = array_search('csd-site-list', $widgets[$sidebar])) {
                    $widgets[$sidebar][$key] = 'wps-sitelist';
                }
                if ($key = array_search('csd-categories', $widgets[$sidebar])) {
                    $widgets[$sidebar][$key] = 'wps-categories';
                }
            }
            wp_set_sidebars_widgets($widgets);
            break;
    }
}
Example #11
0
 function import_widgets($folder = '', $file = 'widgets.txt')
 {
     $file_path = get_template_directory() . '/library/import/files/' . $folder . '/' . $file;
     $file_data = $this->get_file_contents($file_path);
     $data = json_decode($file_data, true);
     foreach ((array) $data['widgets'] as $widget_id => $widget_data) {
         update_option('widget_' . $widget_id, $widget_data);
     }
     $slice_sidebars = get_option("sidebars_widgets");
     unset($slice_sidebars['array_version']);
     if (is_array($data['sidebars'])) {
         $slice_sidebars = array_merge((array) $slice_sidebars, (array) $data['sidebars']);
         unset($slice_sidebars['wp_inactive_widgets']);
         $slice_sidebars = array_merge(array('wp_inactive_widgets' => array()), $slice_sidebars);
         $slice_sidebars['array_version'] = 2;
         wp_set_sidebars_widgets($slice_sidebars);
     }
 }
Example #12
0
/**
 * Upgrade to 4.0
 */
function mr_upgrade_to_4_0()
{
    try {
        $sidebar_widgets = wp_get_sidebars_widgets();
        foreach ($sidebar_widgets as &$widgets) {
            foreach ($widgets as $widget_key => $widget_id) {
                if (strpos($widget_id, 'top_rating_results_widget') !== false) {
                    $instance = substr($widget_id, 26);
                    $widget_id = 'mr_rating_results_list-' . $instance;
                    $widget_options = get_option('widget_top_rating_results_widget');
                    $show_filter = $widget_options[$instance]['show_category_filter'];
                    $term_id = $widget_options[$instance]['category_id'];
                    unset($widget_options[$instance]['show_category_filter']);
                    $widget_options[$instance]['show_filter'] = $show_filter;
                    unset($widget_options[$instance]['category_id']);
                    $widget_options[$instance]['term_id'] = $term_id;
                    $widget_options[$instance]['taxonomy'] = 'category';
                    add_option('widget_mr_rating_results_list', $widget_options);
                    delete_option('widget_top_rating_results_widget');
                    $widgets[$widget_key] = $widget_id;
                }
            }
        }
        // custom settings
        $custom_text_settings = (array) get_option(Multi_Rating::CUSTOM_TEXT_SETTINGS);
        if (isset($custom_text_settings['mr_category_label_text'])) {
            $custom_text_settings[Multi_Rating::FILTER_LABEL_TEXT_OPTION] = $custom_text_settings['mr_category_label_text'];
            unset($custom_text_settings['mr_category_label_text']);
        }
        if (isset($custom_text_settings['mr_top_rating_results_title_text'])) {
            $custom_text_settings[Multi_Rating::RATING_RESULTS_LIST_TITLE_TEXT_OPTION] = $custom_text_settings['mr_top_rating_results_title_text'];
            unset($custom_text_settings['mr_top_rating_results_title_text']);
        }
        update_option(Multi_Rating::CUSTOM_TEXT_SETTINGS, $custom_text_settings);
        // PHP files
        if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'class-rating-result.php')) {
            unlink(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'class-rating-result.php');
        }
    } catch (Exception $e) {
        die(__('An error occured.', 'multi-rating'));
    }
    wp_set_sidebars_widgets($sidebar_widgets);
}
Example #13
0
 function gk_set_sidebar_default()
 {
     global $_wp_sidebars_widgets;
     //初始化widget
     $widgets = gk_config('widget');
     foreach ($widgets as $name => $setting) {
         $id = 102;
         $option = get_option('widget_' . $name);
         if (!$option) {
             $option = array();
         }
         if (!isset($option[$id]) || gk_config('sidebar_debug')) {
             $option[$id] = $setting;
             update_option('widget_' . $name, $option);
         }
     }
     //初始化边栏
     $sidebars_option = wp_get_sidebars_widgets();
     $update_sidebar = true;
     $sidebars = gk_config('sidebar');
     foreach ($sidebars as $sidebar) {
         if (isset($sidebar['default']) && (!isset($sidebars_option[$sidebar['id']]) || gk_config('sidebar_debug'))) {
             $sidebars_option[$sidebar['id']] = array_map(create_function('$v', 'return $v.\'-102\';'), explode(',', $sidebar['default']));
             $update_sidebar = true;
         }
     }
     if ($update_sidebar) {
         $_wp_sidebars_widgets = $sidebars_option;
         wp_set_sidebars_widgets($sidebars_option);
     }
 }
function retrieve_widgets($theme_changed = false)
{
    global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets;
    $registered_sidebar_keys = array_keys($wp_registered_sidebars);
    $orphaned = 0;
    $old_sidebars_widgets = get_theme_mod('sidebars_widgets');
    if (is_array($old_sidebars_widgets)) {
        // time() that sidebars were stored is in $old_sidebars_widgets['time']
        $_sidebars_widgets = $old_sidebars_widgets['data'];
        remove_theme_mod('sidebars_widgets');
        foreach ($_sidebars_widgets as $sidebar => $widgets) {
            if ('wp_inactive_widgets' == $sidebar || 'orphaned_widgets' == substr($sidebar, 0, 16)) {
                continue;
            }
            if (!in_array($sidebar, $registered_sidebar_keys)) {
                $_sidebars_widgets['orphaned_widgets_' . ++$orphaned] = $widgets;
                unset($_sidebars_widgets[$sidebar]);
            }
        }
    } else {
        if (empty($sidebars_widgets)) {
            return;
        }
        unset($sidebars_widgets['array_version']);
        $old = array_keys($sidebars_widgets);
        sort($old);
        sort($registered_sidebar_keys);
        if ($old == $registered_sidebar_keys) {
            return;
        }
        $_sidebars_widgets = array('wp_inactive_widgets' => !empty($sidebars_widgets['wp_inactive_widgets']) ? $sidebars_widgets['wp_inactive_widgets'] : array());
        unset($sidebars_widgets['wp_inactive_widgets']);
        foreach ($wp_registered_sidebars as $id => $settings) {
            if ($theme_changed) {
                $_sidebars_widgets[$id] = array_shift($sidebars_widgets);
            } else {
                // no theme change, grab only sidebars that are currently registered
                if (isset($sidebars_widgets[$id])) {
                    $_sidebars_widgets[$id] = $sidebars_widgets[$id];
                    unset($sidebars_widgets[$id]);
                }
            }
        }
        foreach ($sidebars_widgets as $val) {
            if (is_array($val) && !empty($val)) {
                $_sidebars_widgets['orphaned_widgets_' . ++$orphaned] = $val;
            }
        }
    }
    // discard invalid, theme-specific widgets from sidebars
    $shown_widgets = array();
    foreach ($_sidebars_widgets as $sidebar => $widgets) {
        if (!is_array($widgets)) {
            continue;
        }
        $_widgets = array();
        foreach ($widgets as $widget) {
            if (isset($wp_registered_widgets[$widget])) {
                $_widgets[] = $widget;
            }
        }
        $_sidebars_widgets[$sidebar] = $_widgets;
        $shown_widgets = array_merge($shown_widgets, $_widgets);
    }
    $sidebars_widgets = $_sidebars_widgets;
    unset($_sidebars_widgets, $_widgets);
    // find hidden/lost multi-widget instances
    $lost_widgets = array();
    foreach ($wp_registered_widgets as $key => $val) {
        if (in_array($key, $shown_widgets, true)) {
            continue;
        }
        $number = preg_replace('/.+?-([0-9]+)$/', '$1', $key);
        if (2 > (int) $number) {
            continue;
        }
        $lost_widgets[] = $key;
    }
    $sidebars_widgets['wp_inactive_widgets'] = array_merge($lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets']);
    wp_set_sidebars_widgets($sidebars_widgets);
    return $sidebars_widgets;
}
Example #15
0
        ob_start();
        call_user_func_array($control['callback'], $control['params']);
        ob_end_clean();
        break;
    }
    $sidebars_widgets[$sidebar_id] = $sidebar;
    // Remove old position.
    if (!isset($_POST['delete_widget'])) {
        foreach ($sidebars_widgets as $key => $sb) {
            if (is_array($sb)) {
                $sidebars_widgets[$key] = array_diff($sb, array($widget_id));
            }
        }
        array_splice($sidebars_widgets[$sidebar_id], $position, 0, $widget_id);
    }
    wp_set_sidebars_widgets($sidebars_widgets);
    wp_redirect(admin_url('widgets.php?message=0'));
    exit;
}
// Output the widget form without js
if (isset($_GET['editwidget']) && $_GET['editwidget']) {
    $widget_id = $_GET['editwidget'];
    if (isset($_GET['addnew'])) {
        // Default to the first sidebar
        $keys = array_keys($wp_registered_sidebars);
        $sidebar = array_shift($keys);
        if (isset($_GET['base']) && isset($_GET['num'])) {
            // multi-widget
            // Copy minimal info from an existing instance of this widget to a new instance
            foreach ($wp_registered_widget_controls as $control) {
                if ($_GET['base'] === $control['id_base']) {
Example #16
0
 /**
  * Process submissions for the Edit Sidebar screen.
  *
  * Handles cases where the sidebar is renamed, reassigns pages, and
  * removes the sidebar if no pages are selected. Requires a valid nonce.
  *
  * @since 1.1.0
  */
 public static function process_sidebar_update()
 {
     global $wpdb;
     if (isset($_POST['simplepagesidebars_sidebar_name'])) {
         $current_name = stripslashes($_POST['simplepagesidebars_sidebar_name']);
         check_admin_referer('update-sidebar_' . $current_name, 'simplepagesidebars_sidebar_update_nonce');
         $new_name = stripslashes($_POST['simplepagesidebars_sidebar_name_new']);
         $new_name = !empty($new_name) && $new_name != $current_name ? trim(wp_strip_all_tags($new_name)) : null;
         $pages = isset($_POST['simplepagesidebars_sidebar_pages']) ? wp_parse_id_list($_POST['simplepagesidebars_sidebar_pages']) : array();
         // Retrieve IDs of pages using the existing sidebar name.
         $current_pages = self::get_page_ids_using_sidebar($current_name);
         // Pages to reset to the default sidebar.
         $reset_pages = array_diff($current_pages, $pages);
         if ($reset_pages) {
             foreach ($reset_pages as $page_id) {
                 delete_post_meta($page_id, '_sidebar_name');
             }
         }
         // Update all sidebars if there is a new sidebar name.
         if ($new_name) {
             $wpdb->query($wpdb->prepare("UPDATE {$wpdb->postmeta} SET meta_value=%s WHERE meta_key='_sidebar_name' AND meta_value=%s", $new_name, $current_name));
         } elseif ($update_pages = array_diff($pages, $current_pages)) {
             foreach ($update_pages as $page_id) {
                 update_post_meta($page_id, '_sidebar_name', addslashes($current_name));
             }
         }
         // The sidebar should have been removed from all pages.
         // Let WordPress move widgets to Inactive Sidebar, redirect to Widgets screen, and notify user.
         if (empty($pages)) {
             wp_safe_redirect(esc_url_raw(add_query_arg('simple-page-sidebars-message', 1, admin_url('widgets.php'))));
             exit;
         }
         // Migrate widgets if the sidebar name was changed.
         if ($new_name) {
             $sidebars_widgets = wp_get_sidebars_widgets();
             $old_id = 'page-sidebar-' . sanitize_key($current_name);
             $new_id = 'page-sidebar-' . sanitize_key($new_name);
             // If new id matches an existing id, merge old widgets with new.
             if (isset($sidebars_widgets[$new_id])) {
                 $sidebars_widgets[$new_id] = array_merge($sidebars_widgets[$new_id], $sidebars_widgets[$old_id]);
             } elseif (isset($sidebars_widgets[$old_id])) {
                 $sidebars_widgets[$new_id] = $sidebars_widgets[$old_id];
             }
             // Remove old widget area and save.
             unset($sidebars_widgets[$old_id]);
             #echo '<pre>'; print_r( $sidebars_widgets ); echo '</pre>'; exit;
             wp_set_sidebars_widgets($sidebars_widgets);
         }
         // Redirect back to sidebar edit screen with an update message.
         $name = !empty($new_name) ? $new_name : $current_name;
         $redirect_link = self::get_sidebar_edit_link($name, array('message' => 1));
         wp_safe_redirect(esc_url_raw($redirect_link));
         exit;
     }
 }
Example #17
0
             }
             update_option('widget_' . $language_switcher_name, $language_switcher_content);
             $counter++;
             $active_widgets[$target_sidebar_id] = $active_sidebar_widgets;
             $update_sidebars_widgets = true;
         } elseif (!$add_widget && $widget_exists) {
             foreach ($active_sidebar_widgets as $index => $active_sidebar_widget) {
                 if (strpos($active_sidebar_widget, $language_switcher_prefix) !== false) {
                     unset($active_widgets[$target_sidebar_id][$index]);
                     $update_sidebars_widgets = true;
                 }
             }
         }
     }
     if ($update_sidebars_widgets) {
         wp_set_sidebars_widgets($active_widgets);
     }
 }
 $filtered_icl_lso_link_empty = filter_input(INPUT_POST, 'icl_lso_link_empty', FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE);
 $filtered_icl_lso_flags = filter_input(INPUT_POST, 'icl_lso_flags', FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE);
 $filtered_icl_lso_native_lang = filter_input(INPUT_POST, 'icl_lso_native_lang', FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE);
 $filtered_icl_lso_display_lang = filter_input(INPUT_POST, 'icl_lso_display_lang', FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE);
 $iclsettings['icl_lso_link_empty'] = intval($filtered_icl_lso_link_empty);
 $iclsettings['icl_lso_flags'] = $filtered_icl_lso_flags !== false ? $filtered_icl_lso_flags : 0;
 $iclsettings['icl_lso_native_lang'] = $filtered_icl_lso_native_lang !== false ? $filtered_icl_lso_native_lang : 0;
 $iclsettings['icl_lso_display_lang'] = $filtered_icl_lso_display_lang !== false ? $filtered_icl_lso_display_lang : 0;
 if (!$this->get_setting('setup_complete')) {
     $iclsettings['setup_wizard_step'] = 4;
     //$iclsettings['setup_complete'] = 1;
     if (isset($iclsettings['setup_reset'])) {
         unset($iclsettings['setup_reset']);
 /**
  * Sets the sidebar widgets
  *
  * @since 1.0.0
  */
 private function set_sidebar_widgets($widgets)
 {
     $sidebar_widgets = wp_get_sidebars_widgets();
     $sidebar_widgets['cherry-mega-menu'] = $widgets;
     wp_set_sidebars_widgets($sidebar_widgets);
 }
Example #19
0
 /**
  * Add default widget upon successful theme activation.
  *
  * @since 0.1.0
  */
 public static function add_default_widget($widget, $overwrite_widgets = false)
 {
     global $wpgo_connect_multi_number;
     $multi_number = $wpgo_connect_multi_number;
     $wpgo_connect_multi_number++;
     $args = WPGo_UTILITY::get_widget_args($widget['widget_name']);
     // returns an array
     $id_base = $args['_id_base'];
     $widget_number = $args['_widget_num'];
     $widget_id = $id_base . '-' . $multi_number;
     $widget_area = $widget['widget_area'];
     /* Create widget. */
     $add_new_widget = get_option('widget_' . $id_base);
     $add_new_widget[$multi_number] = $widget['default_settings'];
     $add_new_widget['_multiwidget'] = 1;
     update_option('widget_' . $id_base, $add_new_widget);
     /* Add to widget area. */
     $add_to_sidebar = get_option('sidebars_widgets');
     /* Overwrite (or just add to) existing widgets in the specified widget area. */
     if ($overwrite_widgets) {
         $add_to_sidebar[$widget_area] = array();
     }
     $add_to_sidebar[$widget_area][] = $widget_id;
     wp_set_sidebars_widgets($add_to_sidebar);
 }
 /**
  * Deletes a widget.
  *
  * @param string $widget_id The id of the widget to delete
  */
 public static function delete_widget($widget_id)
 {
     global $wp_registered_widgets;
     if (!isset($wp_registered_widgets[$widget_id])) {
         return false;
     }
     $sidebars = wp_get_sidebars_widgets();
     $sidebar_id = self::find_sidebar_for_widget($widget_id);
     $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array();
     $sidebar = array_diff($sidebar, array($widget_id));
     $sidebars[$sidebar_id] = $sidebar;
     wp_set_sidebars_widgets($sidebars);
     return true;
 }
 function codeless_import_sidebars_widgets($file)
 {
     $widgets = get_option("sidebars_widgets");
     unset($widgets['array_version']);
     $data = $this->read_file($file);
     if (is_array($data['sidebars'])) {
         $widgets = array_merge((array) $widgets, (array) $data['sidebars']);
         unset($widgets['wp_inactive_widgets']);
         $widgets = array_merge(array('wp_inactive_widgets' => array()), $widgets);
         $widgets['array_version'] = 2;
         wp_set_sidebars_widgets($widgets);
     }
 }
 /**
  * Sets the defaults for the timer
  *
  * @since 3.0
  * @access public
  * @author Andrew Ferguson
  */
 public static function install()
 {
     $plugin_data = get_plugin_data(__FILE__);
     //Move widget details from old option to new option only if the new option does not exist
     if (($oldWidget = get_option("widget_fergcorp_countdown")) && !get_option("widget_fergcorp_countdown_timer_widget")) {
         update_option("widget_fergcorp_countdown_timer_widget", array("title" => $oldWidget["title"], "countLimit" => $oldWidget["count"]));
         delete_option("widget_fergcorp_countdown");
         global $sidebars_widgets;
         //check to see if the old widget is being used
         $i = 0;
         $j = 0;
         foreach ($sidebars_widgets as $sidebar => $widgets) {
             $thisSidebar = $sidebar;
             if ('wp_inactive_widgets' == $sidebar) {
                 continue;
             }
             if (is_array($widgets)) {
                 foreach ($widgets as $widget) {
                     if ("fergcorp_countdowntimer" == $widget) {
                         $sidebars_widgets[$thisSidebar][$j] = "fergcorp_countdown_timer_widget-2";
                         //not sure why the ID has to be 2, but it does
                     }
                     $j++;
                 }
             }
         }
         wp_set_sidebars_widgets($sidebars_widgets);
         wp_get_sidebars_widgets();
     } elseif ($oldWidget) {
         delete_option("widget_fergcorp_countdown");
     }
     //Move timeFormat data from old option to new option only if the new option does not exist
     if (($timeOffset = get_option("fergcorp_countdownTimer_timeOffset")) && !get_option("fergcorp_countdownTimer_timeFormat")) {
         update_option('fergcorp_countdownTimer_timeFormat', $timeOffset);
         delete_option("fergcorp_countdownTimer_timeOffset");
     } elseif ($timeOffset) {
         delete_option("fergcorp_countdownTimer_timeOffset");
     }
     $oneTimeEvent = get_option("fergcorp_countdownTimer_oneTimeEvent");
     if ($oneTimeEvent && gettype($oneTimeEvent[0]) == "array") {
         $event_object_array = array();
         foreach ($oneTimeEvent as $event) {
             array_push($event_object_array, new Fergcorp_Countdown_Timer_Event($event["date"], $event["text"], $event["link"], $event["timeSince"]));
         }
         update_option("fergcorp_countdownTimer_oneTimeEvent", $event_object_array);
     }
     //Install the defaults
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'deleteOneTimeEvents', '0');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'timeFormat', 'F jS, Y, g:i a');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'showYear', '1');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'showMonth', '1');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'showWeek', '0');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'showDay', '1');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'showHour', '1');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'showMinute', '1');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'showSecond', '0');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'stripZero', '1');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'enableJS', '1');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'timeSinceTime', '0');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'titleSuffix', ':<br />');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'enableShortcodeExcerpt', '0');
     Fergcorp_Countdown_Timer::install_option('fergcorp_countdownTimer_', 'oneTimeEvent', '0');
     //Update version number...last thing
     update_option("fergcorp_countdownTimer_version", $plugin_data["Version"]);
 }
Example #23
0
 public function importWidgets($data)
 {
     $sidebars = wp_get_sidebars_widgets();
     $widgetsToSave = array();
     $widgetsCount = array();
     foreach ($data as $sidebarId => $widgets) {
         foreach ($widgets as $widgetData) {
             $id = 'widget_' . $widgetData['id'];
             if (!isset($widgetsToSave[$id])) {
                 $widgetsToSave[$id] = array();
             }
             $widgetsToSave[$id][] = $widgetData['params'];
         }
     }
     // d($sidebars);
     foreach ($data as $sidebarId => $widgets) {
         if (!array_key_exists($sidebarId, $sidebars)) {
             continue;
         }
         if ($sidebars[$sidebarId]) {
             $sidebars[$sidebarId] = array();
         }
         foreach ($widgets as $widgetData) {
             $id = $widgetData['id'];
             if (!isset($widgetsCount[$id])) {
                 $widgetsCount[$id] = 1;
             }
             $widgetFriendlyName = $id . '-' . $widgetsCount[$id];
             $sidebars[$sidebarId][] = $widgetFriendlyName;
             $widgetsCount[$id]++;
         }
     }
     foreach ($widgetsToSave as $widgetId => $data) {
         $dataToSave = array();
         $counter = 1;
         foreach ($data as $d) {
             $dataToSave[$counter] = $d;
             $counter++;
         }
         $dataToSave['_multiwidget'] = 1;
         update_option($widgetId, $dataToSave);
     }
     wp_set_sidebars_widgets($sidebars);
 }
Example #24
0
 function add_default_widget()
 {
     if (!is_active_widget(false, false, 'mp_cart_widget')) {
         $sidebars_widgets = wp_get_sidebars_widgets();
         if (is_array($sidebars_widgets)) {
             foreach ($sidebars_widgets as $sidebar => $widgets) {
                 if ('wp_inactive_widgets' == $sidebar) {
                     continue;
                 }
                 if (is_array($widgets)) {
                     array_unshift($widgets, 'mp_cart_widget-1');
                     $sidebars_widgets[$sidebar] = $widgets;
                     wp_set_sidebars_widgets($sidebars_widgets);
                     $settings = array();
                     $settings[1] = array('title' => __('Shopping Cart', 'mp'), 'custom_text' => '', 'show_thumbnail' => 1, 'size' => 25);
                     $settings['_multiwidget'] = 1;
                     update_option('widget_mp_cart_widget', $settings);
                     return true;
                 }
             }
         }
     }
 }
 /**
  * @group install
  * @covers Fergcorp_Countdown_Timer::install
  */
 public function test_install_partial_v2_v_3()
 {
     $oneTimeEvent = array(array("date" => 1356998400, "text" => "First of the year", "timeSince" => "1", "link" => "http://google.com"), array("date" => 1451001600, "text" => "Christmas 2015", "timeSince" => NULL, "link" => ""));
     $sidebars_widgets = array("wp_inactive_widgets" => array(), "sidebar-1" => array("fergcorp_countdowntimer", "search-2", "recent-posts-2", "recent-comments-2", "archives-2", "categories-2", "meta-2"), "sidebar-2" => array(), "sidebar-3" => array(), "array_version" => 3);
     wp_set_sidebars_widgets($sidebars_widgets);
     wp_get_sidebars_widgets();
     $installValues = array('widget_fergcorp_countdown_timer_widget' => 'blahblah', 'widget_fergcorp_countdown' => 'a:2:{s:5:"title";s:18:"My Countdown Timer";s:5:"count";i:5;}', 'fergcorp_countdownTimer_deleteOneTimeEvents' => '0', 'fergcorp_countdownTimer_timeOffset' => 'j M Y, G:i:s', 'fergcorp_countdownTimer_timeFormat' => 'F jS, Y, g:i a', 'fergcorp_countdownTimer_showYear' => '0', 'fergcorp_countdownTimer_showMonth' => '1', 'fergcorp_countdownTimer_showWeek' => '0', 'fergcorp_countdownTimer_showDay' => '1', 'fergcorp_countdownTimer_showHour' => '0', 'fergcorp_countdownTimer_showMinute' => '0', 'fergcorp_countdownTimer_showSecond' => '0', 'fergcorp_countdownTimer_stripZero' => '1', 'fergcorp_countdownTimer_enableJS' => '1', 'fergcorp_countdownTimer_timeSinceTime' => '0', 'fergcorp_countdownTimer_titleSuffix' => '::', 'fergcorp_countdownTimer_enableShortcodeExcerpt' => '0', 'fergcorp_countdownTimer_version' => '2.4.3', 'fergcorp_countdownTimer_oneTimeEvent' => $oneTimeEvent);
     foreach ($installValues as $key => $value) {
         update_option($key, $value);
     }
     $updatedValues = array('deleteOneTimeEvents' => '0', 'showYear' => '0', 'showMonth' => '1', 'showWeek' => '0', 'showDay' => '1', 'showHour' => '0', 'showMinute' => '0', 'showSecond' => '0', 'stripZero' => '1', 'enableJS' => '1', 'timeSinceTime' => '0', 'titleSuffix' => '::', 'enableShortcodeExcerpt' => '0', 'version' => $this->pluginData["Version"]);
     $this->plugin->install();
     foreach ($updatedValues as $key => $value) {
         $this->assertEquals($value, get_option("fergcorp_countdownTimer_" . $key));
     }
     $this->assertEquals(get_option("fergcorp_countdownTimer_timeFormat"), "F jS, Y, g:i a");
     $updatedOneTimeEvent = get_option("fergcorp_countdownTimer_oneTimeEvent");
     for ($i = 0; $i < count($oneTimeEvent); $i++) {
         $this->assertEquals($oneTimeEvent[$i]["date"], $updatedOneTimeEvent[$i]->getTimestamp());
         $this->assertEquals($oneTimeEvent[$i]["text"], $updatedOneTimeEvent[$i]->getTitle());
         $this->assertEquals($oneTimeEvent[$i]["timeSince"], $updatedOneTimeEvent[$i]->getTimeSince());
         $this->assertEquals($oneTimeEvent[$i]["link"], $updatedOneTimeEvent[$i]->getURL());
     }
 }
 function copy_theme_mods($from, $to)
 {
     // we can copy settings from parent to child even if neither is currently active
     // so we need cases for active parent, active child or neither
     // get active theme
     $active_theme = get_stylesheet();
     $this->debug('from: ' . $from . ' to: ' . $to . ' active: ' . $active_theme, __FUNCTION__);
     // create temp array from parent settings
     $child_mods = get_option('theme_mods_' . $from);
     if ($active_theme == $from) {
         $this->debug('from is active, using active widgets', __FUNCTION__);
         // if parent theme is active, get widgets from active sidebars_widgets array
         $child_widgets = retrieve_widgets();
     } else {
         $this->debug('from not active, using theme mods widgets', __FUNCTION__);
         // otherwise get widgets from parent theme mods
         $child_widgets = empty($child_mods['sidebars_widgets']['data']) ? array('wp_inactive_widgets' => array()) : $child_mods['sidebars_widgets']['data'];
     }
     if ($active_theme == $to) {
         $this->debug('to active, setting active widgets', __FUNCTION__);
         // if child theme is active, remove widgets from temp array
         unset($child_mods['sidebars_widgets']);
         // copy widgets to active sidebars_widgets array
         wp_set_sidebars_widgets($child_widgets);
     } else {
         $this->debug('child not active, saving widgets in theme mods', __FUNCTION__);
         // otherwise copy widgets to temp array with time stamp
         $child_mods['sidebars_widgets']['data'] = $child_widgets;
         $child_mods['sidebars_widgets']['time'] = time();
     }
     $this->debug('saving child theme mods:' . LF . print_r($child_mods, TRUE), __FUNCTION__);
     // copy temp array to child mods
     update_option('theme_mods_' . $to, $child_mods);
 }
function wp_ajax_save_widget()
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates;
    check_ajax_referer('save-sidebar-widgets', 'savewidgets');
    if (!current_user_can('edit_theme_options') || !isset($_POST['id_base'])) {
        wp_die(-1);
    }
    unset($_POST['savewidgets'], $_POST['action']);
    do_action('load-widgets.php');
    do_action('widgets.php');
    do_action('sidebar_admin_setup');
    $id_base = $_POST['id_base'];
    $widget_id = $_POST['widget-id'];
    $sidebar_id = $_POST['sidebar'];
    $multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0;
    $settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false;
    $error = '<p>' . __('An error has occurred. Please reload the page and try again.') . '</p>';
    $sidebars = wp_get_sidebars_widgets();
    $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array();
    // delete
    if (isset($_POST['delete_widget']) && $_POST['delete_widget']) {
        if (!isset($wp_registered_widgets[$widget_id])) {
            wp_die($error);
        }
        $sidebar = array_diff($sidebar, array($widget_id));
        $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
    } elseif ($settings && preg_match('/__i__|%i%/', key($settings))) {
        if (!$multi_number) {
            wp_die($error);
        }
        $_POST['widget-' . $id_base] = array($multi_number => array_shift($settings));
        $widget_id = $id_base . '-' . $multi_number;
        $sidebar[] = $widget_id;
    }
    $_POST['widget-id'] = $sidebar;
    foreach ((array) $wp_registered_widget_updates as $name => $control) {
        if ($name == $id_base) {
            if (!is_callable($control['callback'])) {
                continue;
            }
            ob_start();
            call_user_func_array($control['callback'], $control['params']);
            ob_end_clean();
            break;
        }
    }
    if (isset($_POST['delete_widget']) && $_POST['delete_widget']) {
        $sidebars[$sidebar_id] = $sidebar;
        wp_set_sidebars_widgets($sidebars);
        echo "deleted:{$widget_id}";
        wp_die();
    }
    if (!empty($_POST['add_new'])) {
        wp_die();
    }
    if ($form = $wp_registered_widget_controls[$widget_id]) {
        call_user_func_array($form['callback'], $form['params']);
    }
    wp_die();
}
Example #28
0
/**
 * Assigns a default set of widgets
 */
function k2_default_widgets()
{
    $sidebars_widgets = wp_get_widget_defaults();
    if (isset($sidebars_widgets['sidebar-1']) and isset($sidebars_widgets['sidebar-2'])) {
        $sidebars_widgets['sidebar-1'] = $sidebars_widgets['sidebar-2'] = array();
        k2_add_widget($sidebars_widgets['sidebar-1'], 'search');
        k2_add_widget($sidebars_widgets['sidebar-1'], 'k2-about');
        k2_add_widget($sidebars_widgets['sidebar-1'], 'recent-posts');
        k2_add_widget($sidebars_widgets['sidebar-1'], 'recent-comments');
        k2_add_widget($sidebars_widgets['sidebar-2'], 'archives');
        k2_add_widget($sidebars_widgets['sidebar-2'], 'tag_cloud');
        k2_add_widget($sidebars_widgets['sidebar-2'], 'links');
        wp_set_sidebars_widgets($sidebars_widgets);
    }
}
Example #29
0
/**
 * Ajax handler for removing inactive widgets.
 *
 * @since 4.4.0
 */
function wp_ajax_delete_inactive_widgets()
{
    check_ajax_referer('remove-inactive-widgets', 'removeinactivewidgets');
    if (!current_user_can('edit_theme_options')) {
        wp_die(-1);
    }
    unset($_POST['removeinactivewidgets'], $_POST['action']);
    do_action('load-widgets.php');
    do_action('widgets.php');
    do_action('sidebar_admin_setup');
    $sidebars_widgets = wp_get_sidebars_widgets();
    foreach ($sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id) {
        $pieces = explode('-', $widget_id);
        $multi_number = array_pop($pieces);
        $id_base = implode('-', $pieces);
        $widget = get_option('widget_' . $id_base);
        unset($widget[$multi_number]);
        update_option('widget_' . $id_base, $widget);
        unset($sidebars_widgets['wp_inactive_widgets'][$key]);
    }
    wp_set_sidebars_widgets($sidebars_widgets);
    wp_die();
}
 /**
  * This function activates a child theme.
  *
  * @uses switch_theme()
  *
  * @since     1.0.0
  *
  * @return    null
  */
 function activate_child_theme($theme, $preserve_settings = true)
 {
     // Bail if current user cannot switch themes
     if (!current_user_can('switch_themes')) {
         return false;
     }
     // Preserve their widget and menu locations
     if ($preserve_settings) {
         $sidebar_widgets = wp_get_sidebars_widgets();
         $menu_locations = get_nav_menu_locations();
         switch_theme($theme);
         // Carry over widgets and menus to child theme
         set_theme_mod('nav_menu_locations', $menu_locations);
         wp_set_sidebars_widgets($sidebar_widgets);
     } else {
         switch_theme($theme);
     }
     return true;
 }