<?php
namespace XF\Repository;
use XF\Mvc\Entity\Repository;
class Post extends Repository
{
public function findPostsForThreadView(\XF\Entity\Thread $thread, array $limits = [])
{
/** @var \XF\Finder\Post $finder */
$finder = $this->finder('XF:Post');
$finder
->inThread($thread, $limits)
->orderByDate()
->with('full');
return $finder;
}
public function findSpecificPostsForThreadView(\XF\Entity\Thread $thread, array $postIds, array $limits = [])
{
/** @var \XF\Finder\Post $finder */
$finder = $this->finder('XF:Post');
$finder
->inThread($thread, $limits)
->where('post_id', $postIds)
->with('full');
return $finder;
}
public function findNewestPostsInThread(\XF\Entity\Thread $thread, $newerThan, array $limits = [])
{
/** @var \XF\Finder\Post $finder */
$finder = $this->finder('XF:Post');
$finder
->inThread($thread, $limits)
->order(['post_date', 'post_id'], 'DESC')
->newerThan($newerThan);
return $finder;
}
public function findNextPostsInThread(\XF\Entity\Thread $thread, $newerThan, array $limits = [])
{
/** @var \XF\Finder\Post $finder */
$finder = $this->finder('XF:Post');
$finder
->inThread($thread, $limits)
->order(['post_date', 'post_id'], 'ASC')
->newerThan($newerThan);
return $finder;
}
public function sendModeratorActionAlert(\XF\Entity\Post $post, $action, $reason = '', array $extra = [])
{
if (!$post->user_id || !$post->User)
{
return false;
}
$extra = array_merge([
'title' => $post->Thread->title,
'prefix_id' => $post->Thread->prefix_id,
'link' => $this->app()->router('public')->buildLink('nopath:posts', $post),
'threadLink' => $this->app()->router('public')->buildLink('nopath:threads', $post->Thread),
'reason' => $reason
], $extra);
/** @var \XF\Repository\UserAlert $alertRepo */
$alertRepo = $this->repository('XF:UserAlert');
$alertRepo->alert(
$post->User,
0, '',
'user', $post->user_id,
"post_{$action}", $extra
);
return true;
}
}