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

namespace XF\Tag;

use
XF\Mvc\Entity\Entity;

abstract class
AbstractHandler
{
    protected
$contentType;

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

    abstract public function
getPermissionsFromContext(Entity $entity);
    abstract public function
getContentDate(Entity $entity);
    abstract public function
getContentVisibility(Entity $entity);
    abstract public function
getTemplateData(Entity $entity, array $options = []);

    public function
updateContentTagCache(Entity $content, array $cache)
    {
        if (!isset(
$content->tags))
        {
            throw new \
LogicException("No 'tags' cache found; please override");
        }

       
$content->tags = $cache;
       
$content->save();
    }

    public function
getEntityWith($forView = false)
    {
        return [];
    }

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

    public function
renderResult(Entity $entity, array $options = [])
    {
       
$template = $this->getTemplateName();
       
$data = $this->getTemplateData($entity, $options);

        return \
XF::app()->templater()->renderTemplate($template, $data);
    }

    public function
canViewContent(Entity $entity, &$error = null)
    {
        if (
method_exists($entity, 'canView'))
        {
            return
$entity->canView($error);
        }

        throw new \
LogicException("Could not determine content viewability; please override");
    }

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

    public function
canUseInlineModeration(Entity $entity, &$error = null)
    {
        return
false;
    }

    public function
getContentType()
    {
        return
$this->contentType;
    }
}