Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user