mirror of
https://github.com/YGGverse/YGGtracker.git
synced 2025-09-13 06:42:31 +00:00
229 lines
5.7 KiB
PHP
229 lines
5.7 KiB
PHP
<?php
|
|
|
|
class AppControllerSubmit
|
|
{
|
|
private $_validator;
|
|
|
|
public function __construct(AppModelValidator $validator)
|
|
{
|
|
$this->_validator = $validator;
|
|
}
|
|
|
|
private function _response(string $title, string $h1, string $text, int $code = 200)
|
|
{
|
|
require_once __DIR__ . '/response.php';
|
|
|
|
$appControllerResponse = new AppControllerResponse(
|
|
$title,
|
|
$h1,
|
|
$text,
|
|
$code
|
|
);
|
|
|
|
$appControllerResponse->render();
|
|
|
|
exit;
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
require_once __DIR__ . '/user.php';
|
|
|
|
$appControllerUser = new AppControllerUser(
|
|
$_SERVER['REMOTE_ADDR']
|
|
);
|
|
|
|
// Get user info
|
|
if (!$user = $appControllerUser->getUser())
|
|
{
|
|
$this->_response(
|
|
sprintf(
|
|
_('Error - %s'),
|
|
WEBSITE_NAME
|
|
),
|
|
_('500'),
|
|
_('Could not init user'),
|
|
500
|
|
);
|
|
}
|
|
|
|
// Require account type selection
|
|
if (is_null($user->public))
|
|
{
|
|
header(
|
|
sprintf('Location: %s/welcome', trim(WEBSITE_URL, '/'))
|
|
);
|
|
}
|
|
|
|
// Form
|
|
$form = (object)
|
|
[
|
|
'title' => (object)
|
|
[
|
|
'error' => [],
|
|
'attribute' => (object)
|
|
[
|
|
'value' => null,
|
|
'required' => $this->_validator->getPageTitleRequired(),
|
|
'minlength' => $this->_validator->getPageTitleLengthMin(),
|
|
'maxlength' => $this->_validator->getPageTitleLengthMax(),
|
|
'placeholder' => sprintf(
|
|
_('Page subject (%s-%s chars)'),
|
|
number_format($this->_validator->getPageTitleLengthMin()),
|
|
number_format($this->_validator->getPageTitleLengthMax())
|
|
),
|
|
]
|
|
],
|
|
'description' => (object)
|
|
[
|
|
'error' => [],
|
|
'attribute' => (object)
|
|
[
|
|
'value' => null,
|
|
'required' => $this->_validator->getPageDescriptionRequired(),
|
|
'minlength' => $this->_validator->getPageDescriptionLengthMin(),
|
|
'maxlength' => $this->_validator->getPageDescriptionLengthMax(),
|
|
'placeholder' => sprintf(
|
|
_('Page description text (%s-%s chars)'),
|
|
number_format($this->_validator->getPageDescriptionLengthMin()),
|
|
number_format($this->_validator->getPageDescriptionLengthMax())
|
|
),
|
|
]
|
|
],
|
|
'keywords' => (object)
|
|
[
|
|
'error' => [],
|
|
'attribute' => (object)
|
|
[
|
|
'value' => null,
|
|
'required' => $this->_validator->getPageKeywordsRequired(),
|
|
'placeholder' => sprintf(
|
|
_('Page keywords (%s-%s total / %s-%s chars per item)'),
|
|
number_format($this->_validator->getPageKeywordsQuantityMin()),
|
|
number_format($this->_validator->getPageKeywordsQuantityMax()),
|
|
number_format($this->_validator->getPageKeywordLengthMin()),
|
|
number_format($this->_validator->getPageKeywordLengthMax())
|
|
),
|
|
]
|
|
],
|
|
'torrent' => (object)
|
|
[
|
|
'error' => [],
|
|
'attribute' => (object)
|
|
[
|
|
'value' => null,
|
|
'required' => $this->_validator->getPageTorrentRequired(),
|
|
'accept' => implode(',', $this->_validator->getPageTorrentMimeTypes()),
|
|
'placeholder' => sprintf(
|
|
_('Torrent file (use Ctrl to select multiple files)')
|
|
),
|
|
],
|
|
],
|
|
'magnet' => (object)
|
|
[
|
|
'error' => [],
|
|
'value' => null,
|
|
],
|
|
];
|
|
|
|
// Submit request
|
|
if (isset($_POST))
|
|
{
|
|
if (isset($_POST['title']))
|
|
{
|
|
$error = [];
|
|
|
|
if (!$this->_validator->pageTitle($_POST['title'], $error))
|
|
{
|
|
$form->title->error[] = $error;
|
|
}
|
|
|
|
// @TODO check for page duplicates
|
|
|
|
$form->title->attribute->value = htmlentities($_POST['title']);
|
|
}
|
|
|
|
if (isset($_POST['description']))
|
|
{
|
|
$error = [];
|
|
|
|
if (!$this->_validator->pageDescription($_POST['description'], $error))
|
|
{
|
|
$form->description->error[] = $error;
|
|
}
|
|
|
|
$form->description->attribute->value = htmlentities($_POST['description']);
|
|
}
|
|
|
|
if (isset($_POST['keywords']))
|
|
{
|
|
$error = [];
|
|
|
|
if (!$this->_validator->pageKeywords($_POST['keywords'], $error))
|
|
{
|
|
$form->keywords->error[] = $error;
|
|
}
|
|
|
|
$form->keywords->attribute->value = htmlentities($_POST['keywords']);
|
|
}
|
|
|
|
if (isset($_FILES['torrent']))
|
|
{
|
|
$error = [];
|
|
|
|
// @TODO
|
|
}
|
|
|
|
// Request valid
|
|
if (empty($error))
|
|
{
|
|
// @TODO redirect
|
|
}
|
|
}
|
|
|
|
// Render
|
|
require_once __DIR__ . '/module/head.php';
|
|
|
|
$appControllerModuleHead = new AppControllerModuleHead(
|
|
WEBSITE_URL,
|
|
sprintf(
|
|
_('Submit - %s'),
|
|
WEBSITE_NAME
|
|
),
|
|
[
|
|
[
|
|
'rel' => 'stylesheet',
|
|
'type' => 'text/css',
|
|
'href' => sprintf(
|
|
'assets/theme/default/css/common.css?%s',
|
|
WEBSITE_CSS_VERSION
|
|
),
|
|
],
|
|
[
|
|
'rel' => 'stylesheet',
|
|
'type' => 'text/css',
|
|
'href' => sprintf(
|
|
'assets/theme/default/css/framework.css?%s',
|
|
WEBSITE_CSS_VERSION
|
|
),
|
|
],
|
|
]
|
|
);
|
|
|
|
require_once __DIR__ . '/module/profile.php';
|
|
|
|
$appControllerModuleProfile = new AppControllerModuleProfile(
|
|
$appControllerUser
|
|
);
|
|
|
|
require_once __DIR__ . '/module/header.php';
|
|
|
|
$appControllerModuleHeader = new AppControllerModuleHeader();
|
|
|
|
require_once __DIR__ . '/module/footer.php';
|
|
|
|
$appControllerModuleFooter = new AppControllerModuleFooter();
|
|
|
|
include __DIR__ . '../../view/theme/default/submit.phtml';
|
|
}
|
|
} |