forkbb/app/Controllers/Update.php
2020-10-14 20:01:43 +07:00

95 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace ForkBB\Controllers;
use ForkBB\Core\Container;
use ForkBB\Models\Page;
class Update
{
/**
* Контейнер
* @var Container
*/
protected $c;
public function __construct(Container $container)
{
$this->c = $container;
}
/**
* Маршрутиризация
*/
public function routing(): Page
{
// fix for Router
if ($this->c->config->i_fork_revision < 17) {
$confChange = [
'shared' => [
'Router' => [
'class' => \ForkBB\Core\Router::class,
'base_url' => '%BASE_URL%',
'csrf' => '@Csrf'
],
],
];
$this->c->config($confChange);
}
if ($this->c->config->i_fork_revision < 20) {
$confChange = [
'shared' => [
'Cache' => [
'class' => \ForkBB\Core\Cache\FileCache::class,
'cache_dir' => '%DIR_CACHE%',
],
],
];
$this->c->config($confChange);
}
$uri = $_SERVER['REQUEST_URI'];
if (false !== ($pos = \strpos($uri, '?'))) {
$uri = \substr($uri, 0, $pos);
}
$uri = \rawurldecode($uri);
$this->c->user = $this->c->users->create(['id' => 2, 'group_id' => $this->c->GROUP_ADMIN]); //???? id?
$this->c->Lang->load('common');
$r = $this->c->Router;
$r->add(
$r::GET,
'/admin/update/{uid}/{stage:\d+}[/{start:\d+}]',
'AdminUpdate:stage',
'AdminUpdateStage'
);
$r->add(
$r::DUO,
'/admin/update',
'AdminUpdate:view',
'AdminUpdate'
);
$method = $_SERVER['REQUEST_METHOD'];
$route = $r->route($method, $uri);
$page = null;
switch ($route[0]) {
case $r::OK:
// ... 200 OK
list($page, $action) = \explode(':', $route[1], 2);
$page = $this->c->$page->$action($route[2], $method);
break;
default:
$page = $this->c->AdminUpdate->view([], 'GET');
break;
}
return $page;
}
}