Add more checks and return by anchor
This commit is contained in:
parent
2c94e1bc69
commit
a6f39ae72a
7 changed files with 64 additions and 60 deletions
|
@ -839,11 +839,17 @@ class Routing
|
|||
'AdminAntispam'
|
||||
);
|
||||
$r->add(
|
||||
$r::DUO,
|
||||
$r::GET,
|
||||
'/admin/extensions',
|
||||
'AdminExtensions:info',
|
||||
'AdminExtensions'
|
||||
);
|
||||
$r->add(
|
||||
$r::PST,
|
||||
'/admin/extensions/action',
|
||||
'AdminExtensions:action',
|
||||
'AdminExtensionsAction'
|
||||
);
|
||||
}
|
||||
|
||||
$uri = $_SERVER['REQUEST_URI'];
|
||||
|
|
|
@ -51,6 +51,11 @@ class Extension extends Model
|
|||
return $this->dbData['name'] ?? $this->fileData['name'];
|
||||
}
|
||||
|
||||
protected function getid(): string
|
||||
{
|
||||
return 'ext-' . \trim(\preg_replace('%\W+%', '-', $this->name), '-');
|
||||
}
|
||||
|
||||
protected function getdescription(): string
|
||||
{
|
||||
return $this->dbData['description'] ?? $this->fileData['description'];
|
||||
|
|
|
@ -132,7 +132,7 @@ class Extensions extends Manager
|
|||
$v = $v->reset()
|
||||
->addValidators([
|
||||
])->addRules([
|
||||
'name' => 'required|string',
|
||||
'name' => 'required|string|regex:%^[a-z0-9](?:[_.-]?[a-z0-9]+)*/[a-z0-9](?:[_.-]?[a-z0-9]+)*$%',
|
||||
'type' => 'required|string|in:forkbb-extension',
|
||||
'description' => 'required|string',
|
||||
'homepage' => 'string',
|
||||
|
@ -225,8 +225,6 @@ class Extensions extends Manager
|
|||
$query = 'INSERT INTO ::extensions (ext_name, ext_status, ext_data)
|
||||
VALUES(?s:name, 1, ?s:data)';
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
$ext->setModelAttrs([
|
||||
'name' => $ext->name,
|
||||
'dbStatus' => 1,
|
||||
|
@ -234,10 +232,16 @@ class Extensions extends Manager
|
|||
'fileData' => $ext->fileData,
|
||||
]);
|
||||
|
||||
$this->updateCommon($ext);
|
||||
if (true !== $this->updateCommon($ext)) {
|
||||
$this->error = 'An error occurred in updateCommon';
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->updateIndividual();
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -261,8 +265,6 @@ class Extensions extends Manager
|
|||
FROM ::extensions
|
||||
WHERE ext_name=?s:name';
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
$ext->setModelAttrs([
|
||||
'name' => $ext->name,
|
||||
'dbStatus' => null,
|
||||
|
@ -270,12 +272,18 @@ class Extensions extends Manager
|
|||
'fileData' => $ext->fileData,
|
||||
]);
|
||||
|
||||
$this->updateCommon($ext);
|
||||
if (true !== $this->updateCommon($ext)) {
|
||||
$this->error = 'An error occurred in updateCommon';
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($oldStatus) {
|
||||
$this->updateIndividual();
|
||||
}
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -284,44 +292,13 @@ class Extensions extends Manager
|
|||
*/
|
||||
public function update(Extension $ext): bool
|
||||
{
|
||||
if (true !== $ext->canUpdate) {
|
||||
if (true === $ext->canUpdate) {
|
||||
return $this->updown($ext);
|
||||
} else {
|
||||
$this->error = 'Invalid action';
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$oldStatus = $ext->dbStatus;
|
||||
$result = $ext->prepare();
|
||||
|
||||
if (true !== $result) {
|
||||
$this->error = $result;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
$vars = [
|
||||
':name' => $ext->name,
|
||||
':data' => \json_encode($ext->fileData, FORK_JSON_ENCODE),
|
||||
];
|
||||
$query = 'UPDATE ::extensions SET ext_data=?s:data
|
||||
WHERE ext_name=?s:name';
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
$ext->setModelAttrs([
|
||||
'name' => $ext->name,
|
||||
'dbStatus' => $ext->dbStatus,
|
||||
'dbData' => $ext->fileData,
|
||||
'fileData' => $ext->fileData,
|
||||
]);
|
||||
|
||||
$this->updateCommon($ext);
|
||||
|
||||
if ($oldStatus) {
|
||||
$this->updateIndividual();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -329,12 +306,17 @@ class Extensions extends Manager
|
|||
*/
|
||||
public function downdate(Extension $ext): bool
|
||||
{
|
||||
if (true !== $ext->canDowndate) {
|
||||
if (true === $ext->canDowndate) {
|
||||
return $this->updown($ext);
|
||||
} else {
|
||||
$this->error = 'Invalid action';
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected function updown(Extension $ext): bool
|
||||
{
|
||||
$oldStatus = $ext->dbStatus;
|
||||
$result = $ext->prepare();
|
||||
|
||||
|
@ -351,8 +333,6 @@ class Extensions extends Manager
|
|||
$query = 'UPDATE ::extensions SET ext_data=?s:data
|
||||
WHERE ext_name=?s:name';
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
$ext->setModelAttrs([
|
||||
'name' => $ext->name,
|
||||
'dbStatus' => $ext->dbStatus,
|
||||
|
@ -360,12 +340,18 @@ class Extensions extends Manager
|
|||
'fileData' => $ext->fileData,
|
||||
]);
|
||||
|
||||
$this->updateCommon($ext);
|
||||
if (true !== $this->updateCommon($ext)) {
|
||||
$this->error = 'An error occurred in updateCommon';
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($oldStatus) {
|
||||
$this->updateIndividual();
|
||||
}
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -386,8 +372,6 @@ class Extensions extends Manager
|
|||
$query = 'UPDATE ::extensions SET ext_status=1
|
||||
WHERE ext_name=?s:name';
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
$ext->setModelAttrs([
|
||||
'name' => $ext->name,
|
||||
'dbStatus' => 1,
|
||||
|
@ -397,6 +381,8 @@ class Extensions extends Manager
|
|||
|
||||
$this->updateIndividual();
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -417,8 +403,6 @@ class Extensions extends Manager
|
|||
$query = 'UPDATE ::extensions SET ext_status=0
|
||||
WHERE ext_name=?s:name';
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
$ext->setModelAttrs([
|
||||
'name' => $ext->name,
|
||||
'dbStatus' => 0,
|
||||
|
@ -428,6 +412,8 @@ class Extensions extends Manager
|
|||
|
||||
$this->updateIndividual();
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -530,6 +516,9 @@ class Extensions extends Manager
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Вычисляет расхождение для PRE-данных
|
||||
*/
|
||||
protected function diffPre(array $a, array $b): array
|
||||
{
|
||||
$result = [];
|
||||
|
|
|
@ -25,24 +25,22 @@ class Extensions extends Admin
|
|||
{
|
||||
$this->c->Lang->load('admin_extensions');
|
||||
|
||||
if ('POST' === $method) {
|
||||
return $this->action($args, $method);
|
||||
}
|
||||
|
||||
$this->nameTpl = 'admin/extensions';
|
||||
$this->aIndex = 'extensions';
|
||||
$this->extensions = $this->c->extensions->repository;
|
||||
$this->actionLink = $this->c->Router->link('AdminExtensions');
|
||||
$this->formsToken = $this->c->Csrf->create('AdminExtensions');
|
||||
$this->actionLink = $this->c->Router->link('AdminExtensionsAction');
|
||||
$this->formsToken = $this->c->Csrf->create('AdminExtensionsAction');
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function action(array $args, string $method): Page
|
||||
public function action(array $args, string $method): Page
|
||||
{
|
||||
$this->c->Lang->load('admin_extensions');
|
||||
|
||||
$v = $this->c->Validator->reset()
|
||||
->addRules([
|
||||
'token' => 'token:AdminExtensions',
|
||||
'token' => 'token:AdminExtensionsAction',
|
||||
'name' => 'required|string',
|
||||
'confirm' => 'required|string|in:1',
|
||||
'install' => 'string',
|
||||
|
@ -81,6 +79,6 @@ class Extensions extends Admin
|
|||
return $this->c->Message->message($this->c->extensions->error);
|
||||
}
|
||||
|
||||
return $this->c->Redirect->page('AdminExtensions')->message("Redirect {$action}", FORK_MESS_SUCC);
|
||||
return $this->c->Redirect->page('AdminExtensions', ['#' => $ext->id])->message("Redirect {$action}", FORK_MESS_SUCC);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -113,3 +113,6 @@ msgstr "PRE name not found."
|
|||
|
||||
msgid "Template file '%s' not found"
|
||||
msgstr "Template file '%s' not found."
|
||||
|
||||
msgid "An error occurred in updateCommon"
|
||||
msgstr "An error occurred in updateCommon."
|
||||
|
|
|
@ -113,3 +113,6 @@ msgstr "PRE-имя не найдено."
|
|||
|
||||
msgid "Template file '%s' not found"
|
||||
msgstr "Файл шаблона '%s' не найден."
|
||||
|
||||
msgid "An error occurred in updateCommon"
|
||||
msgstr "Возникла ошибка в updateCommon."
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<fieldset>
|
||||
<ol>
|
||||
@foreach ($p->extensions as $ext)
|
||||
<li class="f-extli f-ext-status{{ $ext->status }}">
|
||||
<li id="{{ $ext->id }}" class="f-extli f-ext-status{{ $ext->status }}">
|
||||
<details class="f-extdtl">
|
||||
<summary class="f-extsu">
|
||||
<span>{{ $ext->dispalyName }}</span>
|
||||
|
|
Loading…
Add table
Reference in a new issue