diff --git a/Web/Models/Entities/Postable.php b/Web/Models/Entities/Postable.php index b5749819..c3585dc3 100644 --- a/Web/Models/Entities/Postable.php +++ b/Web/Models/Entities/Postable.php @@ -73,10 +73,10 @@ abstract class Postable extends Attachable { return (new Comments)->getCommentsCountByTarget($this); } - - function getLastComments() + + function getLastComments(int $count): \Traversable { - return (new Comments)->getLastCommentsByTarget($this); + return (new Comments)->getLastCommentsByTarget($this, $count); } function getLikesCount(): int diff --git a/Web/Models/Repositories/Comments.php b/Web/Models/Repositories/Comments.php index ea956a6f..6c922511 100644 --- a/Web/Models/Repositories/Comments.php +++ b/Web/Models/Repositories/Comments.php @@ -37,6 +37,19 @@ class Comments foreach($comments as $comment) yield $this->toComment($comment); } + + function getLastCommentsByTarget(Postable $target, ?int $count = NULL): \Traversable + { + $comments = $this->comments->where([ + "model" => get_class($target), + "target" => $target->getId(), + "deleted" => false, + ])->page(1, $count ?? OPENVK_DEFAULT_PER_PAGE)->order("created DESC"); + + $comments = array_reverse(iterator_to_array($comments)); + foreach($comments as $comment) + yield $this->toComment($comment); + } function getCommentsCountByTarget(Postable $target): int { diff --git a/Web/Presenters/templates/Wall/Wall.xml b/Web/Presenters/templates/Wall/Wall.xml index 69de494e..7e1969e8 100644 --- a/Web/Presenters/templates/Wall/Wall.xml +++ b/Web/Presenters/templates/Wall/Wall.xml @@ -24,7 +24,7 @@ {foreach $posts as $post} - {include "../components/post.xml", post => $post} + {include "../components/post.xml", post => $post, commentSection => true} {/foreach} {include "../components/paginator.xml", conf => $paginatorConf} {else} diff --git a/Web/Presenters/templates/components/comment.xml b/Web/Presenters/templates/components/comment.xml index 608fc9ca..cc3f9c8d 100644 --- a/Web/Presenters/templates/components/comment.xml +++ b/Web/Presenters/templates/components/comment.xml @@ -1,20 +1,19 @@ {var author = $comment->getOwner()} -
+ | + width="30" /> |
@@ -27,16 +26,15 @@
|