Итак, в Xenforo 2, когда ветка должна быть модерирована перед публикацией на publi c, пользователь, разместивший ветку, может ее увидеть, но через некоторое время она исчезнет. Я хочу, чтобы пользователь, разместивший ветку, всегда мог ее видеть, независимо от того, одобрен она или нет. Я знаю, что это где-то в этой функции, но не совсем уверен, как это сделать. Может быть, проверить, если текущий used_id = thread_starter_id или что-то в этом роде? Пожалуйста, помогите мне там, где это очень нужно.
public function inForum(\XF\Entity\Forum $forum, array $limits = [])
{
$limits = array_replace([
'visibility' => true,
'allowOwnPending' => false
], $limits);
$this->where('node_id', $forum->node_id);
$this->applyForumDefaultOrder($forum);
if ($limits['visibility'])
{ //it should be happening right here!
$this->applyVisibilityChecksInForum($forum, $limits['allowOwnPending']);
}
return $this;
}
И функция applyVisibilityChecksInForum:
public function applyVisibilityChecksInForum(\XF\Entity\Forum $forum, $allowOwnPending = false)
{
$conditions = [];
$viewableStates = ['visible'];
if ($forum->canViewDeletedThreads())
{
$viewableStates[] = 'deleted';
$this->with('DeletionLog');
}
$visitor = \XF::visitor();
if ($forum->canViewModeratedThreads())
{
$viewableStates[] = 'moderated';
}
else if ($visitor->user_id && $allowOwnPending)
{
$conditions[] = [
'discussion_state' => 'moderated',
'user_id' => $visitor->user_id
];
}
$conditions[] = ['discussion_state', $viewableStates];
$this->whereOr($conditions);
$visitor = \XF::visitor();
if (!$visitor->hasNodePermission($forum->node_id, 'viewOthers'))
{
if ($visitor->user_id)
{
$this->where('user_id', $visitor->user_id);
}
else
{
$this->whereSql('1=0'); // force false immediately
}
}
return $this;
}