<?php

/**
 * This class defines a Paginated OrderedCollection
 * based on CodeIgniter4 Pager to get the pagination metadata
 *
 * @copyright  2021 Podlibre
 * @license    https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
 * @link       https://castopod.org/
 */

namespace ActivityPub\Objects;

use ActivityPub\Core\ObjectType;

class OrderedCollectionObject extends ObjectType
{
    protected $type = 'OrderedCollection';

    /**
     * @var integer
     */
    protected $totalItems;

    /**
     * @var integer|null
     */
    protected $first;

    /**
     * @var integer|null
     */
    protected $current;

    /**
     * @var integer|null
     */
    protected $last;

    /**
     * @var array|null
     */
    protected $orderedItems;

    /**
     * @param \ActivityPub\Libraries\ActivityPub\Activity[] $orderedItems
     * @param \CodeIgniter\Pager\Pager $pager
     */
    public function __construct($orderedItems, $pager = null)
    {
        $this->id = current_url();

        if ($pager) {
            $totalItems = $pager->getTotal();
            $this->totalItems = $totalItems;

            if ($totalItems) {
                $this->first = $pager->getPageURI($pager->getFirstPage());
                $this->current = $pager->getPageURI();
                $this->last = $pager->getPageURI($pager->getLastPage());
            }
        }

        $this->orderedItems = $orderedItems;
    }
}