mirror of
https://github.com/itflow-org/itflow
synced 2026-02-28 02:44:53 +00:00
Remove the vendor directory in .gitignore as these dependencies are needed for php-imap
This commit is contained in:
132
plugins/php-imap/vendor/illuminate/pagination/Cursor.php
vendored
Normal file
132
plugins/php-imap/vendor/illuminate/pagination/Cursor.php
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Pagination;
|
||||
|
||||
use Illuminate\Contracts\Support\Arrayable;
|
||||
use UnexpectedValueException;
|
||||
|
||||
class Cursor implements Arrayable
|
||||
{
|
||||
/**
|
||||
* The parameters associated with the cursor.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $parameters;
|
||||
|
||||
/**
|
||||
* Determine whether the cursor points to the next or previous set of items.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $pointsToNextItems;
|
||||
|
||||
/**
|
||||
* Create a new cursor instance.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @param bool $pointsToNextItems
|
||||
*/
|
||||
public function __construct(array $parameters, $pointsToNextItems = true)
|
||||
{
|
||||
$this->parameters = $parameters;
|
||||
$this->pointsToNextItems = $pointsToNextItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the given parameter from the cursor.
|
||||
*
|
||||
* @param string $parameterName
|
||||
* @return string|null
|
||||
*
|
||||
* @throws \UnexpectedValueException
|
||||
*/
|
||||
public function parameter(string $parameterName)
|
||||
{
|
||||
if (! array_key_exists($parameterName, $this->parameters)) {
|
||||
throw new UnexpectedValueException("Unable to find parameter [{$parameterName}] in pagination item.");
|
||||
}
|
||||
|
||||
return $this->parameters[$parameterName];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the given parameters from the cursor.
|
||||
*
|
||||
* @param array $parameterNames
|
||||
* @return array
|
||||
*/
|
||||
public function parameters(array $parameterNames)
|
||||
{
|
||||
return collect($parameterNames)->map(function ($parameterName) {
|
||||
return $this->parameter($parameterName);
|
||||
})->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the cursor points to the next set of items.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function pointsToNextItems()
|
||||
{
|
||||
return $this->pointsToNextItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the cursor points to the previous set of items.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function pointsToPreviousItems()
|
||||
{
|
||||
return ! $this->pointsToNextItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array representation of the cursor.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function toArray()
|
||||
{
|
||||
return array_merge($this->parameters, [
|
||||
'_pointsToNextItems' => $this->pointsToNextItems,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the encoded string representation of the cursor to construct a URL.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function encode()
|
||||
{
|
||||
return str_replace(['+', '/', '='], ['-', '_', ''], base64_encode(json_encode($this->toArray())));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a cursor instance from the encoded string representation.
|
||||
*
|
||||
* @param string|null $encodedString
|
||||
* @return static|null
|
||||
*/
|
||||
public static function fromEncoded($encodedString)
|
||||
{
|
||||
if (! is_string($encodedString)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$parameters = json_decode(base64_decode(str_replace(['-', '_'], ['+', '/'], $encodedString)), true);
|
||||
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$pointsToNextItems = $parameters['_pointsToNextItems'];
|
||||
|
||||
unset($parameters['_pointsToNextItems']);
|
||||
|
||||
return new static($parameters, $pointsToNextItems);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user