<?php
declare(strict_types=1);
?>

<?php
  $albumsBackUrl = $profileTabUrl('albums');
  $albumCreateCsrf = '';
  if ($albumsLibOk && function_exists('alb_csrf_token')) {
    $albumCreateCsrf = (string)alb_csrf_token();
  } elseif (function_exists('csrf_token')) {
    $albumCreateCsrf = (string)csrf_token();
  }

  $albumCreatePanelId = 'profileAlbumCreatePanel_' . (int)($profileUserId ?? 0);
  $albumCreateOpenBtnId = 'profileAlbumCreateOpenBtn_' . (int)($profileUserId ?? 0);
  $albumCreateCloseBtnId = 'profileAlbumCreateCloseBtn_' . (int)($profileUserId ?? 0);
?>

<?php if ($albumsFlashText !== '' && $albumsFlashType !== ''): ?>
  <div class="alert alert-<?= h($albumsFlashType) ?>"><?= h($albumsFlashText) ?></div>
<?php endif; ?>

<?php if (!$albumsLibOk): ?>
  <div class="card card-app p-3 mb-3">
    <div class="fw-semibold mb-2"><?= h($T('Фотоальбом','Фотоальбом','Photo albums')) ?></div>
    <div class="profile-section-placeholder">
      <?= h($T(
        'Модуль фотоальбомів ще не підключено.',
        'Модуль фотоальбомов ещё не подключён.',
        'The photo albums module is not connected yet.'
      )) ?>
    </div>
  </div>

<?php elseif (!$albumsReady): ?>
  <div class="card card-app p-3 mb-3">
    <div class="fw-semibold mb-2"><?= h($T('Фотоальбом','Фотоальбом','Photo albums')) ?></div>
    <div class="text-danger">
      <?= h($T(
        'У БД не знайдено таблиці photo_albums / album_photos. Спочатку застосуй SQL-міграцію модуля фотоальбомів.',
        'В БД не найдены таблицы photo_albums / album_photos. Сначала примени SQL-миграцию модуля фотоальбомов.',
        'Tables photo_albums / album_photos were not found in the database. Apply the albums SQL migration first.'
      )) ?>
    </div>
  </div>

