<?php

function wp_list_widgets()
{
    global $wp_registered_widgets, $wp_registered_widget_controls;
    $sort = $wp_registered_widgets;
    usort($sort, '_sort_name_callback');
    $done = array();
    foreach ($sort as $widget) {
        if (in_array($widget['callback'], $done, true)) {
            continue;
        }
        $sidebar = is_active_widget($widget['callback'], $widget['id'], false, false);
        $done[] = $widget['callback'];
        if (!isset($widget['params'][0])) {
            $widget['params'][0] = array();
        }
        $args = array('widget_id' => $widget['id'], 'widget_name' => $widget['name'], '_display' => 'template');
        if (isset($wp_registered_widget_controls[$widget['id']]['id_base']) && isset($widget['params'][0]['number'])) {
            $id_base = $wp_registered_widget_controls[$widget['id']]['id_base'];
            $args['_temp_id'] = "{$id_base}-__i__";
            $args['_multi_num'] = next_widget_id_number($id_base);
            $args['_add'] = 'multi';
        } else {
            $args['_add'] = 'single';
            if ($sidebar) {
                $args['_hide'] = '1';
            }
        }
        $control_args = array(0 => $args, 1 => $widget['params'][0]);
        $sidebar_args = wp_list_widget_controls_dynamic_sidebar($control_args);
        wp_widget_control(...$sidebar_args);
    }
}
function _sort_name_callback($a, $b)
{
    return strnatcasecmp($a['name'], $b['name']);
}
function wp_list_widget_controls($sidebar, $sidebar_name = '')
{
    add_filter('dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar');
    $description = wp_sidebar_description($sidebar);
    echo '<div id="' . esc_attr($sidebar) . '" class="widgets-sortables">';
    if ($sidebar_name) {
        $add_to = sprintf(__('Add to: %s'), $sidebar_name);
        ?>
		<div class="sidebar-name" data-add-to="<?php 
        echo esc_attr($add_to);
        ?>">
			<button type="button" class="handlediv hide-if-no-js" aria-expanded="true">
				<span class="screen-reader-text"><?php 
        echo esc_html($sidebar_name);
        ?></span>
				<span class="toggle-indicator" aria-hidden="true"></span>
			</button>
			<h2><?php 
        echo esc_html($sidebar_name);
        ?> <span class="spinner"></span></h2>
		</div>
		<?php 
    }
    if (!empty($description)) {
        ?>
		<div class="sidebar-description">
			<p class="description"><?php 
        echo $description;
        ?></p>
		</div>
		<?php 
    }
    dynamic_sidebar($sidebar);
    echo '</div>';
}
function wp_list_widget_controls_dynamic_sidebar($params)
{
    global $wp_registered_widgets;
    static $i = 0;
    $i++;
    $widget_id = $params[0]['widget_id'];
    $id = isset($params[0]['_temp_id']) ? $params[0]['_temp_id'] : $widget_id;
    $hidden = isset($params[0]['_hide']) ? ' style="display:none;"' : '';
    $params[0]['before_widget'] = "<div id='widget-{$i}_{$id}' class='widget'{$hidden}>";
    $params[0]['after_widget'] = '</div>';
    $params[0]['before_title'] = '%BEG_OF_TITLE%';
    $params[0]['after_title'] = '%END_OF_TITLE%';
    if (is_callable($wp_registered_widgets[$widget_id]['callback'])) {
        $wp_registered_widgets[$widget_id]['_callback'] = $wp_registered_widgets[$widget_id]['callback'];
        $wp_registered_widgets[$widget_id]['callback'] = 'wp_widget_control';
    }
    return $params;
}
function next_widget_id_number($id_base)
{
    global $wp_registered_widgets;
    $number = 1;
    foreach ($wp_registered_widgets as $widget_id => $widget) {
        if (preg_match('/' . $id_base . '-([0-9]+)$/', $widget_id, $matches)) {
            $number = max($number, $matches[1]);
        }
    }
    $number++;
    return $number;
}
function wp_widget_control($sidebar_args)
{
    global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets;
    $widget_id = $sidebar_args['widget_id'];
    $sidebar_id = isset($sidebar_args['id']) ? $sidebar_args['id'] : false;
    $key = $sidebar_id ? array_search($widget_id, $sidebars_widgets[$sidebar_id], true) : '-1';
    $control = isset($wp_registered_widget_controls[$widget_id]) ? $wp_registered_widget_controls[$widget_id] : array();
    $widget = $wp_registered_widgets[$widget_id];
    $id_format = $widget['id'];
    $widget_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : '';
    $id_base = isset($control['id_base']) ? $control['id_base'] : $widget_id;
    $width = isset($control['width']) ? $control['width'] : '';
    $height = isset($control['height']) ? $control['height'] : '';
    $multi_number = isset($sidebar_args['_multi_num']) ? $sidebar_args['_multi_num'] : '';
    $add_new = isset($sidebar_args['_add']) ? $sidebar_args['_add'] : '';
    $before_form = isset($sidebar_args['before_form']) ? $sidebar_args['before_form'] : '<form method="post">';
    $after_form = isset($sidebar_args['after_form']) ? $sidebar_args['after_form'] : '</form>';
    $before_widget_content = isset($sidebar_args['before_widget_content']) ? $sidebar_args['before_widget_content'] : '<div class="widget-content">';
    $after_widget_content = isset($sidebar_args['after_widget_content']) ? $sidebar_args['after_widget_content'] : '</div>';
    $query_arg = array('editwidget' => $widget['id']);
    if ($add_new) {
        $query_arg['addnew'] = 1;
        if ($multi_number) {
            $query_arg['num'] = $multi_number;
            $query_arg['base'] = $id_base;
        }
    } else {
        $query_arg['sidebar'] = $sidebar_id;
        $query_arg['key'] = $key;
    }
    if (isset($sidebar_args['_display']) && 'template' === $sidebar_args['_display'] && $widget_number) {
        $control['params'][0]['number'] = -1;
        if (isset($control['id_base'])) {
            $id_format = $control['id_base'] . '-__i__';
        }
    }
    $wp_registered_widgets[$widget_id]['callback'] = $wp_registered_widgets[$widget_id]['_callback'];
    unset($wp_registered_widgets[$widget_id]['_callback']);
    $widget_title = esc_html(strip_tags($sidebar_args['widget_name']));
    $has_form = 'noform';
    echo $sidebar_args['before_widget'];
    ?>
	<div class="widget-top">
	<div class="widget-title-action">
		<button type="button" class="widget-action hide-if-no-js" aria-expanded="false">
			<span class="screen-reader-text edit">
				<?php 
    printf(__('Edit widget: %s'), $widget_title);
    ?>
			</span>
			<span class="screen-reader-text add">
				<?php 
    printf(__('Add widget: %s'), $widget_title);
    ?>
			</span>
			<span class="toggle-indicator" aria-hidden="true"></span>
		</button>
		<a class="widget-control-edit hide-if-js" href="<?php 
    echo esc_url(add_query_arg($query_arg));
    ?>">
			<span class="edit"><?php 
    _ex('Edit', 'widget');
    ?></span>
			<span class="add"><?php 
    _ex('Add', 'widget');
    ?></span>
			<span class="screen-reader-text"><?php 
    echo $widget_title;
    ?></span>
		</a>
	</div>
	<div class="widget-title"><h3><?php 
    echo $widget_title;
    ?><span class="in-widget-title"></span></h3></div>
	</div>

	<div class="widget-inside">
	<?php 
    echo $before_form;
    ?>
	<?php 
    echo $before_widget_content;
    ?>
	<?php 
    if (isset($control['callback'])) {
        $has_form = call_user_func_array($control['callback'], $control['params']);
    } else {
        echo "\t\t<p>" . __('There are no options for this widget.') . "</p>\n";
    }
    $noform_class = '';
    if ('noform' === $has_form) {
        $noform_class = ' widget-control-noform';
    }
    ?>
	<?php 
    echo $after_widget_content;
    ?>
	<input type="hidden" name="widget-id" class="widget-id" value="<?php 
    echo esc_attr($id_format);
    ?>" />
	<input type="hidden" name="id_base" class="id_base" value="<?php 
    echo esc_attr($id_base);
    ?>" />
	<input type="hidden" name="widget-width" class="widget-width" value="<?php 
    echo esc_attr($width);
    ?>" />
	<input type="hidden" name="widget-height" class="widget-height" value="<?php 
    echo esc_attr($height);
    ?>" />
	<input type="hidden" name="widget_number" class="widget_number" value="<?php 
    echo esc_attr($widget_number);
    ?>" />
	<input type="hidden" name="multi_number" class="multi_number" value="<?php 
    echo esc_attr($multi_number);
    ?>" />
	<input type="hidden" name="add_new" class="add_new" value="<?php 
    echo esc_attr($add_new);
    ?>" />

	<div class="widget-control-actions">
		<div class="alignleft">
			<button type="button" class="button-link button-link-delete widget-control-remove"><?php 
    _e('Delete');
    ?></button>
			<span class="widget-control-close-wrapper">
				| <button type="button" class="button-link widget-control-close"><?php 
    _e('Done');
    ?></button>
			</span>
		</div>
		<div class="alignright<?php 
    echo $noform_class;
    ?>">
			<?php 
    submit_button(__('Save'), 'primary widget-control-save right', 'savewidget', false, array('id' => 'widget-' . esc_attr($id_format) . '-savewidget'));
    ?>
			<span class="spinner"></span>
		</div>
		<br class="clear" />
	</div>
	<?php 
    echo $after_form;
    ?>
	</div>

	<div class="widget-description">
	<?php 
    $widget_description = wp_widget_description($widget_id);
    echo $widget_description ? "{$widget_description}\n" : "{$widget_title}\n";
    ?>
	</div>
	<?php 
    echo $sidebar_args['after_widget'];
    return $sidebar_args;
}
function wp_widgets_access_body_class($classes)
{
    return "{$classes} widgets_access ";
}