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

namespace XF\Tag;

use
XF\Mvc\Entity\Entity;

class
Thread extends AbstractHandler
{
    public function
getPermissionsFromContext(Entity $entity)
    {
        if (
$entity instanceof \XF\Entity\Thread)
        {
           
$thread = $entity;
           
$forum = $thread->Forum;
        }
        else if (
$entity instanceof \XF\Entity\Forum)
        {
           
$thread = null;
           
$forum = $entity;
        }
        else
        {
            throw new \
InvalidArgumentException("Entity must be a thread or forum");
        }

       
$visitor = \XF::visitor();

        if (
$thread)
        {
            if (
$thread->user_id == $visitor->user_id
               
&& $visitor->hasNodePermission($thread->node_id, 'manageOthersTagsOwnThread')
            )
            {
               
$removeOthers = true;
            }
            else
            {
               
$removeOthers = $visitor->hasNodePermission($thread->node_id, 'manageAnyTag');
            }

           
$edit = $thread->canEditTags();
        }
        else
        {
           
$removeOthers = false;
           
$edit = $forum->canEditTags();
        }

        return [
           
'edit' => $edit,
           
'removeOthers' => $removeOthers,
           
'minTotal' => $forum->min_tags
       
];
    }

    public function
getContentDate(Entity $entity)
    {
        return
$entity->post_date;
    }

    public function
getContentVisibility(Entity $entity)
    {
        return
$entity->discussion_state == 'visible';
    }

    public function
getTemplateData(Entity $entity, array $options = [])
    {
        return [
           
'thread' => $entity,
           
'options' => $options
       
];
    }

    public function
getEntityWith($forView = false)
    {
       
$get = ['Forum'];
        if (
$forView)
        {
           
$get[] = 'User';
           
$get[] = 'FirstPost';

           
$visitor = \XF::visitor();
           
$get[] = 'Forum.Node.Permissions|' . $visitor->permission_combination_id;
        }

        return
$get;
    }

    public function
canUseInlineModeration(Entity $entity, &$error = null)
    {
       
/** @var \XF\Entity\Thread $entity */
       
return $entity->canUseInlineModeration($error);
    }
}