mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 15:10:28 +01:00
202 lines
4.7 KiB
PHP
202 lines
4.7 KiB
PHP
<?php
|
|
|
|
namespace Xentral\Widgets\DataTable\Result;
|
|
|
|
use JsonSerializable;
|
|
use Xentral\Widgets\DataTable\Exception\InvalidArgumentException;
|
|
|
|
/**
|
|
* @see https://datatables.net/manual/server-side
|
|
*/
|
|
final class DataTableDataResult implements JsonSerializable
|
|
{
|
|
/** @var int $drawCounter The draw counter */
|
|
private $drawCounter;
|
|
|
|
/** @var int $recordsTotal Total number of records, before filtering */
|
|
private $recordsTotal;
|
|
|
|
/** @var int $recordsFiltered Total number of records, after filtering */
|
|
private $recordsFiltered;
|
|
|
|
/** @var array $data */
|
|
private $data;
|
|
|
|
/** @var string|null $errorMessage */
|
|
private $errorMessage;
|
|
|
|
/** @var array|null $debugInfo */
|
|
private $debugInfo;
|
|
|
|
/**
|
|
* @param int $drawCounter
|
|
* @param int $recordsTotal
|
|
* @param int $recordsFiltered
|
|
* @param array $data
|
|
*
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function __construct(
|
|
$drawCounter = 1,
|
|
$recordsTotal = 0,
|
|
$recordsFiltered = 0,
|
|
$data = []
|
|
) {
|
|
if (!is_int($drawCounter)) {
|
|
throw new InvalidArgumentException(sprintf(
|
|
'Invalid argument. Draw counter must be an integer. Given type: %s',
|
|
strtolower(gettype($drawCounter))
|
|
));
|
|
}
|
|
if (!is_int($recordsTotal)) {
|
|
throw new InvalidArgumentException(sprintf(
|
|
'Invalid argument. Total records count must be an integer. Given type: %s',
|
|
strtolower(gettype($recordsTotal))
|
|
));
|
|
}
|
|
if (!is_int($recordsFiltered)) {
|
|
throw new InvalidArgumentException(sprintf(
|
|
'Invalid argument. Filtered records count be an integer. Given type: %s',
|
|
strtolower(gettype($recordsFiltered))
|
|
));
|
|
}
|
|
if (!is_array($data)) {
|
|
throw new InvalidArgumentException(sprintf(
|
|
'Invalid argument. Data parameter must be an array. Given type: %s',
|
|
strtolower(gettype($data))
|
|
));
|
|
}
|
|
|
|
$this->drawCounter = $drawCounter;
|
|
$this->recordsTotal = $recordsTotal;
|
|
$this->recordsFiltered = $recordsFiltered;
|
|
$this->data = $data;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getResult()
|
|
{
|
|
$result = [
|
|
'draw' => $this->drawCounter,
|
|
'recordsTotal' => $this->recordsTotal,
|
|
'recordsFiltered' => $this->recordsFiltered,
|
|
'data' => $this->data,
|
|
];
|
|
|
|
if ($this->debugInfo !== null) {
|
|
$result['debug'] = $this->debugInfo;
|
|
}
|
|
if ($this->errorMessage !== null) {
|
|
$result['error'] = $this->errorMessage;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getDrawCounter()
|
|
{
|
|
return $this->drawCounter;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getRecordsTotal()
|
|
{
|
|
return $this->recordsTotal;
|
|
}
|
|
|
|
/**
|
|
* @return int
|
|
*/
|
|
public function getRecordsFiltered()
|
|
{
|
|
return $this->recordsFiltered;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function getData()
|
|
{
|
|
return $this->data;
|
|
}
|
|
|
|
/**
|
|
* @return array|null
|
|
*/
|
|
public function getDebugInfo()
|
|
{
|
|
return $this->debugInfo;
|
|
}
|
|
|
|
/**
|
|
* @param array $debugInfo
|
|
*/
|
|
public function setDebugInfo($debugInfo)
|
|
{
|
|
if (!is_array($debugInfo)) {
|
|
throw new InvalidArgumentException(sprintf(
|
|
'Invalid argument. Debug information must be an array. Given type: %s',
|
|
strtolower(gettype($debugInfo))
|
|
));
|
|
}
|
|
|
|
$this->debugInfo = $debugInfo;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function hasError()
|
|
{
|
|
return $this->errorMessage !== null;
|
|
}
|
|
|
|
/**
|
|
* @return string|null
|
|
*/
|
|
public function getErrorMessage()
|
|
{
|
|
return $this->errorMessage;
|
|
}
|
|
|
|
/**
|
|
* @param string $errorMessage
|
|
*
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public function setErrorMessage($errorMessage)
|
|
{
|
|
if (!is_string($errorMessage)) {
|
|
throw new InvalidArgumentException(sprintf(
|
|
'Invalid argument. Error message must be a string. Given type: %s',
|
|
strtolower(gettype($errorMessage))
|
|
));
|
|
}
|
|
|
|
$this->errorMessage = $errorMessage;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function toArray()
|
|
{
|
|
return $this->getResult();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function jsonSerialize()
|
|
{
|
|
return $this->toArray();
|
|
}
|
|
}
|