<?php
declare(strict_types=1);

require_once __DIR__ . '/../../includes/start.php';
require_role(['admin']);

require_once __DIR__ . '/../_helpers.php';
require_once __DIR__ . '/../_sidebar.php';
require_once __DIR__ . '/_lib.php';

$pdo = seo_admin_db();
$me  = seo_admin_me();
$adminUserId = (int)($me['id'] ?? 0);
$settings = seo_admin_load_settings($pdo);
$flash = seo_admin_get_flash();

$title = admin_tt('seo_title', 'Редактор robots.txt', 'Редактор robots.txt', 'robots.txt editor');
$seoAdminActive = 'robots';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!seo_admin_csrf_check_local((string)($_POST['csrf'] ?? ''))) {
        seo_admin_set_flash('danger', seo_admin_t('Помилка CSRF.', 'Ошибка CSRF.', 'CSRF error.'));
        header('Location: ' . seo_admin_url('robots.php'));
        exit;
    }

    try {
        if (isset($_POST['reset_default'])) {
            $content = seo_admin_default_robots_text();
            seo_admin_write_robots($content);
            seo_admin_add_log($pdo, $adminUserId, 'robots', null, 'robots.reset_default', [], ['content' => $content]);
            seo_admin_set_flash('success', seo_admin_t('robots.txt скинуто до рекомендованого шаблону.', 'robots.txt сброшен к рекомендованному шаблону.', 'robots.txt reset to the recommended template.'));
        } else {
            $content = (string)($_POST['robots_content'] ?? '');
            $old = seo_admin_read_robots();
            seo_admin_write_robots($content);
            seo_admin_add_log($pdo, $adminUserId, 'robots', null, 'robots.save', ['content' => $old], ['content' => $content]);
            seo_admin_set_flash('success', seo_admin_t('robots.txt збережено.', 'robots.txt сохранен.', 'robots.txt saved.'));
        }
    } catch (Throwable $e) {
        seo_admin_set_flash('danger', seo_admin_t('Не вдалося оновити robots.txt.', 'Не удалось обновить robots.txt.', 'Failed to update robots.txt.'));
    }

    header('Location: ' . seo_admin_url('robots.php'));
    exit;
}

$robotsContent = seo_admin_read_robots();
$robotsPath = seo_admin_robots_path();
$robotsExists = is_file($robotsPath);
$robotsWritable = is_writable(dirname($robotsPath)) && ($robotsExists ? is_writable($robotsPath) : true);

require __DIR__ . '/../../includes/header.php';
?>
<div class="row g-3">
  <div class="col-lg-9">
    <?php require __DIR__ . '/_nav.php'; ?>

    <?php if ($flash): ?>
      <div class="alert alert-<?= seo_admin_h((string)($flash['type'] ?? 'info')) ?>">
        <?= seo_admin_h((string)($flash['message'] ?? '')) ?>
      </div>
    <?php endif; ?>

    <div class="card card-app p-3 mb-3">
      <div class="d-flex align-items-center justify-content-between flex-wrap gap-2 mb-2">
        <h1 class="h4 mb-0"><?= seo_admin_h($title) ?></h1>
        <div class="d-flex gap-2">
          <span><?= seo_admin_file_badge($robotsExists) ?></span>
          <span class="badge bg-<?= $robotsWritable ? 'success' : 'warning' ?>"><?= seo_admin_h($robotsWritable ? seo_admin_t('Доступний для запису', 'Доступен для записи', 'Writable') : seo_admin_t('Немає прав на запис', 'Нет прав на запись', 'Not writable')) ?></span>
        </div>
      </div>

      <div class="small text-muted mb-3"><?= seo_admin_h($robotsPath) ?></div>

      <form method="post">
        <input type="hidden" name="csrf" value="<?= seo_admin_h(seo_admin_csrf_token_local()) ?>">
        <div class="mb-3">
          <label class="form-label">robots.txt</label>
          <textarea class="form-control font-monospace" rows="18" name="robots_content"><?= seo_admin_h($robotsContent) ?></textarea>
        </div>
        <div class="d-flex gap-2 flex-wrap">
          <button class="btn btn-primary" type="submit"><?= seo_admin_h(seo_admin_t('Зберегти файл', 'Сохранить файл', 'Save file')) ?></button>
          <button class="btn btn-outline-warning" type="submit" name="reset_default" value="1" onclick="return confirm('<?= seo_admin_h(seo_admin_t('Скинути robots.txt до шаблону?', 'Сбросить robots.txt к шаблону?', 'Reset robots.txt to the template?')) ?>');"><?= seo_admin_h(seo_admin_t('Скинути до шаблону', 'Сбросить к шаблону', 'Reset to template')) ?></button>
          <a class="btn btn-outline-primary" href="/robots.txt" target="_blank" rel="noopener"><?= seo_admin_h(seo_admin_t('Відкрити файл', 'Открыть файл', 'Open file')) ?></a>
        </div>
      </form>
    </div>

    <div class="card card-app p-3">
      <div class="fw-semibold mb-2"><?= seo_admin_h(seo_admin_t('Поради', 'Подсказки', 'Notes')) ?></div>
      <ul class="mb-0 small">
        <li><?= seo_admin_h(seo_admin_t('Не закривай головну, публічні профілі та публічні групи, якщо хочеш їх індексувати.', 'Не закрывай главную, публичные профили и публичные группы, если хочешь их индексировать.', 'Do not block the homepage, public profiles or public groups if you want them indexed.')) ?></li>
        <li><?= seo_admin_h(seo_admin_t('Краще закривати /admin/, /messages/, /profile/setting/ та службові endpoint-и.', 'Лучше закрывать /admin/, /messages/, /profile/setting/ и служебные endpoint-ы.', 'Better block /admin/, /messages/, /profile/setting/ and service endpoints.')) ?></li>
        <li><?= seo_admin_h(seo_admin_t('Після змін перевір robots.txt у Google Search Console.', 'После изменений проверь robots.txt в Google Search Console.', 'After changes, verify robots.txt in Google Search Console.')) ?></li>
      </ul>
    </div>

  </div>
  <div class="col-lg-3">
    <?php admin_sidebar('seo'); ?>
  </div>
</div>
<?php require __DIR__ . '/../../includes/footer.php'; ?>
