<?php

use LoftyIDX\includes\LoftyIDXFacades;
use LoftyIDX\includes\LoftyIDXHelpers;

class LoftyIDXWidgetQuickSearch extends WP_Widget {
    // 1. 构造函数：定义 Widget 名称、描述等
    public function __construct() {
        parent::__construct(
            'lofty_widget_quick_search', // Widget ID
            'LoftyQuickSearch', // Widget 名称
            array('description' => 'Create multiple styles of Listing Quick Search.')
        );
        add_action('wp_enqueue_scripts', function (){
            if (self::lofty_widget_is_on_current_page()) {
                wp_enqueue_style(
                    'lofty-iconfont',
                    LOFTY_IDX_URL . 'templates/style/iconfont.css',
                    [],
                    LOFTY_IDX_VERSION
                );
            }
        });
    }

    // 2. 显示 Widget 内容
    public function widget($args, $instance) {
        $labels = [];
        $layout = '';
        if(isset($instance['config'])) {
            $layout = $instance['config']->layout;
            $labels = $instance['config']->quick_listing_filters;
        }
        LoftyIDXFacades::view('module/md_widget_quick_search/index',
            [
             'moduleId'=>$this->id,
             'data'=>json_encode($instance['config']),
             'layout'=> $layout,
             'labels'=> $labels
            ]
        );
    }

    // 3. Widget 后台表单（用于设置 Widget 选项）
    public function form($instance) {
        $config = $instance['config'] ?? [];
        LoftyIDXFacades::view('admin/widget/quick-search/index', ['moduleId'=>$this->id, 'data'=>json_encode($config)]);
    }

    // 4. 保存 Widget 设置
    public function update($new_instance, $old_instance) {
    }

    public function lofty_widget_is_on_current_page()
    {
        $sidebars_widgets = wp_get_sidebars_widgets();
        if (empty($sidebars_widgets) || !is_array($sidebars_widgets)) {
            return false;
        }
        foreach ($sidebars_widgets as $sidebar => $widgets) {
            if (!is_array($widgets)) continue;
            foreach ($widgets as $widget_id) {
                if (strpos($widget_id, 'lofty_widget_quick_search') !== false) {
                    return true;
                }
            }
        }
        return false;
    }

}

// 注册 Widget
function register_lofty_widget() {
    register_widget('LoftyIDXWidgetQuickSearch');
}
function lofty_save_widget_callback() {
    $params = LoftyIDXHelpers::get_request_param();
    $path = ltrim($params['path'], '/');
    $method = strtolower(sanitize_key($_SERVER['REQUEST_METHOD'] ?? 'GET'));
    if ($method === 'post' && $path === 'widget/save/quickSearch') {
        if (!current_user_can('manage_options') ) {
            LoftyIDXHelpers::respond(401, 'permission denied', false);
        }
        $widget_id = $params['widget_id'];
        $config = $params['config'];
        $all_instances = get_option('widget_lofty_widget_quick_search', array());
        if (!isset($all_instances[$widget_id])) {
            $all_instances[$widget_id] = [];
        }
        $all_instances[$widget_id]['config'] = $config;
        update_option('widget_lofty_widget_quick_search', $all_instances);
        LoftyIDXHelpers::respond(200, 'success', true);
    }
}

add_action('widgets_init', 'register_lofty_widget');
add_action('wp_ajax_lofty_widget_save', 'lofty_save_widget_callback');
?>