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

namespace XF\Report;

use
XF\Entity\Report;
use
XF\Mvc\Entity\Entity;

abstract class
AbstractHandler
{
    protected
$contentType;

    public function
__construct($contentType)
    {
       
$this->contentType = $contentType;
    }

    public function
canView(Report $report)
    {
        if (!
$this->canViewContent($report))
        {
            return
false;
        }

        if (!
$this->canActionContent($report))
        {
            return
false;
        }

        return
true;
    }

    protected function
canViewContent(Report $report)
    {
        return
true;
    }

    protected function
canActionContent(Report $report)
    {
        return
true;
    }

    abstract public function
setupReportEntityContent(Report $report, Entity $content);
    abstract public function
getContentTitle(Report $report);
    abstract public function
getContentMessage(Report $report);

    public function
getContentLink(Report $report)
    {
        return
'';
    }

    public function
getContentForThreadReport(Report $report, $message)
    {
       
$visitor = \XF::visitor();

        return [
           
'link' => $this->getContentLink($report),
           
'title' => $this->getContentTitle($report),
           
'userLink' => $report->User ? \XF::app()->router('public')->buildLink('canonical:members', $report->User) : null,
           
'username' => $report->User ? $report->User->username : \XF::phrase('guest'),
           
'reporterLink' => \XF::app()->router('public')->buildLink('canonical:members', $visitor),
           
'reporter' => $visitor->username,
           
'reportReason' => $message,
           
'message' => $this->getContentMessage($report),
           
'extraDetails' => ''
       
];
    }

    public function
getTemplateName()
    {
        return
'public:report_content_' . $this->contentType;
    }

    public function
getTemplateData(Report $report)
    {
        return [
           
'report' => $report,
           
'content' => $report->Content
       
];
    }

    public function
render(Report $report)
    {
       
$template = $this->getTemplateName();
        if (!
$template)
        {
            return
'';
        }
        return \
XF::app()->templater()->renderTemplate($template, $this->getTemplateData($report));
    }

    public function
getEntityWith()
    {
        return [];
    }

    public function
getContent($id)
    {
        return \
XF::app()->findByContentType($this->contentType, $id, $this->getEntityWith());
    }
}