<?php
// Защита от прямого доступа
if (!defined('NGCMS')) {
    exit('HAL');
}

// Ensure ng-helpers is loaded
if (!function_exists('Plugins\\logger')) {
    $ngHelpersPath = __DIR__ . '/../ng-helpers/ng-helpers.php';
    if (file_exists($ngHelpersPath)) {
        require_once $ngHelpersPath;
    }
}

use function Plugins\{array_get, logger, get_ip};
// Подключаем конфигурацию плагина
pluginsLoadConfig();
// Основная функция для отображения интерфейса автоматизации
function automation()
{
    global $twig, $PHP_SELF;
    // Обработка сохранения настроек
    if (array_get($_POST, 'save', '') == '1') {
        // Значения из формы БЕЗ дефолтов
        $newsCount   = max(1, intval(array_get($_POST, 'news_count', 0)));
        $staticCount = max(1, intval(array_get($_POST, 'static_count', 0)));
        $maxAllowed  = max(1, intval(array_get($_POST, 'max_allowed', 0)));
        // Логируем что пришло из формы
        logger('POST data: news_count=' . $_POST['news_count'] . ', result=' . $newsCount, 'info', 'content_generator.log');
        pluginSetVariable('content_generator', 'news_count', strval($newsCount));
        pluginSetVariable('content_generator', 'static_count', strval($staticCount));
        pluginSetVariable('content_generator', 'max_allowed', strval($maxAllowed));

        // ВАЖНО: Сохраняем в базу данных!
        pluginsSaveConfig();

        logger('Content Generator config saved: news=' . $newsCount . ', static=' . $staticCount . ', max=' . $maxAllowed . ', ip=' . get_ip(), 'info', 'content_generator.log');
    }
    // Чтение сохранённых значений / дефолты
    $newsCountRaw = pluginGetVariable('content_generator', 'news_count');
    $staticCountRaw = pluginGetVariable('content_generator', 'static_count');
    $maxAllowedRaw = pluginGetVariable('content_generator', 'max_allowed');
    $newsCount   = ($newsCountRaw !== null && $newsCountRaw !== '') ? intval($newsCountRaw) : 10;
    $staticCount = ($staticCountRaw !== null && $staticCountRaw !== '') ? intval($staticCountRaw) : 5;
    $maxAllowed  = ($maxAllowedRaw !== null && $maxAllowedRaw !== '') ? intval($maxAllowedRaw) : 100;
    // Определяем пути к шаблонам
    $tpath = locatePluginTemplates(
        ['config/main', 'config/automation'],
        'content_generator',
        1
    );
    // Проверяем существование шаблонов
    if (empty($tpath['config/main']) || empty($tpath['config/automation'])) {
        die('Ошибка: Не найдены необходимые шаблоны.');
    }
    try {
        // Загружаем основной шаблон
        $mainTemplate = $twig->loadTemplate($tpath['config/main'] . 'config/main.tpl');
        // Загружаем шаблон автоматизации
        $automationTemplate = $twig->loadTemplate($tpath['config/automation'] . 'config/automation.tpl');
        // Переменные для шаблона автоматизации
        $tVarsAutomation = [
            'news_count'   => $newsCount,
            'static_count' => $staticCount,
            'max_allowed'  => $maxAllowed,
            'plugin_url'   => admin_url . '/admin.php?mod=extra-config&plugin=content_generator',
        ];
        // Рендерим шаблон автоматизации
        $renderedAutomation = $automationTemplate->render($tVarsAutomation);
        // Переменные для основного шаблона
        $tVarsMain = [
            'entries'       => $renderedAutomation,
            'php_self'      => $PHP_SELF,
            'plugin_url'    => admin_url . '/admin.php?mod=extra-config&plugin=content_generator',
            'skins_url'     => skins_url,
            'admin_url'     => admin_url,
            'home'          => home,
            'current_title' => 'Automation',
        ];
        // Выводим основной шаблон
        echo $mainTemplate->render($tVarsMain);
    } catch (Exception $e) {
        // Обработка ошибок Twig
        die('Ошибка шаблонизатора: ' . $e->getMessage());
    }
}
// Основной обработчик запросов
switch (array_get($_REQUEST, 'action', '')) {
    default:
        automation();
        break;
}
