Commit b858aaea by Van

Merge remote-tracking branch 'origin/master'

# Conflicts: # src/TourinsoftExtension.php # src/Utils/ContentTypeFile.php
parents 86c527ab e276c8ec
Bolt Extension Starter
Tourinsoft Extension
======================
A starter skeleton for a Bolt v3.x Extension
## Installation
To get going run the following command, replacing the last argument with the name of your extension:
#### *Composer.json edition*
`composer create-project --no-install 'bolt/bolt-extension-starter:^3.0' <newextname>`
In file **extensions/composer.json** add this following line:
For more information, see this page in the Bolt documentation: https://docs.bolt.cm/extensions/building-starter/about
```json
"appolo": {
"type": "composer",
"url": "https://packages.lab.appolo.fr/"
},
```
Yalah
\ No newline at end of file
in this block:
```json
"repositories": {
"packagist": false,
"bolt": {
"type": "composer",
"url": "https://market.bolt.cm/satis/"
}
},
```
#### *Composer require*
Go to base dir with terminal and run this following lines :
```bash
cd extensions
composer require appolo/tourinsoft
```
## Configuration
Change this keys in configuration:
- ot_key
- cdn_url
## Twig Filter
In order to parse data, you can use twig filter
Exemple:
```
{{record.ouverture|tourinsoft}}
```
\ No newline at end of file
{
"name": "appolo/tourinsoft",
"description": "",
"description": "Tourinsoft extension for Bolt",
"type": "bolt-extension",
"keywords": [
],
......
......@@ -2,25 +2,34 @@
namespace Bolt\Extension\Appolo\Tourinsoft;
use Bolt\AccessControl\Token\Token;
use Bolt\Asset\File\JavaScript;
use Bolt\Asset\File\Stylesheet;
use Bolt\Controller\Zone;
use Bolt\Events\CronEvent;
use Bolt\Events\CronEvents;
use Bolt\Extension\Appolo\Tourinsoft\Controller\Backend\FluxController;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\PipeToArray;
use Bolt\Extension\Appolo\Tourinsoft\Storage\Entity\Flux;
use Bolt\Extension\Appolo\Tourinsoft\Synchronisation\Synchronisation;
use Bolt\Extension\DatabaseSchemaTrait;
use Bolt\Extension\SimpleExtension;
use Bolt\Extension\StorageTrait;
use Bolt\Menu\MenuEntry;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\PipeToArray;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\HashtagToArray;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\LabelFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\TarifFilter;
use Bolt\Extension\Appolo\Tourinsoft\TwigFilters\TourinsoftFilter;
use Bolt\Storage\Entity\Authtoken;
use Bolt\Storage\Entity\Users;
use Silex\Application;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Form\Extension\Core\Type\FormType;
/**
* Tourinsoft extension class.
*
......@@ -137,4 +146,54 @@ class TourinsoftExtension extends SimpleExtension
];
}
/**
* {@inheritdoc}
*/
protected function subscribe(EventDispatcherInterface $dispatcher)
{
$dispatcher->addListener(CronEvents::CRON_DAILY, [$this, 'tourinsoftCron']);
}
/**
* Callback method for the custom cron job.
*
* @param CronEvent $event
* @throws \Exception
*/
public function tourinsoftCron(CronEvent $event)
{
$this->InitializeRootSession();
$flux = $this->getContainer()['storage']->getRepository(Flux::class)->findAll();
/** @var Flux $item */
foreach ($flux as $item) {
$item->setSynchronizedAt(new \DateTime());
$this->getContainer()['storage']->getRepository(Flux::class)->update($item);
$sync = new Synchronisation($this->getConfig(), $this->getContainer(), $item);
$sync->sync();
}
// Return a message to the console
$event->output->writeln("<comment>Synchronisation terminée</comment>");
}
/**
* @throws \Exception
*/
private function initializeRootSession() {
$user = $this->getContainer()['storage']->getRepository(Users::class)->find(1);
$authToken = new Authtoken();
$authToken->setUserId($user->getId());
$authToken->setToken(uniqid());
$authToken->setSalt($user->getSalt());
$authToken->setLastseen(new \DateTime());
$authToken->setValidity((new \DateTime())->add(new \DateInterval('P8D')));
$token = new Token($user, $authToken);
$this->getContainer()['session']->set('authentication', $token);
}
}
\ No newline at end of file
......@@ -42,8 +42,11 @@ class Data
$this->deleteData();
$items = $this->getFormattedItems();
$contentType = $this->getContentType();
// $contentType['status'] = 'published';
foreach ($items as $k => $item) {
$this->application['storage.request.save']->action($item, $this->getContentType(), null, null, null, null);
$this->application['storage.request.save']->action($item, $contentType, null, null, null, null);
}
}
......@@ -76,8 +79,10 @@ class Data
$key = strtolower($k);
$data[$key] = $v;
}
$data['title'] = $data['syndicobjectname'];
$data['status'] = 'published';
$data['date_publish'] = new \DateTimeImmutable();
$data['datepublish'] = new \DateTimeImmutable();
array_push($items, $data);
}
return $items;
......
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