Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
|
||||
namespace Xentral\Modules\ImportTemplate\Data;
|
||||
|
||||
use JsonSerializable;
|
||||
use Xentral\Modules\ImportTemplate\Exception\InvalidTemplateDataException;
|
||||
|
||||
class ImportTemplate implements JsonSerializable
|
||||
{
|
||||
/**@var string $id */
|
||||
private $id;
|
||||
|
||||
/**@var string $label */
|
||||
private $label = '';
|
||||
|
||||
/**@var string $delimiter */
|
||||
private $delimiter='';
|
||||
|
||||
/**@var int $lineNumber */
|
||||
private $lineNumber=0;
|
||||
|
||||
/**@var string $masking */
|
||||
private $masking='';
|
||||
|
||||
/**@var string $importCharSet */
|
||||
private $importCharSet='';
|
||||
|
||||
/**@var string $fields */
|
||||
private $fields='';
|
||||
|
||||
/**@var string $target */
|
||||
private $target='';
|
||||
|
||||
/**@var string $internalNote */
|
||||
private $internalNote='';
|
||||
|
||||
/**@var int $utf8decode */
|
||||
private $utf8decode=1;
|
||||
|
||||
/**@var string $charset */
|
||||
private $charset='';
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*
|
||||
* @throws InvalidTemplateDataException
|
||||
*
|
||||
* @return ImportTemplate
|
||||
*/
|
||||
public static function fromArray($data)
|
||||
{
|
||||
$isValid = self::validate($data);
|
||||
if (!$isValid) {
|
||||
throw new InvalidTemplateDataException();
|
||||
}
|
||||
|
||||
return self::fromDbState($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private static function validate($data)
|
||||
{
|
||||
$isValid = true;
|
||||
|
||||
if (isset($data['fields'])) {
|
||||
$regex = '/[\r\n0-9]+:/';
|
||||
preg_match_all($regex, $data['fields'], $matches);
|
||||
if (count($matches[0]) == 0) {
|
||||
$isValid = false;
|
||||
}
|
||||
} else {
|
||||
$isValid = false;
|
||||
}
|
||||
|
||||
if (isset($data['label'])) {
|
||||
if (strlen($data['label']) == 0) {
|
||||
$isValid = false;
|
||||
}
|
||||
} else {
|
||||
$isValid = false;
|
||||
}
|
||||
|
||||
return $isValid;
|
||||
}
|
||||
|
||||
public static function fromDbState($data)
|
||||
{
|
||||
$instance = new self();
|
||||
|
||||
if (isset($data['id'])) {
|
||||
$instance->id = $data['id'];
|
||||
}
|
||||
|
||||
if (isset($data['label'])) {
|
||||
$instance->label = $data['label'];
|
||||
}
|
||||
|
||||
if (isset($data['delimiter'])) {
|
||||
$instance->delimiter = $data['delimiter'];
|
||||
}
|
||||
|
||||
if (isset($data['lineNumber'])) {
|
||||
$instance->lineNumber = $data['lineNumber'];
|
||||
}
|
||||
|
||||
if (isset($data['masking'])) {
|
||||
$instance->masking = $data['masking'];
|
||||
}
|
||||
|
||||
if (isset($data['importCharSet'])) {
|
||||
$instance->importCharSet = $data['importCharSet'];
|
||||
}
|
||||
|
||||
if (isset($data['fields'])) {
|
||||
$instance->fields = $data['fields'];
|
||||
}
|
||||
|
||||
if (isset($data['target'])) {
|
||||
$instance->target = $data['target'];
|
||||
}
|
||||
|
||||
if (isset($data['internalNote'])) {
|
||||
$instance->internalNote = $data['internalNote'];
|
||||
}
|
||||
|
||||
if (isset($data['utf8decode'])) {
|
||||
$instance->utf8decode = $data['utf8decode'] == 1;
|
||||
}
|
||||
|
||||
if (isset($data['charset'])) {
|
||||
$instance->charset = $data['charset'];
|
||||
}
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getLabel()
|
||||
{
|
||||
return $this->label;
|
||||
}
|
||||
|
||||
public function getDelimiter()
|
||||
{
|
||||
return $this->delimiter;
|
||||
}
|
||||
|
||||
public function getLineNumber()
|
||||
{
|
||||
return $this->lineNumber;
|
||||
}
|
||||
|
||||
public function getMasking()
|
||||
{
|
||||
return $this->masking;
|
||||
}
|
||||
|
||||
public function getImportCharSet()
|
||||
{
|
||||
return $this->importCharSet;
|
||||
}
|
||||
|
||||
public function getFields()
|
||||
{
|
||||
return $this->fields;
|
||||
}
|
||||
|
||||
public function getTarget()
|
||||
{
|
||||
return $this->target;
|
||||
}
|
||||
|
||||
public function getInternalNote()
|
||||
{
|
||||
return $this->internalNote;
|
||||
}
|
||||
|
||||
public function getUtf8decode()
|
||||
{
|
||||
return $this->utf8decode;
|
||||
}
|
||||
|
||||
public function getCharset()
|
||||
{
|
||||
return $this->charset;
|
||||
}
|
||||
|
||||
public function updateLabel($label)
|
||||
{
|
||||
$this->label = $label;
|
||||
}
|
||||
|
||||
public function jsonSerialize()
|
||||
{
|
||||
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'label' => $this->label,
|
||||
'delimiter' => $this->delimiter,
|
||||
'lineNumber' => $this->lineNumber,
|
||||
'masking' => $this->masking,
|
||||
'importCharSet' => $this->importCharSet,
|
||||
'fields' => $this->fields,
|
||||
'target' => $this->target,
|
||||
'internalNote' => $this->internalNote,
|
||||
'utf8decode' => $this->utf8decode,
|
||||
'charset' => $this->charset,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user