From 285fca189f0277cee2b7b4a6d176a31db2d8e053 Mon Sep 17 00:00:00 2001 From: Mzhelskiy Maxim Date: Mon, 23 Nov 2015 17:05:14 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D0=B3=D0=BE=D0=B2=20#725?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/Favourite.entity.class.php | 23 +++++++++++++++++++ .../favourite/entity/Tag.entity.class.php | 1 + .../mapper/Favourite.mapper.class.php | 1 + .../topic/entity/Topic.entity.class.php | 23 +++++++++++++++++++ .../frontend/components/topic/topic.tpl | 8 +++---- framework | 2 +- 6 files changed, 53 insertions(+), 5 deletions(-) diff --git a/application/classes/modules/favourite/entity/Favourite.entity.class.php b/application/classes/modules/favourite/entity/Favourite.entity.class.php index 68c09c71..795282be 100644 --- a/application/classes/modules/favourite/entity/Favourite.entity.class.php +++ b/application/classes/modules/favourite/entity/Favourite.entity.class.php @@ -80,6 +80,29 @@ class ModuleFavourite_EntityFavourite extends Entity return array(); } + /** + * Возвращает массив тегов в виде объектов + * + * @return array + */ + public function getTagsObjects() + { + $aReturn = array(); + if ($aTags = $this->getTagsArray()) { + foreach ($aTags as $sTag) { + if ($sTag) { + $aReturn[] = Engine::GetEntity('ModuleFavourite_EntityTag', array( + 'target_type' => $this->getTargetType(), + 'target_id' => $this->getTargetId(), + 'user_id' => $this->getUserId(), + 'text' => $sTag, + )); + } + } + } + return $aReturn; + } + /** * Устанавливает ID владельца * diff --git a/application/classes/modules/favourite/entity/Tag.entity.class.php b/application/classes/modules/favourite/entity/Tag.entity.class.php index 7222be4d..1a2be811 100644 --- a/application/classes/modules/favourite/entity/Tag.entity.class.php +++ b/application/classes/modules/favourite/entity/Tag.entity.class.php @@ -29,6 +29,7 @@ class ModuleFavourite_EntityTag extends Entity { /** * Возвращает URL страницы тега + * todo: на странице списка топиков получение пользователя может стать узким местом * * @return string */ diff --git a/application/classes/modules/favourite/mapper/Favourite.mapper.class.php b/application/classes/modules/favourite/mapper/Favourite.mapper.class.php index 1e4cc930..ef3e87aa 100644 --- a/application/classes/modules/favourite/mapper/Favourite.mapper.class.php +++ b/application/classes/modules/favourite/mapper/Favourite.mapper.class.php @@ -506,6 +506,7 @@ class ModuleFavourite_MapperFavourite extends Mapper { $sql = "SELECT text, + user_id, count(text) as count FROM " . Config::Get('db.table.favourite_tag') . " diff --git a/application/classes/modules/topic/entity/Topic.entity.class.php b/application/classes/modules/topic/entity/Topic.entity.class.php index 5b709a2f..c8258fa9 100644 --- a/application/classes/modules/topic/entity/Topic.entity.class.php +++ b/application/classes/modules/topic/entity/Topic.entity.class.php @@ -613,6 +613,29 @@ class ModuleTopic_EntityTopic extends Entity return array(); } + /** + * Возвращает массив тегов в виде объектов + * + * @return array + */ + public function getTagsObjects() + { + $aReturn = array(); + if ($aTags = $this->getTagsArray()) { + foreach ($aTags as $sTag) { + if ($sTag) { + $aReturn[] = Engine::GetEntity('ModuleTopic_EntityTopicTag', array( + 'topic_id' => $this->getId(), + 'user_id' => $this->getUserId(), + 'blog_id' => $this->getBlogId(), + 'topic_tag_text' => $sTag, + )); + } + } + } + return $aReturn; + } + /** * Возвращает количество новых комментариев в топике для текущего пользователя * diff --git a/application/frontend/components/topic/topic.tpl b/application/frontend/components/topic/topic.tpl index bbb43c10..9ce00d7b 100644 --- a/application/frontend/components/topic/topic.tpl +++ b/application/frontend/components/topic/topic.tpl @@ -140,13 +140,13 @@ {$favourite = $topic->getFavourite()} {if ! $isPreview} - {*component 'tags-personal' + {component 'tags-personal' classes = 'js-tags-favourite' - tags = $topic->getTags() - tagsPersonal = ( $favourite ) ? $favourite->getTags() : [] + tags = $topic->getTagsObjects() + tagsPersonal = ( $favourite ) ? $favourite->getTagsObjects() : [] isEditable = ! $favourite targetType = 'topic' - targetId = $topic->getId()*} + targetId = $topic->getId()} {/if} {/if} diff --git a/framework b/framework index 30d7b8fa..09ee27d0 160000 --- a/framework +++ b/framework @@ -1 +1 @@ -Subproject commit 30d7b8fa02e20c4869dce81be41117ddd1333ce2 +Subproject commit 09ee27d08208a2cb80ac95b70db1115178e17d73