161 lines
5.6 KiB
PHP
161 lines
5.6 KiB
PHP
<?php
|
|
namespace ProVM\TotalSport\Common\Controller\Web\Admin;
|
|
|
|
use Psr\Container\ContainerInterface as Container;
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use Slim\Views\Blade as View;
|
|
use ProVM\TotalSport\Common\Service\DataHandler;
|
|
use ProVM\TotalSport\Common\Service\MediaLoader;
|
|
|
|
class Galeria {
|
|
public function __invoke(Request $request, Response $response, View $view, DataHandler $handler): Response {
|
|
$galeria = $handler->load('galeria');
|
|
return $view->render($response, 'admin.galeria', compact('galeria'));
|
|
}
|
|
public function show(Request $request, Response $response, View $view, DataHandler $handler, MediaLoader $loader, $evento): Response {
|
|
$galeria = $handler->load('galeria');
|
|
$e = $galeria[$evento];
|
|
$e->id = $evento;
|
|
$imagenes = $loader->load($e);
|
|
$servicios = $handler->load('servicios');
|
|
return $view->render($response, 'admin.galeria.show', ['evento' => $e, 'imagenes' => $imagenes, 'servicios' => $servicios]);
|
|
}
|
|
public function edit(Request $request, Response $response, Container $container, DataHandler $handler, $evento): Response {
|
|
$galeria = $handler->load('galeria');
|
|
$e = $galeria[$evento];
|
|
$post = $request->getParsedBody();
|
|
$servicios = $handler->load('servicios');
|
|
$fields = ['titulo', 'empresa', 'servicio', 'descripcion'];
|
|
$changed = false;
|
|
foreach ($fields as $field) {
|
|
if ($post[$field] != $e->{$field}) {
|
|
$e->{$field} = $post[$field];
|
|
$changed = true;
|
|
}
|
|
}
|
|
if ($changed) {
|
|
$galeria[$evento] = $e;
|
|
$handler->save('galeria', $galeria);
|
|
}
|
|
return $response->withHeader('Location', implode('/', [
|
|
$container->get('urls')['admin'],
|
|
'galeria'
|
|
]));
|
|
}
|
|
public function add(Request $request, Response $response, View $view, DataHandler $handler): Response {
|
|
$servicios = $handler->load('servicios');
|
|
return $view->render($response, 'admin.galeria.add', compact('servicios'));
|
|
}
|
|
public function do_add(Request $request, Response $response, Container $container, DataHandler $handler): Response {
|
|
$post = $request->getParsedBody();
|
|
$galeria = $handler->load('galeria');
|
|
$evento = [
|
|
'titulo' => $post['titulo'],
|
|
'empresa' => $post['empresa'],
|
|
'servicio' => $post['servicio'],
|
|
'descripcion' => $post['descripcion']
|
|
];
|
|
$galeria []= $evento;
|
|
$status = $handler->save('galeria', $galeria);
|
|
return $response->withHeader('Location', implode('/', [
|
|
$container->get('urls')['admin'],
|
|
'galeria'
|
|
]));
|
|
}
|
|
public function delete(Request $request, Response $response, Container $container, DataHandler $handler, MediaLoader $loader, $evento): Response {
|
|
$galeria = $handler->load('galeria');
|
|
unset($galeria[$evento]);
|
|
$galeria = array_values($galeria);
|
|
$handler->save('galeria', $galeria);
|
|
return $response->withHeader('Location', implode('/', [
|
|
$container->get('urls')['admin'],
|
|
'galeria'
|
|
]));
|
|
}
|
|
public function addImage(Request $request, Response $response, DataHandler $handler, MediaLoader $loader, $evento): Response {
|
|
$post = $request->getParsedBody();
|
|
$files = $request->getUploadedFiles();
|
|
if (count($files) == 0) {
|
|
$output = [
|
|
'informacion' => '',
|
|
'evento' => $evento,
|
|
'estado' => false
|
|
];
|
|
$response->getBody()->write(json_encode($output));
|
|
return $response
|
|
->withHeader('Content-Type', 'application/json')
|
|
->withStatus(201);
|
|
}
|
|
$file = $files['imagen'];
|
|
$galeria = $handler->load('galeria');
|
|
$e = $galeria[$evento];
|
|
if (is_array($file)) {
|
|
$status = false;
|
|
foreach ($file as $f) {
|
|
$status |= $loader->add($e, $f);
|
|
}
|
|
} else {
|
|
$status = $loader->add($e, $file);
|
|
}
|
|
$output = [
|
|
'informacion' => $file,
|
|
'evento' => $e,
|
|
'estado' => $status
|
|
];
|
|
$response->getBody()->write(json_encode($output));
|
|
return $response
|
|
->withHeader('Content-Type', 'application/json')
|
|
->withStatus(201);
|
|
}
|
|
public function deleteImage(Request $request, Response $response, DataHandler $handler, MediaLoader $loader, $evento): Response {
|
|
$post = $request->getParsedBody();
|
|
$galeria = $handler->load('galeria');
|
|
$e = $egaleria[$evento];
|
|
$status = $loader->delete($e, $post['media']);
|
|
$output = [
|
|
'informacion' => $post,
|
|
'evento' => $e,
|
|
'estado' => !$status
|
|
];
|
|
$response->getBody()->write(json_encode($output));
|
|
return $response
|
|
->withHeader('Content-Type', 'application/json')
|
|
->withStatus(201);
|
|
}
|
|
public function addVideo(Request $request, Response $response, Container $container, DataHandler $handler, MediaLoader $loader, $evento): Response {
|
|
$post = $request->getParsedBody();
|
|
$files = $request->getUploadedFiles();
|
|
if (count($files) == 0) {
|
|
$output = [
|
|
'informacion' => '',
|
|
'evento' => $evento,
|
|
'estado' => false
|
|
];
|
|
$response->getBody()->write(json_encode($output));
|
|
return $response->withHeader('Location', implode('/', [
|
|
$container->get('urls')['admin'],
|
|
'evento',
|
|
$evento
|
|
]));
|
|
}
|
|
$file = $files['video'];
|
|
$galeria = $handler->load('galeria');
|
|
$e = $galeria[$evento];
|
|
if (is_array($file)) {
|
|
$status = false;
|
|
foreach ($file as $f) {
|
|
$status |= $loader->add($e, $f);
|
|
}
|
|
} else {
|
|
$status = $loader->add($e, $file);
|
|
}
|
|
$response->getBody()->write(json_encode($output));
|
|
return $response->withHeader('Location', implode('/', [
|
|
$container->get('urls')['admin'],
|
|
'evento',
|
|
$evento
|
|
]));
|
|
}
|
|
}
|