Commit a4a35e57 by Frédéric

Insert data

parent 3edcd00c
......@@ -5,6 +5,7 @@ namespace Bolt\Extension\Appolo\Tourinsoft\Synchronisation;
use Bolt\Application;
use Bolt\Extension\Appolo\Tourinsoft\Storage\Entity\Flux;
use Bolt\Extension\Appolo\Tourinsoft\Utils\ContentTypeFile;
use Bolt\Extension\Appolo\Tourinsoft\Utils\Data;
use Bolt\Extension\Appolo\Tourinsoft\Utils\Parser;
use Bolt\Extension\Appolo\Tourinsoft\Utils\Schema;
......@@ -49,6 +50,7 @@ class Synchronisation
// Parse tourinsoft flux
$parser = new Parser($options);
$keys = $parser->getKeys();
$arrayStream = $parser->getArrayStream();
// Write in contenttypes.yml file
$file = new ContentTypeFile($this->application, $this->flux->getContentType(), $keys, $options);
......@@ -57,6 +59,10 @@ class Synchronisation
// Sync database
$schema = new Schema($this->application);
$schema->update();
// Add data
$data = new Data($this->application, $this->flux->getContentType(), $arrayStream);
$data->insert();
}
/**
......
......@@ -74,16 +74,16 @@ class ContentTypeFile
$fields = [];
foreach ($this->keys as $key) {
$fields[$key] = [
$fields[strtolower($key)] = [
'type' => 'text',
'label' => $this->getFieldLabel($key)
'label' => $this->getFieldLabel($key),
'readonly' => true
];
}
$fields['slug'] = [
'type' => 'slug',
'uses' => 'SyndicObjectID',
'group' => 'meta'
'uses' => ['syndicobjectid']
];
return $fields;
......
......@@ -2,7 +2,82 @@
namespace Bolt\Extension\Appolo\Tourinsoft\Utils;
use Bolt\Application;
use Bolt\Storage\Entity\Builder;
class Data
{
/**
* @var Application
*/
private $application;
/**
* @var array
*/
private $arrayStream;
/**
* @var string
*/
private $contentType;
/**
* Data constructor.
* @param Application $application
* @param string $contentType
* @param array $arrayStream
*/
public function __construct(Application $application, $contentType = '', array $arrayStream = []) {
$this->application = $application;
$this->arrayStream = $arrayStream;
$this->contentType = $contentType;
}
/**
* Insert data in database
*/
public function insert() {
$this->deleteData();
$items = $this->getFormattedItems();
foreach ($items as $k => $item) {
$this->application['storage.request.save']->action($item, $this->getContentType(), null, null, null, null);
}
}
/**
* Delete data from contenttype table
*/
private function deleteData() {
$contentTypeRepository = $this->application['storage']->getRepository($this->contentType);
$deleteFieldQuery = $contentTypeRepository->createQueryBuilder()
->delete($contentTypeRepository->getTableName());
$deleteFieldQuery->execute();
}
/**
* @return mixed
*/
private function getContentType() {
return $this->application['storage']->getContentType($this->contentType);
}
/**
* @return array
*/
private function getFormattedItems() {
$items = [];
foreach ($this->arrayStream['value'] as $item) {
$data = [];
foreach ($item as $k => $v) {
$key = strtolower($k);
$data[$key] = $v;
}
$data['status'] = 'published';
$data['date_publish'] = new \DateTimeImmutable();
array_push($items, $data);
}
return $items;
}
}
\ No newline at end of file
......@@ -52,6 +52,13 @@ class Parser
}
/**
* @return array
*/
public function getArrayStream() {
return $this->arrayStream;
}
/**
* @throws \Exception
*/
protected function getStreamAsArray() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment