Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Finder/ProfilePostComment.php
<?php

namespace XF\Finder;

use
XF\Mvc\Entity\Finder;

class
ProfilePostComment extends Finder
{
   
/**
     * @deprecated Use with('full')
     *
     * @return $this
     */
   
public function forFullView()
    {
       
$this->with('full');

        return
$this;
    }

    public function
forProfilePost(\XF\Entity\ProfilePost $profilePost, array $limits = [])
    {
       
$limits = array_replace([
           
'visibility' => true,
           
'allowOwnPending' => true
       
], $limits);

       
$this->where('profile_post_id', $profilePost->profile_post_id);

        if (
$limits['visibility'])
        {
           
$this->applyVisibilityChecksForProfilePost($profilePost, $limits['allowOwnPending']);
        }

        return
$this;
    }

    public function
applyVisibilityChecksForProfilePost(\XF\Entity\ProfilePost $profilePost, $allowOwnPending = true)
    {
       
$conditions = [];
       
$viewableStates = ['visible'];

        if (
$profilePost->canViewDeletedComments())
        {
           
$viewableStates[] = 'deleted';
           
$this->with('DeletionLog');
        }

       
$visitor = \XF::visitor();
        if (
$profilePost->canViewModeratedComments())
        {
           
$viewableStates[] = 'moderated';
        }
        else if (
$visitor->user_id && $allowOwnPending)
        {
           
$conditions[] = [
               
'message_state' => 'moderated',
               
'user_id' => $visitor->user_id
           
];
        }

       
$conditions[] = ['message_state', $viewableStates];

       
$this->whereOr($conditions);

        return
$this;
    }

    public function
newerThan($date)
    {
       
$this->where('comment_date', '>', $date);

        return
$this;
    }
}