<?php

namespace Zab\ZabSite\ViewHelpers;

use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;

/**
 * Builds an additionalParams array for f:link.page with a dynamic namespace.
 *
 * Usage:
 *   additionalParams="{zab:paginationParams(namespace: 'tx_zabfaqs', page: pageNum, extra: {category: faqsCurrentCategory})}"
 *
 * Returns: ['tx_zabfaqs' => ['page' => X, 'category' => Y]]
 */
class PaginationParamsViewHelper extends AbstractViewHelper
{
    public function initializeArguments(): void
    {
        $this->registerArgument('namespace', 'string', 'URL namespace (e.g. tx_zabfaqs)', true);
        $this->registerArgument('page', 'int', 'Target page number', true);
        $this->registerArgument('extra', 'array', 'Additional params to include inside the namespace', false, []);
    }

    public function render(): array
    {
        $namespace = $this->arguments['namespace'];
        $page = (int)$this->arguments['page'];
        $extra = $this->arguments['extra'] ?? [];

        return [$namespace => array_merge(['page' => $page], $extra)];
    }
}
