From 1e24708ca487bda459eb6d8192994d0aad7ad723 Mon Sep 17 00:00:00 2001 From: Mzhelskiy Maxim Date: Thu, 19 Mar 2015 09:40:22 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes/actions/ActionBlog.class.php | 3 +-- .../classes/modules/topic/Topic.class.php | 17 ++++++----------- application/config/config.php | 4 ++-- bootstrap/start.php | 4 +--- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/application/classes/actions/ActionBlog.class.php b/application/classes/actions/ActionBlog.class.php index 6e1e18c0..a7b9b445 100644 --- a/application/classes/actions/ActionBlog.class.php +++ b/application/classes/actions/ActionBlog.class.php @@ -722,11 +722,10 @@ class ActionBlog extends Action protected function EventInternalShowTopicByUrl() { $sTopicUrl = Config::Get('module.topic._router_topic_original_url'); - $sSecurityHash = Config::Get('module.topic._router_topic_security_hash'); /** * Проверяем ключ */ - if ($sSecurityHash != Config::Get('module.security.hash')) { + if (is_null($sTopicUrl)) { return $this->EventErrorDebug(); } /** diff --git a/application/classes/modules/topic/Topic.class.php b/application/classes/modules/topic/Topic.class.php index 665d641c..4d447f8e 100644 --- a/application/classes/modules/topic/Topic.class.php +++ b/application/classes/modules/topic/Topic.class.php @@ -1870,7 +1870,7 @@ class ModuleTopic extends Module '%blog%' => '', '%id%' => $oTopic->getId(), '%title%' => $oTopic->getSlug(), - '%type%' => $oTopic->getType(), + '%type%' => $oTopic->getType(), ); /** @@ -1915,7 +1915,7 @@ class ModuleTopic extends Module /** * Возвращает URL с учетом уникалькости по всем топикам * - * @param string$sSlug + * @param string $sSlug * @param int|null $iSkipTopicId * @return string */ @@ -1923,15 +1923,10 @@ class ModuleTopic extends Module { $iPostfix = 0; do { - $oTopic = $this->GetTopicBySlug($sSlug . ($iPostfix ? '-' . $iPostfix : '')); - if ($oTopic and (is_null($iSkipTopicId) or $iSkipTopicId != $oTopic->getId())) { - $iPostfix++; - $bNeedNext = true; - } else { - $bNeedNext = false; - } - } while ($bNeedNext); + $sUrl = $sSlug . ($iPostfix ? '-' . $iPostfix : ''); + $iPostfix++; + } while ($oTopic = $this->GetTopicBySlug($sUrl) and (is_null($iSkipTopicId) or $iSkipTopicId != $oTopic->getId())); - return $sSlug . ($iPostfix ? '-' . $iPostfix : ''); + return $sUrl; } } \ No newline at end of file diff --git a/application/config/config.php b/application/config/config.php index 2f05a941..337a5c46 100644 --- a/application/config/config.php +++ b/application/config/config.php @@ -166,10 +166,10 @@ $config['module']['topic']['default_preview_size'] = '900x300crop'; // Дефо * * В шаблоне обязательно должен быть %id% или %title%, это необходимо для точной идентификации топика */ -$config['module']['topic']['url'] = '%year%/%month%/%day%/%id%.html'; +$config['module']['topic']['url'] = '%year%/%month%/%day%/%title%.html'; /** * Список регулярных выражений для частей URL топика - * Без необходмых навыков лучше этот параметр не менять + * Без необходимых навыков лучше этот параметр не менять */ $config['module']['topic']['url_preg'] = array( '%year%' => '\d{4}', diff --git a/bootstrap/start.php b/bootstrap/start.php index f03a580f..2ec1f0b0 100644 --- a/bootstrap/start.php +++ b/bootstrap/start.php @@ -67,8 +67,7 @@ $aRouterParams = array( /** * Логика по ЧПУ топиков * Если URL соответствует шаблону ЧПУ топика, перенаправляем обработку на экшен/евент /blog/_show_topic_url/ - * Через свои параметры конфига передаем исходный URL и ключ из конфига 'module.security.hash', ключ нужен для проверки валидности запроса. - * Если ключ верный, то 100% это внутренняя обработка, а не произвольное внешнее обращение к URL + * Через свои параметры конфига передаем исходный URL * Суть обработки _show_topic_url в том, чтобы определить ID топика и корректность его URL, если он некорректен, то произвести его корректировку через внешний редирект на правильный URL * Если удалось определить топик и URL корректный, то происходит внутренний редирект на стандартный евент отображения топика по ID (/blog/12345.html) */ @@ -103,7 +102,6 @@ $aRouterParams = array( * Модуль кеша здесь нельзя использовать, т.к. еще не произошло инициализации ядра */ Config::Set('module.topic._router_topic_original_url', $sUrlRequest); - Config::Set('module.topic._router_topic_security_hash', Config::Get('module.security.hash')); } } )