Maslosoft Mangan API
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
<?php
/**
* This software package is licensed under AGPL or Commercial license.
*
* @package maslosoft/mangan
* @licence AGPL or Commercial
* @copyright Copyright (c) Piotr Masełkowski <pmaselkowski@gmail.com>
* @copyright Copyright (c) Maslosoft
* @copyright Copyright (c) Others as mentioned in code
* @link https://maslosoft.com/mangan/
*/
namespace Maslosoft\Mangan\Traits\DataProvider;
use Maslosoft\EmbeDi\EmbeDi;
use Maslosoft\Mangan\Interfaces\PaginationInterface;
use Maslosoft\Mangan\Pagination;
use UnexpectedValueException;
/**
* PaginationTrait
*
* @author Piotr Maselkowski <pmaselkowski at gmail.com>
*/
trait PaginationTrait
{
/**
* Pagination instance
* @var boolean|array|PaginationInterface
*/
private $pagination = null;
/**
* Returns the pagination object.
* @param string $className the pagination object class name, use this param to override default pagination class.
* @return PaginationInterface|Pagination|false the pagination object. If this is false, it means the pagination is disabled.
*/
public function getPagination($className = Pagination::class)
{
if ($this->pagination === false)
{
return false;
}
if ($this->pagination === null)
{
$this->pagination = new $className;
}
// FIXME: Attach pagination options if it's array.
// It might be array, when configured via constructor
if (is_array($this->pagination))
{
if (empty($this->pagination['class']))
{
$this->pagination['class'] = $className;
}
if(isset($this->pagination['pageSize']))
{
$this->pagination['size'] = $this->pagination['pageSize'];
unset($this->pagination['pageSize']);
}
$this->pagination = EmbeDi::fly()->apply($this->pagination);
}
return $this->pagination;
}
/**
* Set pagination
* @param boolean|array|PaginationInterface $pagination
* @return static
*/
public function setPagination($pagination)
{
// Disable pagination completely
if (false === $pagination)
{
$this->pagination = false;
return $this;
}
// Configure from array
if (is_array($pagination))
{
if (empty($pagination['class']))
{
$pagination['class'] = Pagination::class;
}
if(isset($pagination['pageSize']))
{
$pagination['size'] = $pagination['pageSize'];
unset($pagination['pageSize']);
}
$this->pagination = EmbeDi::fly()->apply($pagination);
return $this;
}
// Set object instance
if ($pagination instanceof PaginationInterface)
{
$this->pagination = $pagination;
return $this;
}
throw new UnexpectedValueException(sprintf('Expected `false` or `array` or `%s`, got %s', PaginationInterface::class, is_object($pagination) ? get_class($pagination) : gettype($pagination)));
}
}
API documentation generated by ApiGen