161 lines
5.1 KiB
PHP
161 lines
5.1 KiB
PHP
<?php
|
|
namespace App\Antenne\Actions;
|
|
if (!isset($_SESSION)) {
|
|
session_start();
|
|
}
|
|
|
|
use App\Gmarche\Entity\Antenne;
|
|
use App\Gmarche\Table\AntenneTable;
|
|
use App\Gmarche\Table\RegionTable;
|
|
use Framework\Actions\CrudAction;
|
|
use Framework\Actions\RouterAwareAction;
|
|
use Framework\Renderer\RendererInterface;
|
|
use Framework\Response\RedirectResponse;
|
|
use Framework\Router;
|
|
use Framework\Session\FlashService;
|
|
use Framework\Validator;
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
|
|
class AntenneCrudAction extends CrudAction
|
|
{
|
|
protected $viewPath = "@antenne";
|
|
protected $routePrefix = "antenne";
|
|
/**
|
|
* @var RendererInterface
|
|
*/
|
|
private $renderer;
|
|
|
|
/**
|
|
* @var RegionTable
|
|
*/
|
|
protected $regionTable;
|
|
|
|
/**
|
|
* @var AntenneTable
|
|
*/
|
|
protected $antenneTable;
|
|
|
|
/**
|
|
* @var FlashService
|
|
*/
|
|
private $flashService;
|
|
|
|
use RouterAwareAction;
|
|
|
|
public function __construct(
|
|
RendererInterface $renderer,
|
|
Router $router,
|
|
AntenneTable $antenneTable,
|
|
RegionTable $regionTable,
|
|
FlashService $flash
|
|
) {
|
|
parent::__construct($renderer, $router, $antenneTable, $regionTable, $flash);
|
|
$this->renderer = $renderer;
|
|
$this->regionTable = $regionTable;
|
|
$this->antenneTable = $antenneTable;
|
|
$this->flashService = $flash;
|
|
}
|
|
|
|
public function delete(Request $request)
|
|
{
|
|
$antenne = $this->antenneTable->find($request->getAttribute('id'));
|
|
// $this->postUpload->delete($post->image);
|
|
return parent::delete($request);
|
|
}
|
|
|
|
protected function formParams(array $params): array
|
|
{
|
|
return $params;
|
|
}
|
|
|
|
protected function getNewEntity()
|
|
{
|
|
$antenne = new Antenne();
|
|
$antenne->created_at = new \DateTime();
|
|
return $antenne;
|
|
}
|
|
|
|
/**
|
|
* @param Request $request
|
|
* @param Antenne $antenne
|
|
* @return array
|
|
*/
|
|
protected function prePersist(Request $request, $antenne): array
|
|
{
|
|
$params = $request->getParsedBody();
|
|
$params = array_filter($params, function ($key) {
|
|
return in_array($key, ['region_id', 'name', 'slug', 'created_at', 'listeRegions']);
|
|
}, ARRAY_FILTER_USE_KEY);
|
|
return array_merge($params, ['test' => $test, 'updated_at' => date('Y-m-d H:i:s')]);
|
|
}
|
|
protected function getValidator(Request $request)
|
|
{
|
|
$validator = parent::getValidator($request)
|
|
->required('region_id', 'name', 'slug', 'created_at')
|
|
->length('name', 2, 250)
|
|
->dateTime('created_at')
|
|
->slug('slug');
|
|
/*if (is_null($request->getAttribute('id'))) {
|
|
$validator->uploaded('image');
|
|
}*/
|
|
return $validator;
|
|
}
|
|
public function __invoke(Request $request)
|
|
{
|
|
if ($request->getMethod() === 'POST') {
|
|
$params = $request->getParsedBody();
|
|
$date = $params['datepicker'];
|
|
$time = '00:00:00';
|
|
$date_us = substr($date,6,4).'-'.substr($date,3,2).'-'.substr($date,0,2);
|
|
$date_us .= ' '.$time;
|
|
$madate = date("Y-m-d H:i:s", strtotime($date_us));
|
|
$text = $params['antenne'];
|
|
// replace non letter or digits by -
|
|
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
|
|
// transliterate
|
|
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
|
|
// remove unwanted characters
|
|
$text = preg_replace('~[^-\w]+~', '', $text);
|
|
// trim
|
|
$text = trim($text, '-');
|
|
// remove duplicate -
|
|
$text = preg_replace('~-+~', '-', $text);
|
|
// lowercase
|
|
$slug = strtolower($text);
|
|
$admin = '';
|
|
$content = '';
|
|
$image = '';
|
|
$created_at = date("Y-m-d H:i:s");
|
|
$validator = (new Validator($params))
|
|
->required('antenne', 'region');
|
|
if ($validator->isValid()) {
|
|
$antenneParams = [
|
|
'id' => $antenne_id,
|
|
'name' => $params['antenne'],
|
|
'slug' => $slug,
|
|
'admin' => $admin,
|
|
'content' => $content,
|
|
'image' => $image,
|
|
'created_at' => $created_at,
|
|
'region_id' => $params['region'],
|
|
'gmarcheAt' => $madate,
|
|
'edito1' => $params['contenu1'],
|
|
'edito2' => $params['contenu2'],
|
|
'edito3' => $params['contenu3'],
|
|
'edito4' => $params['contenu4']
|
|
];
|
|
$this->antenneTable->insert($antenneParams);
|
|
$this->flashService->success("L'antenne ".$params['antenne']." a bien été créée.");
|
|
|
|
return new RedirectResponse($request->getUri()->getPath());
|
|
}
|
|
}
|
|
//$errors = $validator->getErrors();
|
|
$listeRegions = $this->regionTable->findAll();
|
|
$role = $_SESSION['role'];
|
|
|
|
return $this->renderer->render('@antenne/create', compact('listeRegions','role'));
|
|
}
|
|
}
|
|
|