65 lines
1.7 KiB
PHP
65 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Grav\Plugin\FlexObjects;
|
|
|
|
use Grav\Framework\Route\Route;
|
|
use Grav\Plugin\FlexObjects\Controllers\MediaController;
|
|
use Grav\Plugin\FlexObjects\Controllers\ObjectController;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Psr\Http\Server\MiddlewareInterface;
|
|
use Psr\Http\Server\RequestHandlerInterface;
|
|
|
|
/**
|
|
* Class FlexRouter
|
|
* @package Grav\Plugin\FlexObjects
|
|
*/
|
|
class FlexRouter implements MiddlewareInterface
|
|
{
|
|
/**
|
|
* @param ServerRequestInterface $request
|
|
* @param RequestHandlerInterface $handler
|
|
* @return ResponseInterface
|
|
*/
|
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
{
|
|
$context = $request->getAttributes();
|
|
|
|
/** @var Route $route */
|
|
$route = $context['route'];
|
|
$post = $request->getParsedBody();
|
|
|
|
$task = $post['task'] ?? $route->getParam('task');
|
|
|
|
if (\in_array($task, ['cropupload', 'filesupload'])) {
|
|
$task = 'media.upload';
|
|
}
|
|
|
|
switch ($task) {
|
|
case 'media.upload':
|
|
case 'media.delete':
|
|
case 'media.copy':
|
|
case 'media.remove':
|
|
case 'media.list':
|
|
|
|
case 'media.add':
|
|
case 'listmedia':
|
|
case 'addmedia':
|
|
case 'delmedia':
|
|
return (new MediaController())->handle($request);
|
|
case 'save':
|
|
case 'create':
|
|
case 'update':
|
|
case 'delete':
|
|
case 'reset':
|
|
case 'preview':
|
|
|
|
case 'move':
|
|
return (new ObjectController())->handle($request);
|
|
}
|
|
|
|
// No handler found.
|
|
return $handler->handle($request);
|
|
}
|
|
}
|