2018-01-27
This commit is contained in:
parent
68cf3b9a2a
commit
33ec25b824
22 changed files with 655 additions and 115 deletions
|
@ -106,21 +106,24 @@ class Routing
|
|||
}
|
||||
// только админ
|
||||
if ($user->isAdmin) {
|
||||
$r->add('GET', '/admin/statistics/info', 'AdminStatistics:info', 'AdminInfo' );
|
||||
$r->add(['GET', 'POST'], '/admin/options', 'AdminOptions:edit', 'AdminOptions' );
|
||||
$r->add(['GET', 'POST'], '/admin/permissions', 'AdminPermissions:edit', 'AdminPermissions' );
|
||||
$r->add(['GET', 'POST'], '/admin/categories', 'AdminCategories:view', 'AdminCategories' );
|
||||
$r->add(['GET', 'POST'], '/admin/categories/{id:[1-9]\d*}/delete', 'AdminCategories:delete', 'AdminCategoriesDelete');
|
||||
$r->add(['GET', 'POST'], '/admin/forums', 'AdminForums:view', 'AdminForums' );
|
||||
$r->add(['GET', 'POST'], '/admin/forums/new', 'AdminForums:edit', 'AdminForumsNew' );
|
||||
$r->add(['GET', 'POST'], '/admin/forums/{id:[1-9]\d*}/edit', 'AdminForums:edit', 'AdminForumsEdit' );
|
||||
$r->add(['GET', 'POST'], '/admin/forums/{id:[1-9]\d*}/delete', 'AdminForums:delete', 'AdminForumsDelete' );
|
||||
$r->add('GET', '/admin/groups', 'AdminGroups:view', 'AdminGroups' );
|
||||
$r->add('POST', '/admin/groups/default', 'AdminGroups:defaultSet', 'AdminGroupsDefault');
|
||||
$r->add('POST', '/admin/groups/new[/{base:[1-9]\d*}]', 'AdminGroups:edit', 'AdminGroupsNew' );
|
||||
$r->add(['GET', 'POST'], '/admin/groups/{id:[1-9]\d*}/edit', 'AdminGroups:edit', 'AdminGroupsEdit' );
|
||||
$r->add(['GET', 'POST'], '/admin/groups/{id:[1-9]\d*}/delete', 'AdminGroups:delete', 'AdminGroupsDelete' );
|
||||
$r->add(['GET', 'POST'], '/admin/censoring', 'AdminCensoring:edit', 'AdminCensoring' );
|
||||
$r->add('GET', '/admin/statistics/info', 'AdminStatistics:info', 'AdminInfo' );
|
||||
$r->add(['GET', 'POST'], '/admin/options', 'AdminOptions:edit', 'AdminOptions' );
|
||||
$r->add(['GET', 'POST'], '/admin/permissions', 'AdminPermissions:edit', 'AdminPermissions' );
|
||||
$r->add(['GET', 'POST'], '/admin/categories', 'AdminCategories:view', 'AdminCategories' );
|
||||
$r->add(['GET', 'POST'], '/admin/categories/{id:[1-9]\d*}/delete', 'AdminCategories:delete', 'AdminCategoriesDelete');
|
||||
$r->add(['GET', 'POST'], '/admin/forums', 'AdminForums:view', 'AdminForums' );
|
||||
$r->add(['GET', 'POST'], '/admin/forums/new', 'AdminForums:edit', 'AdminForumsNew' );
|
||||
$r->add(['GET', 'POST'], '/admin/forums/{id:[1-9]\d*}/edit', 'AdminForums:edit', 'AdminForumsEdit' );
|
||||
$r->add(['GET', 'POST'], '/admin/forums/{id:[1-9]\d*}/delete', 'AdminForums:delete', 'AdminForumsDelete' );
|
||||
$r->add('GET', '/admin/groups', 'AdminGroups:view', 'AdminGroups' );
|
||||
$r->add('POST', '/admin/groups/default', 'AdminGroups:defaultSet', 'AdminGroupsDefault');
|
||||
$r->add('POST', '/admin/groups/new[/{base:[1-9]\d*}]', 'AdminGroups:edit', 'AdminGroupsNew' );
|
||||
$r->add(['GET', 'POST'], '/admin/groups/{id:[1-9]\d*}/edit', 'AdminGroups:edit', 'AdminGroupsEdit' );
|
||||
$r->add(['GET', 'POST'], '/admin/groups/{id:[1-9]\d*}/delete', 'AdminGroups:delete', 'AdminGroupsDelete' );
|
||||
$r->add(['GET', 'POST'], '/admin/censoring', 'AdminCensoring:edit', 'AdminCensoring' );
|
||||
$r->add(['GET', 'POST'], '/admin/maintenance', 'AdminMaintenance:view', 'AdminMaintenance' );
|
||||
$r->add('POST', '/admin/maintenance/rebuild', 'AdminMaintenance:rebuild', 'AdminMaintenanceRebuild');
|
||||
$r->add('GET', '/admin/maintenance/rebuild/{token}/{clear:[01]}/{limit:[1-9]\d*}/{start:[1-9]\d*}', 'AdminMaintenance:rebuild', 'AdminRebuildIndex' );
|
||||
}
|
||||
|
||||
$uri = $_SERVER['REQUEST_URI'];
|
||||
|
|
|
@ -126,7 +126,7 @@ class Page extends Model
|
|||
protected function maintenance()
|
||||
{
|
||||
if ($this->c->config->o_maintenance == '1' && $this->c->user->isAdmin) {
|
||||
$this->a['fIswev']['w']['maintenance'] = \ForkBB\__('Maintenance mode enabled', $this->c->Router->link('AdminOptions', ['#' => 'Maintenance']));
|
||||
$this->a['fIswev']['w']['maintenance'] = \ForkBB\__('Maintenance mode enabled', $this->c->Router->link('AdminMaintenance'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,13 +9,13 @@ class Admin extends Page
|
|||
{
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
*
|
||||
* @param Container $container
|
||||
*/
|
||||
public function __construct(Container $container)
|
||||
{
|
||||
parent::__construct($container);
|
||||
|
||||
|
||||
$this->aIndex = 'index'; # string Указатель на активный пункт навигации в меню админки
|
||||
$this->fIndex = 'admin';
|
||||
$this->onlinePos = 'admin';
|
||||
|
@ -35,7 +35,7 @@ class Admin extends Page
|
|||
|
||||
/**
|
||||
* Возвращает массив ссылок с описанием для построения навигации админки
|
||||
*
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function aNavigation()
|
||||
|
@ -64,7 +64,7 @@ class Admin extends Page
|
|||
'forums' => [$r->link('AdminForums'), \ForkBB\__('Forums')],
|
||||
'groups' => [$r->link('AdminGroups'), \ForkBB\__('User groups')],
|
||||
'censoring' => [$r->link('AdminCensoring'), \ForkBB\__('Censoring')],
|
||||
'maintenance' => ['admin_maintenance.php', \ForkBB\__('Maintenance')]
|
||||
'maintenance' => [$r->link('AdminMaintenance'), \ForkBB\__('Maintenance')]
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -74,9 +74,9 @@ class Admin extends Page
|
|||
/**
|
||||
* Возвращает title страницы
|
||||
* $this->pageTitle
|
||||
*
|
||||
*
|
||||
* @param array $titles
|
||||
*
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getPageTitle(array $titles = [])
|
||||
|
|
|
@ -63,7 +63,7 @@ class Categories extends Admin
|
|||
'btns' => [
|
||||
'submit' => [
|
||||
'type' => 'submit',
|
||||
'value' => \ForkBB\__('Submit'),
|
||||
'value' => \ForkBB\__('Save changes'),
|
||||
'accesskey' => 's',
|
||||
],
|
||||
],
|
||||
|
|
|
@ -76,7 +76,7 @@ class Censoring extends Admin
|
|||
],
|
||||
],
|
||||
'btns' => [
|
||||
'sva' => [
|
||||
'submit' => [
|
||||
'type' => 'submit',
|
||||
'value' => \ForkBB\__('Save changes'),
|
||||
'accesskey' => 's',
|
||||
|
|
228
app/Models/Pages/Admin/Maintenance.php
Normal file
228
app/Models/Pages/Admin/Maintenance.php
Normal file
|
@ -0,0 +1,228 @@
|
|||
<?php
|
||||
|
||||
namespace ForkBB\Models\Pages\Admin;
|
||||
|
||||
use ForkBB\Core\Validator;
|
||||
use ForkBB\Models\Pages\Admin;
|
||||
use ForkBB\Models\Config\Model as Config;
|
||||
|
||||
class Maintenance extends Admin
|
||||
{
|
||||
/**
|
||||
* Обслуживание
|
||||
*
|
||||
* @param array $args
|
||||
* @param string $method
|
||||
*
|
||||
* @return Page
|
||||
*/
|
||||
public function view(array $args, $method)
|
||||
{
|
||||
$this->c->Lang->load('admin_maintenance');
|
||||
|
||||
$config = clone $this->c->config;
|
||||
|
||||
if ('POST' === $method) {
|
||||
$v = $this->c->Validator->reset()
|
||||
->addValidators([
|
||||
'check_message' => [$this, 'vCheckMessage'],
|
||||
])->addRules([
|
||||
'token' => 'token:AdminMaintenance',
|
||||
'o_maintenance' => 'required|integer|in:0,1',
|
||||
'o_maintenance_message' => 'string:trim|max:65000 bytes|check_message',
|
||||
])->addAliases([
|
||||
])->addArguments([
|
||||
])->addMessages([
|
||||
]);
|
||||
|
||||
if ($v->validation($_POST)) {
|
||||
$this->c->DB->beginTransaction();
|
||||
|
||||
$this->c->config->o_maintenance = $v->o_maintenance;
|
||||
$this->c->config->o_maintenance_message = $v->o_maintenance_message;
|
||||
$this->c->config->save();
|
||||
|
||||
$this->c->DB->commit();
|
||||
|
||||
return $this->c->Redirect->page('AdminMaintenance')->message('Data updated redirect');
|
||||
}
|
||||
|
||||
$this->fIswev = $v->getErrors();
|
||||
}
|
||||
|
||||
$this->formMaintenance = [
|
||||
'action' => $this->c->Router->link('AdminMaintenance'),
|
||||
'hidden' => [
|
||||
'token' => $this->c->Csrf->create('AdminMaintenance'),
|
||||
],
|
||||
'sets' => [
|
||||
[
|
||||
'fields' => [
|
||||
'o_maintenance' => [
|
||||
'type' => 'radio',
|
||||
'value' => $config->o_maintenance,
|
||||
'values' => [1 => \ForkBB\__('Yes'), 0 => \ForkBB\__('No')],
|
||||
'title' => \ForkBB\__('Maintenance mode label'),
|
||||
'info' => \ForkBB\__('Maintenance mode help'),
|
||||
],
|
||||
'o_maintenance_message' => [
|
||||
'type' => 'textarea',
|
||||
'value' => $config->o_maintenance_message,
|
||||
'title' => \ForkBB\__('Maintenance message label'),
|
||||
'info' => \ForkBB\__('Maintenance message help'),
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'btns' => [
|
||||
'submit' => [
|
||||
'type' => 'submit',
|
||||
'value' => \ForkBB\__('Save changes'),
|
||||
'accesskey' => 's',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->formRebuild = [
|
||||
'action' => $this->c->Router->link('AdminMaintenanceRebuild'),
|
||||
'hidden' => [
|
||||
'token' => $this->c->Csrf->create('AdminMaintenanceRebuild'),
|
||||
],
|
||||
'sets' => [
|
||||
[
|
||||
'info' => [
|
||||
'info1' => [
|
||||
'type' => '', //????
|
||||
'value' => \ForkBB\__('Rebuild index info'),
|
||||
'html' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'fields' => [
|
||||
'limit' => [
|
||||
'type' => 'number',
|
||||
'min' => 1,
|
||||
'max' => 9999,
|
||||
'value' => 100,
|
||||
'title' => \ForkBB\__('Posts per cycle label'),
|
||||
'info' => \ForkBB\__('Posts per cycle help'),
|
||||
],
|
||||
'start' => [
|
||||
'type' => 'number',
|
||||
'min' => 1,
|
||||
'max' => 9999999999,
|
||||
'value' => 1,
|
||||
'title' => \ForkBB\__('Starting post label'),
|
||||
'info' => \ForkBB\__('Starting post help'),
|
||||
],
|
||||
'clear' => [
|
||||
'type' => 'checkbox',
|
||||
'value' => '1',
|
||||
'checked' => true,
|
||||
'title' => \ForkBB\__('Empty index label'),
|
||||
'label' => \ForkBB\__('Empty index help'),
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'info' => [
|
||||
'info1' => [
|
||||
'type' => '', //????
|
||||
'value' => \ForkBB\__('Rebuild completed info'),
|
||||
'html' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'btns' => [
|
||||
'rebuild' => [
|
||||
'type' => 'submit',
|
||||
'value' => \ForkBB\__('Rebuild index'),
|
||||
'accesskey' => 'r',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->nameTpl = 'admin/maintenance';
|
||||
$this->aIndex = 'maintenance';
|
||||
$this->titles = \ForkBB\__('Maintenance');
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Подстановка значения по умолчанию
|
||||
*
|
||||
* @param Validator $v
|
||||
* @param string $value
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function vCheckMessage(Validator $v, $value)
|
||||
{
|
||||
if (1 === $v->o_maintenance && 0 === strlen($value)) {
|
||||
$value = \ForkBB\__('Default maintenance message');
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Пересоздание поискового индекса
|
||||
*
|
||||
* @param array $args
|
||||
* @param string $method
|
||||
*
|
||||
* @return Page
|
||||
*/
|
||||
public function rebuild(array $args, $method)
|
||||
{
|
||||
$this->c->Lang->load('admin_maintenance');
|
||||
|
||||
$v = $this->c->Validator->reset()
|
||||
->addValidators([
|
||||
])->addRules([
|
||||
'token' => 'token:' . ('POST' === $method ? 'AdminMaintenanceRebuild' : 'AdminRebuildIndex'),
|
||||
'limit' => 'required|integer|min:1|max:9999',
|
||||
'start' => 'required|integer|min:1|max:9999999999',
|
||||
'clear' => 'checkbox',
|
||||
])->addAliases([
|
||||
])->addArguments([
|
||||
'token' => $args,
|
||||
])->addMessages([
|
||||
]);
|
||||
|
||||
if (('POST' === $method && ! $v->validation($_POST))
|
||||
|| ('POST' !== $method && ! $v->validation($args))
|
||||
) {
|
||||
$this->fIswev = $v->getErrors();
|
||||
return $this->view([], 'GET');
|
||||
}
|
||||
|
||||
$this->c->DB->beginTransaction();
|
||||
|
||||
@set_time_limit(0);
|
||||
|
||||
if ('POST' === $method && $v->clear) {
|
||||
$this->c->search->truncateIndex();
|
||||
}
|
||||
|
||||
$last = $this->c->posts->rebuildIndex($v->start, $v->limit, $v->clear ? 'add' : 'edit');
|
||||
|
||||
$this->c->DB->commit();
|
||||
|
||||
if ($last) {
|
||||
$args = [
|
||||
'token' => '',
|
||||
'limit' => $v->limit,
|
||||
'start' => $last + 1,
|
||||
'clear' => $v->clear ? '1' : '0',
|
||||
];
|
||||
$args['token'] = $this->c->Csrf->create('AdminRebuildIndex', $args);
|
||||
|
||||
return $this->c->Redirect->page('AdminRebuildIndex', $args)->message(\ForkBB\__('Processed posts', $v->start, $last));
|
||||
} else {
|
||||
return $this->c->Redirect->page('AdminMaintenance')->message('Rebuilding index end');
|
||||
}
|
||||
}
|
||||
}
|
|
@ -86,8 +86,6 @@ class Options extends Admin
|
|||
'o_default_email_setting' => 'required|integer|in:0,1,2',
|
||||
'o_announcement' => 'required|integer|in:0,1|check_empty:o_announcement_message',
|
||||
'o_announcement_message' => 'string:trim|max:65000 bytes',
|
||||
'o_maintenance' => 'required|integer|in:0,1|check_empty:o_maintenance_message',
|
||||
'o_maintenance_message' => 'string:trim|max:65000 bytes',
|
||||
])->addAliases([
|
||||
])->addArguments([
|
||||
])->addMessages([
|
||||
|
@ -109,11 +107,15 @@ class Options extends Admin
|
|||
}
|
||||
|
||||
if ($valid) {
|
||||
$this->c->DB->beginTransaction();
|
||||
|
||||
$config->save();
|
||||
|
||||
|
||||
$this->c->DB->commit();
|
||||
|
||||
return $this->c->Redirect->page('AdminOptions')->message('Options updated redirect');
|
||||
}
|
||||
|
||||
|
||||
$this->fIswev = $v->getErrors();
|
||||
}
|
||||
|
||||
|
@ -126,13 +128,13 @@ class Options extends Admin
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Дополнительная проверка времени online
|
||||
*
|
||||
*
|
||||
* @param Validator $v
|
||||
* @param int $timeout
|
||||
*
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function vCheckTimeout(Validator $v, $timeout)
|
||||
|
@ -145,10 +147,10 @@ class Options extends Admin
|
|||
|
||||
/**
|
||||
* Дополнительная проверка каталога аватарок
|
||||
*
|
||||
*
|
||||
* @param Validator $v
|
||||
* @param string $dir
|
||||
*
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function vCheckDir(Validator $v, $dir)
|
||||
|
@ -160,11 +162,11 @@ class Options extends Admin
|
|||
|
||||
/**
|
||||
* Дополнительная проверка на пустоту другого поля
|
||||
*
|
||||
*
|
||||
* @param Validator $v
|
||||
* @param int $value
|
||||
* @param string $attr
|
||||
*
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function vCheckEmpty(Validator $v, $value, $attr)
|
||||
|
@ -179,7 +181,7 @@ class Options extends Admin
|
|||
* Формирует данные для формы
|
||||
*
|
||||
* @param Config $config
|
||||
*
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function viewForm(Config $config)
|
||||
|
@ -298,7 +300,7 @@ class Options extends Admin
|
|||
$timestamp = time() + ($this->c->user->timezone + $this->c->user->dst) * 3600;
|
||||
$time = \ForkBB\dt($timestamp, false, $config->o_date_format, $config->o_time_format, true, true);
|
||||
$date = \ForkBB\dt($timestamp, true, $config->o_date_format, $config->o_time_format, false, true);
|
||||
|
||||
|
||||
$form['sets'][] = [
|
||||
'legend' => \ForkBB\__('Timeouts subhead'),
|
||||
'fields' => [
|
||||
|
@ -503,7 +505,7 @@ class Options extends Admin
|
|||
'value' => $config->o_feed_typet,
|
||||
'values' => [
|
||||
0 => \ForkBB\__('No feeds'),
|
||||
1 => \ForkBB\__('RSS'),
|
||||
1 => \ForkBB\__('RSS'),
|
||||
2 => \ForkBB\__('Atom'),
|
||||
],
|
||||
'title' => \ForkBB\__('Default feed label'),
|
||||
|
@ -534,7 +536,7 @@ class Options extends Admin
|
|||
'value' => $config->o_report_method,
|
||||
'values' => [
|
||||
0 => \ForkBB\__('Internal'),
|
||||
1 => \ForkBB\__('By e-mail'),
|
||||
1 => \ForkBB\__('By e-mail'),
|
||||
2 => \ForkBB\__('Both'),
|
||||
],
|
||||
'title' => \ForkBB\__('Reporting method label'),
|
||||
|
@ -707,7 +709,7 @@ class Options extends Admin
|
|||
'value' => $config->o_default_email_setting,
|
||||
'values' => [
|
||||
0 => \ForkBB\__('Display e-mail label'),
|
||||
1 => \ForkBB\__('Hide allow form label'),
|
||||
1 => \ForkBB\__('Hide allow form label'),
|
||||
2 => \ForkBB\__('Hide both label'),
|
||||
],
|
||||
'title' => \ForkBB\__('E-mail default label'),
|
||||
|
@ -736,27 +738,6 @@ class Options extends Admin
|
|||
],
|
||||
];
|
||||
|
||||
$form['sets'][] = [
|
||||
'id' => 'Maintenance',
|
||||
'legend' => \ForkBB\__('Maintenance subhead'),
|
||||
'fields' => [
|
||||
'o_maintenance' => [
|
||||
'type' => 'radio',
|
||||
'value' => $config->o_maintenance,
|
||||
'values' => $yn,
|
||||
'title' => \ForkBB\__('Maintenance mode label'),
|
||||
'info' => \ForkBB\__('Maintenance mode help'),
|
||||
],
|
||||
'o_maintenance_message' => [
|
||||
'type' => 'textarea',
|
||||
'value' => $config->o_maintenance_message,
|
||||
'title' => \ForkBB\__('Maintenance message label'),
|
||||
'info' => \ForkBB\__('Maintenance message help'),
|
||||
],
|
||||
|
||||
],
|
||||
];
|
||||
|
||||
return $form;
|
||||
}
|
||||
}
|
||||
|
|
61
app/Models/Post/RebuildIndex.php
Normal file
61
app/Models/Post/RebuildIndex.php
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
|
||||
namespace ForkBB\Models\Post;
|
||||
|
||||
use ForkBB\Models\Action;
|
||||
use ForkBB\Models\Topic\Model as Topic;
|
||||
|
||||
class RebuildIndex extends Action
|
||||
{
|
||||
/**
|
||||
* Перестройка поискового индекса
|
||||
*
|
||||
* @param int $start
|
||||
* @param int $limit
|
||||
* @param string $mode
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function rebuildIndex($start, $limit, $mode)
|
||||
{
|
||||
$vars = [
|
||||
':start' => $start,
|
||||
':limit' => $limit,
|
||||
];
|
||||
|
||||
$sql = 'SELECT p.id, p.message, t.id as topic_id, t.subject, t.first_post_id
|
||||
FROM ::posts AS p
|
||||
INNER JOIN ::topics AS t ON t.id=p.topic_id
|
||||
WHERE p.id>=?i:start
|
||||
ORDER BY p.id ASC
|
||||
LIMIT ?i:limit';
|
||||
|
||||
$stmt = $this->c->DB->query($sql, $vars);
|
||||
$number = 0;
|
||||
|
||||
while ($row = $stmt->fetch()) {
|
||||
$number = $row['id'];
|
||||
|
||||
$post = $this->manager->create([
|
||||
'id' => $row['id'],
|
||||
'message' => $row['message'],
|
||||
'topic_id' => $row['topic_id'],
|
||||
]);
|
||||
|
||||
if (! $this->c->topics->get($row['topic_id']) instanceof Topic) {
|
||||
$topic = $this->c->topics->create([
|
||||
'id' => $row['topic_id'],
|
||||
'subject' => $row['subject'],
|
||||
'first_post_id' => $row['first_post_id'],
|
||||
]);
|
||||
$this->c->topics->set($topic->id, $topic);
|
||||
}
|
||||
|
||||
//????????????????????????????????????
|
||||
$this->c->Parser->parseMessage($row['message']);
|
||||
$this->c->search->index($post, $mode);
|
||||
}
|
||||
|
||||
return $number;
|
||||
}
|
||||
}
|
23
app/Models/Search/TruncateIndex.php
Normal file
23
app/Models/Search/TruncateIndex.php
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
namespace ForkBB\Models\Search;
|
||||
|
||||
use ForkBB\Models\Method;
|
||||
use ForkBB\Models\Forum\Model as Forum;
|
||||
use ForkBB\Models\Post\Model as Post;
|
||||
use PDO;
|
||||
use InvalidArgumentException;
|
||||
use RuntimeException;
|
||||
|
||||
class TruncateIndex extends Method
|
||||
{
|
||||
/**
|
||||
* Очистка поискового индекса
|
||||
*/
|
||||
public function truncateIndex()
|
||||
{
|
||||
$this->c->DB->truncateTable('search_cache');
|
||||
$this->c->DB->truncateTable('search_matches');
|
||||
$this->c->DB->truncateTable('search_words');
|
||||
}
|
||||
}
|
|
@ -10,9 +10,9 @@ class Manager extends ManagerModel
|
|||
{
|
||||
/**
|
||||
* Создает новую модель темы
|
||||
*
|
||||
*
|
||||
* @param array $attrs
|
||||
*
|
||||
*
|
||||
* @return Topic
|
||||
*/
|
||||
public function create(array $attrs = [])
|
||||
|
@ -43,7 +43,7 @@ class Manager extends ManagerModel
|
|||
* Обновляет тему в БД
|
||||
*
|
||||
* @param Topic $topic
|
||||
*
|
||||
*
|
||||
* @return Topic
|
||||
*/
|
||||
public function update(Topic $topic)
|
||||
|
@ -55,7 +55,7 @@ class Manager extends ManagerModel
|
|||
* Добавляет новую тему в БД
|
||||
*
|
||||
* @param Topic $topic
|
||||
*
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function insert(Topic $topic)
|
||||
|
|
|
@ -102,11 +102,11 @@ msgstr "Action"
|
|||
msgid "None"
|
||||
msgstr "None"
|
||||
|
||||
msgid "Maintenance mode"
|
||||
msgstr "maintenance mode"
|
||||
|
||||
msgid "No plugin message"
|
||||
msgstr "There is no plugin called %s in the plugin directory."
|
||||
|
||||
msgid "Plugin failed message"
|
||||
msgstr "Loading of the plugin - <strong>%s</strong> - failed."
|
||||
|
||||
msgid "Data updated redirect"
|
||||
msgstr "Data updated. Redirecting …"
|
||||
|
|
|
@ -15,9 +15,6 @@ msgstr ""
|
|||
msgid "Must enter word message"
|
||||
msgstr "You must enter a word to censor."
|
||||
|
||||
msgid "Data updated redirect"
|
||||
msgstr "Data updated. Redirecting …"
|
||||
|
||||
msgid "Word added redirect"
|
||||
msgstr "Censor word added. Redirecting …"
|
||||
|
||||
|
|
133
app/lang/English/admin_maintenance.po
Normal file
133
app/lang/English/admin_maintenance.po
Normal file
|
@ -0,0 +1,133 @@
|
|||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Project-Id-Version: ForkBB\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: ForkBB <mio.visman@yandex.ru>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: en\n"
|
||||
|
||||
msgid "Maintenance head"
|
||||
msgstr "Forum maintenance"
|
||||
|
||||
msgid "Rebuild index head"
|
||||
msgstr "Rebuild search index"
|
||||
|
||||
msgid "Rebuild index info"
|
||||
msgstr "If you\'ve added, edited or removed posts manually in the database or if you\'re having problems searching, you should rebuild the search index. For best performance, you should put the forum in maintenance mode (see above) during rebuilding. <b>Rebuilding the search index can take a long time and will increase server load during the rebuild process!</b>"
|
||||
|
||||
msgid "Posts per cycle label"
|
||||
msgstr "Posts per cycle"
|
||||
|
||||
msgid "Posts per cycle help"
|
||||
msgstr "The number of posts to process per pageview. E.g. if you were to enter 300, three hundred posts would be processed and then the page would refresh. This is to prevent the script from timing out during the rebuild process."
|
||||
|
||||
msgid "Starting post label"
|
||||
msgstr "Starting post ID"
|
||||
|
||||
msgid "Starting post help"
|
||||
msgstr "The post ID to start rebuilding at. The default value is the first available ID in the database. Normally you wouldn\'t want to change this."
|
||||
|
||||
msgid "Empty index label"
|
||||
msgstr "Empty index"
|
||||
|
||||
msgid "Empty index help"
|
||||
msgstr "Select this if you want the search index to be emptied before rebuilding (see below)."
|
||||
|
||||
msgid "Rebuild completed info"
|
||||
msgstr "Once the process has completed, you will be redirected back to this page. If you are forced to abort the rebuild process, make a note of the last processed post ID and enter that ID+1 in "Starting post ID" when/if you want to continue ("Empty index" must not be selected)."
|
||||
|
||||
msgid "Rebuild index"
|
||||
msgstr "Rebuild index"
|
||||
|
||||
msgid "Rebuilding search index"
|
||||
msgstr "Rebuilding search index"
|
||||
|
||||
msgid "Rebuilding index info"
|
||||
msgstr "Rebuilding index. This might be a good time to put on some coffee :-)"
|
||||
|
||||
msgid "Rebuilding index end"
|
||||
msgstr "Rebuilding index is over. Redirecting …"
|
||||
|
||||
msgid "Processed posts"
|
||||
msgstr "Processed messages from <b>%1$s</b> to <b>%2$s</b> …"
|
||||
|
||||
msgid "Click here"
|
||||
msgstr "Click here"
|
||||
|
||||
msgid "Javascript redirect failed"
|
||||
msgstr "Automatic redirect unsuccessful. %s to continue …"
|
||||
|
||||
msgid "Posts must be integer message"
|
||||
msgstr "Posts per cycle must be a positive integer value."
|
||||
|
||||
msgid "Days must be integer message"
|
||||
msgstr "Days to prune must be a positive integer value."
|
||||
|
||||
msgid "No old topics message"
|
||||
msgstr "There are no topics that are %s days old. Please decrease the value of "Days old" and try again."
|
||||
|
||||
msgid "Posts pruned redirect"
|
||||
msgstr "Posts pruned. Redirecting …"
|
||||
|
||||
msgid "Prune head"
|
||||
msgstr "Prune"
|
||||
|
||||
msgid "Prune subhead"
|
||||
msgstr "Prune old posts"
|
||||
|
||||
msgid "Days old label"
|
||||
msgstr "Days old"
|
||||
|
||||
msgid "Days old help"
|
||||
msgstr "The number of days "old" a topic must be to be pruned. E.g. if you were to enter 30, every topic that didn\'t contain a post dated less than 30 days old would be deleted."
|
||||
|
||||
msgid "Prune sticky label"
|
||||
msgstr "Prune sticky topics"
|
||||
|
||||
msgid "Prune sticky help"
|
||||
msgstr "When enabled, sticky topics will also be pruned."
|
||||
|
||||
msgid "Prune from label"
|
||||
msgstr "Prune from forum"
|
||||
|
||||
msgid "All forums"
|
||||
msgstr "All forums"
|
||||
|
||||
msgid "Prune from help"
|
||||
msgstr "The forum from which you want to prune posts."
|
||||
|
||||
msgid "Prune info"
|
||||
msgstr "Use this feature with caution. <b>Pruned posts can never be recovered.</b> For best performance, you should put the forum in %s during pruning."
|
||||
|
||||
msgid "Confirm prune subhead"
|
||||
msgstr "Confirm prune posts"
|
||||
|
||||
msgid "Confirm prune info"
|
||||
msgstr "Are you sure that you want to prune all topics older than %s days from %s (%s topics)."
|
||||
|
||||
msgid "Confirm prune warn"
|
||||
msgstr "WARNING! Pruning posts deletes them permanently."
|
||||
|
||||
msgid "Maintenance subhead"
|
||||
msgstr "Maintenance"
|
||||
|
||||
msgid "Maintenance mode label"
|
||||
msgstr "Enable"
|
||||
|
||||
msgid "Maintenance mode help"
|
||||
msgstr "When enabled, the board will only be available to administrators. This should be used if the board needs to be taken down temporarily for maintenance. <b>WARNING! Do not log out when the board is in maintenance mode.</b> You will not be able to login again."
|
||||
|
||||
msgid "Maintenance message label"
|
||||
msgstr "Maintenance message"
|
||||
|
||||
msgid "Maintenance message help"
|
||||
msgstr "The message that will be displayed to users when the board is in maintenance mode. This text will not be parsed like regular posts and thus may contain HTML."
|
||||
|
||||
msgid "Default maintenance message"
|
||||
msgstr "The forums are temporarily down for maintenance. Please try again in a few minutes."
|
|
@ -27,9 +27,6 @@ msgstr "Enter your announcement here."
|
|||
msgid "Enter rules here"
|
||||
msgstr "Enter your rules here."
|
||||
|
||||
msgid "Default maintenance message"
|
||||
msgstr "The forums are temporarily down for maintenance. Please try again in a few minutes."
|
||||
|
||||
msgid "Timeout error message"
|
||||
msgstr "The value of \"Timeout online\" must be smaller than the value of \"Timeout visit\"."
|
||||
|
||||
|
@ -554,18 +551,3 @@ msgstr "Announcement message"
|
|||
|
||||
msgid "Announcement message help"
|
||||
msgstr "This text will not be parsed like regular posts and thus may contain HTML."
|
||||
|
||||
msgid "Maintenance subhead"
|
||||
msgstr "Maintenance"
|
||||
|
||||
msgid "Maintenance mode label"
|
||||
msgstr "Maintenance mode"
|
||||
|
||||
msgid "Maintenance mode help"
|
||||
msgstr "When enabled, the board will only be available to administrators. This should be used if the board needs to be taken down temporarily for maintenance. <b>WARNING! Do not log out when the board is in maintenance mode.</b> You will not be able to login again."
|
||||
|
||||
msgid "Maintenance message label"
|
||||
msgstr "Maintenance message"
|
||||
|
||||
msgid "Maintenance message help"
|
||||
msgstr "The message that will be displayed to users when the board is in maintenance mode. This text will not be parsed like regular posts and thus may contain HTML."
|
||||
|
|
|
@ -184,7 +184,7 @@ msgid "Rules "
|
|||
msgstr "Enter your rules here"
|
||||
|
||||
msgid "Maintenance message "
|
||||
msgstr "The forums are temporarily down for maintenance. Come back later."
|
||||
msgstr "The forums are temporarily down for maintenance. Please try again in a few minutes."
|
||||
|
||||
msgid "Test post"
|
||||
msgstr "Test topic"
|
||||
|
|
|
@ -102,11 +102,11 @@ msgstr "Действие"
|
|||
msgid "None"
|
||||
msgstr "Пусто"
|
||||
|
||||
msgid "Maintenance mode"
|
||||
msgstr "режим обслуживания"
|
||||
|
||||
msgid "No plugin message"
|
||||
msgstr "Нет плагина с именем %s в директории плагинов."
|
||||
|
||||
msgid "Plugin failed message"
|
||||
msgstr "Загрузить плагин <strong>%s</strong> не удалось."
|
||||
|
||||
msgid "Data updated redirect"
|
||||
msgstr "Данные изменены. Переадресация …"
|
||||
|
|
|
@ -15,9 +15,6 @@ msgstr ""
|
|||
msgid "Must enter word message"
|
||||
msgstr "Необходимо ввести слово, которое подлежит цензуре."
|
||||
|
||||
msgid "Data updated redirect"
|
||||
msgstr "Данные изменены. Переадресация …"
|
||||
|
||||
msgid "Word added redirect"
|
||||
msgstr "Слово добавлено. Переадресация …"
|
||||
|
||||
|
|
133
app/lang/Russian/admin_maintenance.po
Normal file
133
app/lang/Russian/admin_maintenance.po
Normal file
|
@ -0,0 +1,133 @@
|
|||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Project-Id-Version: ForkBB\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: ForkBB <mio.visman@yandex.ru>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
|
||||
msgid "Maintenance head"
|
||||
msgstr "Обслуживание форума"
|
||||
|
||||
msgid "Rebuild index head"
|
||||
msgstr "Перестройка поискового индекса"
|
||||
|
||||
msgid "Rebuild index info"
|
||||
msgstr "Если вы добавляли, правили или удаляли сообщения вручную в базе данных или если наблюдаете проблемы с поиском, вы можете перестроить поисковый индекс. Для большей производительности включите режим обслуживания (см. выше) на время перестройки. <b>Перестройка индекса может занять продолжительное время и увеличивает загрузку сервера!</b>"
|
||||
|
||||
msgid "Posts per cycle label"
|
||||
msgstr "Сообщений за цикл"
|
||||
|
||||
msgid "Posts per cycle help"
|
||||
msgstr "Количество индексируемых сообщений на одной странице. Т.е. если вы введёте 300, триста сообщений будут проиндексированы и затем страница обновится. Это сделано для того, чтобы скрипт не превысил допустимое время на выполнение."
|
||||
|
||||
msgid "Starting post label"
|
||||
msgstr "ID первого сообщения"
|
||||
|
||||
msgid "Starting post help"
|
||||
msgstr "ID сообщения, с которого начнется перестройка. По умолчанию оно равно ID первого сообщения в базе. Как правило, вам не нужно трогать это поле."
|
||||
|
||||
msgid "Empty index label"
|
||||
msgstr "Очищать индекс"
|
||||
|
||||
msgid "Empty index help"
|
||||
msgstr "Включите эту опцию, если надо очистить индекс перед переиндексацией (см. ниже)."
|
||||
|
||||
msgid "Rebuild completed info"
|
||||
msgstr "Когда процесс завершится, вы будете перенаправлены снова на эту страницу. Если захотите прервать процесс, запишите значение ID, которое получилось в конце страницы и введите ID+1 в "ID первого сообщения" когда/если захотите продолжить (галку "Очищать индекс" нужно будет снять)."
|
||||
|
||||
msgid "Rebuild index"
|
||||
msgstr "Перестроить индекс"
|
||||
|
||||
msgid "Rebuilding search index"
|
||||
msgstr "Перестройка поискового индекса"
|
||||
|
||||
msgid "Rebuilding index info"
|
||||
msgstr "Перестройка индекса. Подходящее время чтобы попить кофе :-)"
|
||||
|
||||
msgid "Rebuilding index end"
|
||||
msgstr "Перестройка индекса закончена. Переадресация …"
|
||||
|
||||
msgid "Processed posts"
|
||||
msgstr "Обработаны сообщения с <b>%1$s</b> по <b>%2$s</b> …"
|
||||
|
||||
msgid "Click here"
|
||||
msgstr "Кликните здесь"
|
||||
|
||||
msgid "Javascript redirect failed"
|
||||
msgstr "Автоматическая переадресация выключена. %s чтобы продолжить …"
|
||||
|
||||
msgid "Posts must be integer message"
|
||||
msgstr "Число сообщений за цикл должно быть положительным целым числом."
|
||||
|
||||
msgid "Days must be integer message"
|
||||
msgstr "Число дней должно быть положительным целым числом."
|
||||
|
||||
msgid "No old topics message"
|
||||
msgstr "Нет тем старше %s дней. Пожалуйста, уменьшите значение "Дней" и попробуйте снова."
|
||||
|
||||
msgid "Posts pruned redirect"
|
||||
msgstr "Сообщения очищены. Переадресация..."
|
||||
|
||||
msgid "Prune head"
|
||||
msgstr "Очистка"
|
||||
|
||||
msgid "Prune subhead"
|
||||
msgstr "Удаление старых сообщений"
|
||||
|
||||
msgid "Days old label"
|
||||
msgstr "Дней"
|
||||
|
||||
msgid "Days old help"
|
||||
msgstr "Минимальный "возраст" сообщений, которые подлежат удалению. Т.е. если вы ввели 30, все темы, в которых за 30 последних дней не было ни одного сообщения, будут удалены."
|
||||
|
||||
msgid "Prune sticky label"
|
||||
msgstr "Удалять важные темы"
|
||||
|
||||
msgid "Prune sticky help"
|
||||
msgstr "Если включено, важные темы тоже будут удаляться."
|
||||
|
||||
msgid "Prune from label"
|
||||
msgstr "Что чистить"
|
||||
|
||||
msgid "All forums"
|
||||
msgstr "Все форумы"
|
||||
|
||||
msgid "Prune from help"
|
||||
msgstr "Форум, который вы хотите почистить."
|
||||
|
||||
msgid "Prune info"
|
||||
msgstr "Пользуйтесь с осторожностью. <b>Удалённые сообщения невозможно восстановить.</b> Для большей производительности желательно включить %s на время очистки."
|
||||
|
||||
msgid "Confirm prune subhead"
|
||||
msgstr "Подтверждение удаления"
|
||||
|
||||
msgid "Confirm prune info"
|
||||
msgstr "Вы действительно хотите очистить все темы старше %s дней из %s (это %s тем)."
|
||||
|
||||
msgid "Confirm prune warn"
|
||||
msgstr "ВНИМАНИЕ! Очистка удаляет сообщения безвозвратно."
|
||||
|
||||
msgid "Maintenance subhead"
|
||||
msgstr "Обслуживание"
|
||||
|
||||
msgid "Maintenance mode label"
|
||||
msgstr "Включить"
|
||||
|
||||
msgid "Maintenance mode help"
|
||||
msgstr "Если включено, форум будет доступен только для Администраторов. Может использоваться, если надо временно выключить сайт для проведения каких-то работ. <b>ВНИМАНИЕ! Не выходите с форума пока действует режим обслуживания.</b> Вы не сможете войти обратно."
|
||||
|
||||
msgid "Maintenance message label"
|
||||
msgstr "Текст сообщения"
|
||||
|
||||
msgid "Maintenance message help"
|
||||
msgstr "Сообщение, которое будет показываться посетителям форума пока действует режим обслуживания. Текст может содержать HTML."
|
||||
|
||||
msgid "Default maintenance message"
|
||||
msgstr "Форум временно закрыт на обслуживание. Пожалуйста, попробуйте зайти через несколько минут."
|
|
@ -27,9 +27,6 @@ msgstr "Введите сюда своё объявление."
|
|||
msgid "Enter rules here"
|
||||
msgstr "Введите сюда правила форума."
|
||||
|
||||
msgid "Default maintenance message"
|
||||
msgstr "Форум временно закрыт на обслуживание. Пожалуйста, попробуйте зайти через несколько минут."
|
||||
|
||||
msgid "Timeout error message"
|
||||
msgstr "Значение \"Таймаут online\" должно быть меньше чем \"Таймаут визита\"."
|
||||
|
||||
|
@ -554,18 +551,3 @@ msgstr "Текст объявления"
|
|||
|
||||
msgid "Announcement message help"
|
||||
msgstr "Этот текст может содержать HTML."
|
||||
|
||||
msgid "Maintenance subhead"
|
||||
msgstr "Обслуживание"
|
||||
|
||||
msgid "Maintenance mode label"
|
||||
msgstr "Режим обслуживания"
|
||||
|
||||
msgid "Maintenance mode help"
|
||||
msgstr "Если включено, форум будет доступен только для Администраторов. Может использоваться, если надо временно выключить сайт для проведения каких-то работ. <b>ВНИМАНИЕ! Не выходите с форума пока действует режим обслуживания.</b> Вы не сможете войти обратно."
|
||||
|
||||
msgid "Maintenance message label"
|
||||
msgstr "Текст сообщения"
|
||||
|
||||
msgid "Maintenance message help"
|
||||
msgstr "Сообщение, которое будет показываться посетителям форума пока действует режим обслуживания. Текст может содержать HTML."
|
||||
|
|
|
@ -181,7 +181,7 @@ msgid "Rules "
|
|||
msgstr "Тут можно указать правила форума"
|
||||
|
||||
msgid "Maintenance message "
|
||||
msgstr "Форум временно переведен в режим обслуживания. Зайдите позже."
|
||||
msgstr "Форум временно закрыт на обслуживание. Пожалуйста, попробуйте зайти через несколько минут."
|
||||
|
||||
msgid "Test post"
|
||||
msgstr "Тестовая тема"
|
||||
|
|
17
app/templates/admin/maintenance.tpl
Normal file
17
app/templates/admin/maintenance.tpl
Normal file
|
@ -0,0 +1,17 @@
|
|||
@extends ('layouts/admin')
|
||||
<section class="f-admin f-maintenance-form">
|
||||
<h2>{!! __('Maintenance head') !!}</h2>
|
||||
<div class="f-fdiv">
|
||||
@if ($form = $p->formMaintenance)
|
||||
@include ('layouts/form')
|
||||
@endif
|
||||
</div>
|
||||
</section>
|
||||
<section class="f-admin f-rebuildindex-form">
|
||||
<h2>{!! __('Rebuild index head') !!}</h2>
|
||||
<div class="f-fdiv">
|
||||
@if ($form = $p->formRebuild)
|
||||
@include ('layouts/form')
|
||||
@endif
|
||||
</div>
|
||||
</section>
|
|
@ -479,6 +479,9 @@ select {
|
|||
.f-fdiv .f-child6 {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.f-fdiv .f-child6 {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue