<?php
namespace App\Service;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
class EditeurManager
{
private $em;
private $root;
private $container;
public function __construct($container)
{
$this->container = $container;
$this->root = $this->container->get('kernel')->getProjectDir();
}
// Recup les données en fonction des blocks include dans la page
public function getPageData($filePath, $pageName, $request)
{
$regexInclude = '/\{\% include (.*?)%}/';
$filePath = $this->root.'/templates/'.$filePath;
if(!file_exists($filePath)){
throw new \Symfony\Component\HttpKernel\Exception\NotFoundHttpException();
}
$fileContent = file_get_contents($filePath);
preg_match_all($regexInclude, $fileContent, $allIncludes);
$allIncludes = array_unique($allIncludes[0]);
$pageData = [];
foreach ($allIncludes as $key => $include) {
$pageData = array_merge($pageData, $this->getBlockData($include, $request));
}
return $pageData;
}
// Recup les données en fonction du nom du block
public function getBlockData($block, $request)
{
// $odraziaManager = $this->container->get('App\Service\OdraziaManager');
if(strpos($block, 'articles-list') !== false) {
// $articles = $odraziaManager->getActualites($request->query->get('page', 1), $request->query->get('categorie[]', ['all']), $request->query->get('search', ''));
// $categories = $odraziaManager->getActualitesCategories();
// $last_articles = $odraziaManager->getLastActualites();
return [
'articles' => [],
'categories' => [],
'last_articles' => []
];
} else if(strpos($block, 'last-articles') !== false) {
// $last_articles = $odraziaManager->getLastActualites();
return [
'last_articles' => []
];
}
return [];
}
/**
*
* Récupère les pages de l'éditeur
*
*/
public function getSitePages($siteUrl, $type)
{
$curl_connection = curl_init();
$lien = $_ENV['INNOVDATA_EDITOR_URL'].'api/page?'.http_build_query([
'url_site' => $siteUrl,
'type' => $type
]);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_connection, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Authorization: Bearer ' . $_ENV['INNOVDATA_EDITOR_TOKEN']
]);
curl_setopt($curl_connection,CURLOPT_URL, $lien);
curl_setopt($curl_connection,CURLOPT_RETURNTRANSFER, true);
$responseCode = curl_getinfo($curl_connection, CURLINFO_HTTP_CODE);
$requestResponse = curl_exec($curl_connection);
$data = json_decode($requestResponse, true);
return $data;
}
}