Merge branch 'blog-hashtag-filtr' into 'master'

#1255 п1



See merge request !55
parents 1ed7b60f 2d22dbcb
...@@ -118,6 +118,9 @@ class PostController extends BaseController ...@@ -118,6 +118,9 @@ class PostController extends BaseController
*/ */
public function actionTag($tag) public function actionTag($tag)
{ {
$tagId = $this->getTagIdByName($tag);
$this->actionSetCookie($tagId, true);
$model = PostTag::find()->where(['name' => $tag])->one(); $model = PostTag::find()->where(['name' => $tag])->one();
if(!$model || !$model->posts) if(!$model || !$model->posts)
...@@ -258,18 +261,25 @@ class PostController extends BaseController ...@@ -258,18 +261,25 @@ class PostController extends BaseController
* Запишет или удалит хэштэг в куки * Запишет или удалит хэштэг в куки
* используется на странице блога в списке категорий, для отбора статей по хэштегам * используется на странице блога в списке категорий, для отбора статей по хэштегам
*/ */
public function actionSetCookie($hashtag) public function actionSetCookie($hashtag, $clean = false)
{ {
$session = Yii::$app->session; $session = Yii::$app->session;
if($session->isActive) { if($session->isActive)
{
if($clean)
{
$session->set('blog_hashtag', null);
}
$cookie = $session->get('blog_hashtag'); $cookie = $session->get('blog_hashtag');
$cookie = $cookie ? $cookie : []; $cookie = $cookie ? $cookie : [];
$session->set('blog_hashtag_lifetime', time() + 3600*24); $session->set('blog_hashtag_lifetime', time() + 3600*24);
$key = array_search($hashtag, $cookie); $key = array_search($hashtag, $cookie);
if ($key !== false) { if ($key !== false)
{
unset($cookie[$key]); unset($cookie[$key]);
$cookie_ = []; $cookie_ = [];
foreach ($cookie as $c) foreach ($cookie as $c)
...@@ -279,7 +289,8 @@ class PostController extends BaseController ...@@ -279,7 +289,8 @@ class PostController extends BaseController
$session->set('blog_hashtag', $cookie_); $session->set('blog_hashtag', $cookie_);
return false; return false;
} }
else { else
{
$cookie[] = $hashtag; $cookie[] = $hashtag;
$session->set('blog_hashtag', $cookie); $session->set('blog_hashtag', $cookie);
return true; return true;
...@@ -335,4 +346,16 @@ class PostController extends BaseController ...@@ -335,4 +346,16 @@ class PostController extends BaseController
'count' => (int)$count, 'count' => (int)$count,
]; ];
} }
public function getTagIdByName($tagname)
{
$tag = PostTag::find()->select('id')->where(['name' => $tagname])->one();
if(!$tag)
{
$tag = PostTag::find()->select('id')->where(['translit' => $tagname])->one();
}
return isset($tag->id) ? $tag->id : false;
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment