Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Service/Post/Approver.php
<?php

namespace XF\Service\Post;

use
XF\Entity\Post;

class
Approver extends \XF\Service\AbstractService
{
   
/**
     * @var Post
     */
   
protected $post;

    protected
$notifyRunTime = 3;

    public function
__construct(\XF\App $app, Post $post)
    {
       
parent::__construct($app);
       
$this->post = $post;
    }

    public function
getPost()
    {
        return
$this->post;
    }

    public function
setNotifyRunTime($time)
    {
       
$this->notifyRunTime = $time;
    }

    public function
approve()
    {
        if (
$this->post->message_state == 'moderated')
        {
           
$this->post->message_state = 'visible';
           
$this->post->save();

           
$this->onApprove();
            return
true;
        }
        else
        {
            return
false;
        }
    }

    protected function
onApprove()
    {
       
/** @var \XF\Service\Post\Preparer $preparer */
       
$preparer = $this->service('XF:Post\Preparer', $this->post);
       
$preparer->setMessage($this->post->message);

       
// TODO: this doesn't solve mentioned user IDs

        /** @var \XF\Service\Post\Notifier $notifier */
       
$notifier = $this->service('XF:Post\Notifier', $this->post, 'reply');
       
$notifier->setQuotedUserIds($preparer->getQuotedUserIds());
       
$notifier->notifyAndEnqueue($this->notifyRunTime);
    }
}