<?php
/**
 * Plugin Name: WooNooW Example Addon
 * Plugin URI: https://woonoow.com
 * Description: Example addon demonstrating WooNooW addon injection system
 * Version: 1.0.0
 * Author: WooNooW Team
 * Author URI: https://woonoow.com
 * Requires at least: 6.0
 * Requires PHP: 8.0
 * Text Domain: wnw-example-addon
 * Domain Path: /languages
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

/**
 * Example Addon Class
 * 
 * This is a complete example showing how to integrate with WooNooW.
 * Copy this file to wp-content/plugins/ and activate to see it in action.
 */
class WNW_Example_Addon {
    
    /**
     * Initialize the addon
     */
    public static function init() {
        // Register addon with WooNooW
        add_filter('woonoow/addon_registry', [__CLASS__, 'register_addon']);
        
        // Register SPA routes
        add_filter('woonoow/spa_routes', [__CLASS__, 'register_routes']);
        
        // Add navigation items
        add_filter('woonoow/nav_tree', [__CLASS__, 'register_navigation']);
        
        // Register REST API endpoints
        add_action('rest_api_init', [__CLASS__, 'register_rest_routes']);
    }
    
    /**
     * Register addon with WooNooW
     */
    public static function register_addon($addons) {
        $addons['example-addon'] = [
            'id'           => 'example-addon',
            'name'         => __('Example Addon', 'wnw-example-addon'),
            'version'      => '1.0.0',
            'author'       => 'WooNooW Team',
            'description'  => __('Example addon for testing WooNooW integration', 'wnw-example-addon'),
            'spa_bundle'   => '', // Not needed for this example
            'dependencies' => [
                'woocommerce' => '8.0',
                'wordpress'   => '6.0',
            ],
        ];
        return $addons;
    }
    
    /**
     * Register SPA routes
     */
    public static function register_routes($routes) {
        $base_url = plugin_dir_url(__FILE__);
        
        // Main page
        $routes[] = [
            'path'          => '/example',
            'component_url' => $base_url . 'dist/ExamplePage.js',
            'capability'    => 'manage_woocommerce',
            'title'         => __('Example Addon', 'wnw-example-addon'),
        ];
        
        // Detail page
        $routes[] = [
            'path'          => '/example/:id',
            'component_url' => $base_url . 'dist/ExampleDetail.js',
            'capability'    => 'manage_woocommerce',
            'title'         => __('Example Detail', 'wnw-example-addon'),
        ];
        
        return $routes;
    }
    
    /**
     * Register navigation items
     */
    public static function register_navigation($tree) {
        // Add main menu item
        $tree[] = [
            'key'      => 'example',
            'label'    => __('Example', 'wnw-example-addon'),
            'path'     => '/example',
            'icon'     => 'puzzle', // lucide-react icon
            'children' => [
                [
                    'label' => __('All Items', 'wnw-example-addon'),
                    'mode'  => 'spa',
                    'path'  => '/example',
                ],
                [
                    'label' => __('Settings', 'wnw-example-addon'),
                    'mode'  => 'spa',
                    'path'  => '/example/settings',
                ],
            ],
        ];
        
        return $tree;
    }
    
    /**
     * Register REST API endpoints
     */
    public static function register_rest_routes() {
        register_rest_route('woonoow/v1', '/example', [
            'methods'             => 'GET',
            'callback'            => [__CLASS__, 'get_example_data'],
            'permission_callback' => function() {
                return current_user_can('manage_woocommerce');
            },
        ]);
    }
    
    /**
     * Get example data (REST endpoint)
     */
    public static function get_example_data($request) {
        return rest_ensure_response([
            'success' => true,
            'message' => __('Example addon is working!', 'wnw-example-addon'),
            'data'    => [
                'items' => [
                    ['id' => 1, 'name' => 'Item 1', 'status' => 'active'],
                    ['id' => 2, 'name' => 'Item 2', 'status' => 'active'],
                    ['id' => 3, 'name' => 'Item 3', 'status' => 'inactive'],
                ],
            ],
        ]);
    }
}

// Initialize the addon
add_action('plugins_loaded', ['WNW_Example_Addon', 'init'], 25);
