Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Service/Report/CommentPreparer.php
<?php

namespace XF\Service\Report;

use
XF\Entity\ReportComment;

class
CommentPreparer extends \XF\Service\AbstractService
{
   
/**
     * @var ReportComment
     */
   
protected $comment;

    protected
$mentionedUsers = [];

    public function
__construct(\XF\App $app, ReportComment $comment)
    {
       
parent::__construct($app);
       
$this->setComment($comment);
    }

    public function
setComment(ReportComment $comment)
    {
       
$this->comment = $comment;
    }

    public function
getComment()
    {
        return
$this->comment;
    }

    public function
setUser(\XF\Entity\User $user)
    {
       
$this->comment->user_id = $user->user_id;
       
$this->comment->username = $user->username;
    }

    public function
setMessage($message, $format = true)
    {
       
$preparer = $this->getMessagePreparer($format);
       
$this->comment->message = $preparer->prepare($message);

       
$this->mentionedUsers = $preparer->getMentionedUsers();

        return
$preparer->pushEntityErrorIfInvalid($this->comment);
    }

    public function
getMentionedUsers($limitPermissions = true)
    {
        if (
$limitPermissions && $this->comment)
        {
           
/** @var \XF\Entity\User $user */
           
$user = $this->comment->User ?: $this->repository('XF:User')->getGuestUser();
            return
$user->getAllowedUserMentions($this->mentionedUsers);
        }
        else
        {
            return
$this->mentionedUsers;
        }
    }

    public function
getMentionedUserIds($limitPermissions = true)
    {
        return
array_keys($this->getMentionedUsers($limitPermissions));
    }

   
/**
     * @param bool $format
     *
     * @return \XF\Service\Message\Preparer
     */
   
protected function getMessagePreparer($format = true)
    {
       
/** @var \XF\Service\Message\Preparer $preparer */
       
$preparer = $this->service('XF:Message\Preparer', 'report_comment', $this->comment);
        if (!
$format)
        {
           
$preparer->disableAllFilters();
        }
       
$preparer->setConstraint('allowEmpty', true);

        return
$preparer;
    }
}