<?php else: ?>

  <div class="card card-app p-3 mb-3">
    <div class="profile-albums-head mb-3">
      <div>
        <div class="fw-semibold">
          <?= h($T('Фотоальбоми', 'Фотоальбомы', 'Photo albums')) ?>
        </div>
        <div class="text-muted small">
          <?= h($T('Кількість', 'Количество', 'Count')) ?>: <?= count($albums) ?>
        </div>
      </div>

      <?php if ($isOwner): ?>
        <div class="ms-auto">
          <button
            type="button"
            class="btn btn-primary"
            id="<?= h($albumCreateOpenBtnId) ?>"
            aria-controls="<?= h($albumCreatePanelId) ?>"
            aria-expanded="false"
          >
            <?= h($T('Створити фотоальбом', 'Создать фотоальбом', 'Create photo album')) ?>
          </button>
        </div>
      <?php endif; ?>
    </div>

    <?php if ($isOwner): ?>
      <div
        class="profile-album-create-card p-3 p-md-4 mb-3"
        id="<?= h($albumCreatePanelId) ?>"
        hidden
      >
        <div class="d-flex flex-wrap justify-content-between align-items-center gap-2 mb-3">
          <div class="fw-semibold">
            <?= h($T('Створити фотоальбом', 'Создать фотоальбом', 'Create photo album')) ?>
          </div>

          <button
            type="button"
            class="btn btn-sm btn-outline-secondary"
            id="<?= h($albumCreateCloseBtnId) ?>"
          >
            <?= h($T('Закрити', 'Закрыть', 'Close')) ?>
          </button>
        </div>

        <form method="post" action="/functional/albums/create.php" class="vstack gap-3">
          <input type="hidden" name="csrf" value="<?= h($albumCreateCsrf) ?>">
          <input type="hidden" name="back" value="<?= h($albumsBackUrl) ?>">

          <div>
            <label class="form-label"><?= h($T('Назва', 'Название', 'Title')) ?></label>
            <input type="text" class="form-control" name="title" maxlength="190" required>
          </div>

          <div>
            <label class="form-label"><?= h($T('Опис', 'Описание', 'Description')) ?></label>
            <textarea class="form-control" name="description" rows="3" maxlength="5000"></textarea>
          </div>

          <div>
            <label class="form-label"><?= h($T('Доступ', 'Доступ', 'Privacy')) ?></label>
            <select class="form-select" name="privacy">
              <option value="public"><?= h($T('Усі', 'Все', 'Public')) ?></option>
              <option value="friends"><?= h($T('Тільки друзі', 'Только друзья', 'Friends only')) ?></option>
              <option value="private"><?= h($T('Тільки я', 'Только я', 'Only me')) ?></option>
            </select>
          </div>

          <div class="d-flex flex-wrap gap-2">
            <button type="submit" class="btn btn-primary">
              <?= h($T('Створити альбом', 'Создать альбом', 'Create album')) ?>
            </button>
          </div>
        </form>
      </div>
    <?php endif; ?>

    <?php if ($albums): ?>
      <div class="profile-albums-grid">
        <?php foreach ($albums as $album): ?>
          <?php
            $albumId = (int)($album['id'] ?? 0);
            if ($albumId <= 0) continue;

            $albumTitle = trim((string)($album['title'] ?? ''));
            if ($albumTitle === '') {
              $albumTitle = $T('Без назви', 'Без названия', 'Untitled');
            }

            $albumDesc = trim((string)($album['description'] ?? ''));
            $albumCover = function_exists('alb_album_cover_url') ? trim((string)alb_album_cover_url($pdo, $album)) : '';
            $albumUrl = function_exists('alb_album_url')
              ? (string)alb_album_url($album, $profileUser)
              : ('/functional/albums/view.php?album_id=' . $albumId);

            $albumPhotosCount = (int)($album['photos_count'] ?? 0);
            $albumPrivacyLabel = function_exists('alb_privacy_label')
              ? (string)alb_privacy_label((string)($album['privacy'] ?? 'public'))
              : (string)($album['privacy'] ?? 'public');

            $albumCreated = profile_album_date_text((string)($album['created_at'] ?? ''));
            $albumUpdated = profile_album_date_text((string)($album['updated_at'] ?? ''));
            $albumCanManage = function_exists('alb_can_manage_album') ? (bool)alb_can_manage_album($album, $me) : $isOwner;
            $confirmDeleteAlbum = $T('Видалити цей фотоальбом разом з усіма фотографіями?', 'Удалить этот фотоальбом вместе со всеми фотографиями?', 'Delete this album with all photos?');
          ?>
          <div class="profile-album-card">
            <a class="profile-album-cover" href="<?= h($albumUrl) ?>" data-no-pjax="1" data-album-open="1">
              <?php if ($albumCover !== ''): ?>
                <img src="<?= h($albumCover) ?>" alt="<?= h($albumTitle) ?>" loading="lazy">
              <?php else: ?>
                <div class="profile-album-cover-placeholder">
                  <?= h($T('Без обкладинки', 'Без обложки', 'No cover')) ?>
                </div>
              <?php endif; ?>
            </a>

            <div class="profile-album-body">
              <div class="profile-album-title">
                <a href="<?= h($albumUrl) ?>" data-no-pjax="1" data-album-open="1"><?= h($albumTitle) ?></a>
              </div>

              <div class="profile-album-meta">
                <span class="badge bg-light text-dark">
                  <?= h($T('Фото', 'Фото', 'Photos')) ?>: <?= $albumPhotosCount ?>
                </span>
                <span class="badge bg-light text-dark">
                  <?= h($albumPrivacyLabel) ?>
                </span>
              </div>

              <div class="profile-album-desc">
                <?= $albumDesc !== '' ? h($albumDesc) : h($T('Без опису.', 'Без описания.', 'No description.')) ?>
              </div>

              <div class="small text-muted mt-2">
                <?php if ($albumCreated !== ''): ?>
                  <div><?= h($T('Створено', 'Создано', 'Created')) ?>: <?= h($albumCreated) ?></div>
                <?php endif; ?>
                <?php if ($albumUpdated !== ''): ?>
                  <div><?= h($T('Оновлено', 'Обновлено', 'Updated')) ?>: <?= h($albumUpdated) ?></div>
                <?php endif; ?>
              </div>

              <div class="profile-album-actions">
                <a class="btn btn-sm btn-outline-primary" href="<?= h($albumUrl) ?>" data-no-pjax="1" data-album-open="1">
                  <?= h($T('Відкрити', 'Открыть', 'Open')) ?>
                </a>

                <?php if ($albumCanManage): ?>
                  <form method="post"
                        action="/functional/albums/delete.php"
                        class="m-0"
                        onsubmit="return confirm(<?= json_encode($confirmDeleteAlbum, JSON_UNESCAPED_UNICODE) ?>);">
                    <input type="hidden" name="csrf" value="<?= h($albumCreateCsrf) ?>">
                    <input type="hidden" name="album_id" value="<?= $albumId ?>">
                    <input type="hidden" name="back" value="<?= h($albumsBackUrl) ?>">
                    <button type="submit" class="btn btn-sm btn-outline-danger">
                      <?= h($T('Видалити', 'Удалить', 'Delete')) ?>
                    </button>
                  </form>
                <?php endif; ?>
              </div>
            </div>
          </div>
        <?php endforeach; ?>
      </div>
    <?php else: ?>
      <div class="profile-album-empty">
        <?php if ($isOwner): ?>
          <?= h($T(
            'У вас ще немає фотоальбомів. Натисніть кнопку "Створити фотоальбом", щоб додати перший альбом.',
            'У вас ещё нет фотоальбомов. Нажмите кнопку "Создать фотоальбом", чтобы добавить первый альбом.',
            'You do not have any photo albums yet. Click "Create photo album" to add your first album.'
          )) ?>
        <?php else: ?>
          <?= h($T(
            'У цього користувача поки немає доступних вам фотоальбомів.',
            'У этого пользователя пока нет доступных вам фотоальбомов.',
            'This user does not have any photo albums available to you yet.'
          )) ?>
        <?php endif; ?>
      </div>
    <?php endif; ?>
  </div>

  <?php if ($isOwner): ?>
    <script>
      (function () {
        var openBtn  = document.getElementById(<?= json_encode($albumCreateOpenBtnId, JSON_UNESCAPED_UNICODE) ?>);
        var closeBtn = document.getElementById(<?= json_encode($albumCreateCloseBtnId, JSON_UNESCAPED_UNICODE) ?>);
        var panel    = document.getElementById(<?= json_encode($albumCreatePanelId, JSON_UNESCAPED_UNICODE) ?>);

        if (!openBtn || !panel) return;

        openBtn.addEventListener('click', function () {
          panel.hidden = false;
          openBtn.setAttribute('aria-expanded', 'true');
          openBtn.hidden = true;

          var firstInput = panel.querySelector('input[name="title"]');
          if (firstInput && typeof firstInput.focus === 'function') {
            try {
              firstInput.focus({ preventScroll: true });
            } catch (e) {
              firstInput.focus();
            }
          }
        });

        if (closeBtn) {
          closeBtn.addEventListener('click', function () {
            panel.hidden = true;
            openBtn.hidden = false;
            openBtn.setAttribute('aria-expanded', 'false');
          });
        }
      })();
    </script>
  <?php endif; ?>

<?php endif; ?>