<?php
namespace NeoDuplicateFull\NeoGlobal; if (!defined("ABSPATH")) { die("neoWP direct access not allowed"); }












function update_and_get_plugin_list_and_icons() {

    $cache_path = \NeoDuplicateFull\NeoGlobal\cache_path("_global-plugin-list-and-icons");
    $cache_url  = \NeoDuplicateFull\NeoGlobal\cache_url ("_global-plugin-list-and-icons");

    return \NeoDuplicateFull\NeoGlobal\synclock_dir($cache_path, function () use (&$cache_path, &$cache_url) {

        [$user_type, $interface_ok] = \NeoDuplicateFull\NeoGlobal\call_interface_func_implemented('\NeoDuplicateFull\NeoDomainSettings\interface_get_user_type_20260412')(); if (!$interface_ok) { $user_type = "user"; }
        if (function_exists('\NeoDuplicateFull\NeoGlobal\_update_plugin_list_assets_cache_from_server')) { \NeoDuplicateFull\NeoGlobal\_update_plugin_list_assets_cache_from_server($user_type, $cache_path); }

        if (!\NeoDuplicateFull\NeoGlobal\fs_file_exists($cache_path . "/" . \NeoDuplicateFull\NeoGlobal\get_plugin_list_filename($user_type))) {
            if (\NeoDuplicateFull\NeoGlobal\fs_file_exists(\NeoDuplicateFull\NeoGlobal\plugin_path() . "/_global-plugin-list-and-icons")) {
                foreach (\NeoDuplicateFull\NeoGlobal\iterate_all_files(\NeoDuplicateFull\NeoGlobal\plugin_path() . "/_global-plugin-list-and-icons") as $asset_file_path) { \NeoDuplicateFull\NeoGlobal\fs_copy($asset_file_path, $cache_path . "/" . \NeoDuplicateFull\NeoGlobal\str_replace_start(\NeoDuplicateFull\NeoGlobal\plugin_path() . "/_global-plugin-list-and-icons/", "", $asset_file_path)); }
            } else {
                \NeoDuplicateFull\NeoGlobal\global_warn_with_module_name("_global-plugin-list-and-icons", "neoManager assets could not be downloaded. Download server down?");
                return [[], []];
            }
        }

        foreach (["theme-neo", "theme-pro"] as $color_theme) {
            if ($color_theme === "theme-pro") { continue; }
            foreach (\NeoDuplicateFull\NeoGlobal\iterate_all_files($cache_path) as $asset_file_path) {
                if (!str_ends_with($asset_file_path, ".svg")) { continue; }
                if (str_contains(basename($asset_file_path), "theme-neo") || str_contains(basename($asset_file_path), "theme-pro")) { continue; }
                $themed_filename = str_replace(".svg", "-color-$color_theme.svg", basename($asset_file_path));
                if (\NeoDuplicateFull\NeoGlobal\fs_file_exists($cache_path . "/" . $themed_filename)) { continue; }
                \NeoDuplicateFull\NeoGlobal\fs_file_put_contents(str_replace(".svg", "-color-$color_theme.svg", $asset_file_path), \NeoDuplicateFull\NeoGlobal\transform_colors(\NeoDuplicateFull\NeoGlobal\fs_file_get_contents($asset_file_path), filename: basename($asset_file_path), theme: $color_theme));
            }
        }
        $plugin_list = \NeoDuplicateFull\NeoGlobal\fs_read_json_file($cache_path . "/" . \NeoDuplicateFull\NeoGlobal\get_plugin_list_filename($user_type));

        $plugin_icon_list = [];
        foreach ($plugin_list as $plugin_data) {
            $plugin_icon_list[$plugin_data["plugin-slug"]] = [];
            foreach (["theme-neo", "theme-pro"] as $color_theme) {
                if ($color_theme === "theme-pro") { continue; }
                $plugin_icon_list[$plugin_data["plugin-slug"]][$color_theme]["icon"         ] = $cache_url . "/" . str_replace(".svg", "-color-$color_theme.svg", \NeoDuplicateFull\NeoGlobal\get_plugin_icon_filename($plugin_data["plugin-slug"]));
                $plugin_icon_list[$plugin_data["plugin-slug"]][$color_theme]["icon-animated"] = $cache_url . "/" . str_replace(".svg", "-color-$color_theme.svg", \NeoDuplicateFull\NeoGlobal\get_plugin_icon_filename_animated($plugin_data["plugin-slug"]));
            }
        }
        return [$plugin_list, $plugin_icon_list];
    }, timeout: 30);
}
