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

namespace XF\Search\Data;

use
XF\Mvc\Entity\Entity;
use
XF\Search\IndexRecord;
use
XF\Search\MetadataStructure;

class
Thread extends AbstractData
{
    public function
getEntityWith($forView = false)
    {
       
$get = ['Forum', 'FirstPost'];
        if (
$forView)
        {
           
$get[] = 'User';

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

        return
$get;
    }

    public function
getIndexData(Entity $entity)
    {
       
/** @var \XF\Entity\Thread $entity */

       
if (!$entity->Forum || $entity->discussion_type == 'redirect')
        {
            return
null;
        }

       
/** @var \XF\Entity\Post|null $firstPost */
       
$firstPost = $entity->FirstPost;

       
$index = IndexRecord::create('thread', $entity->thread_id, [
           
'title' => $entity->title_,
           
'message' => $firstPost ? $firstPost->message_ : '',
           
'date' => $entity->post_date,
           
'user_id' => $entity->user_id,
           
'discussion_id' => $entity->thread_id,
           
'metadata' => $this->getMetaData($entity)
        ]);

        if (!
$entity->isVisible())
        {
           
$index->setHidden();
        }

        if (
$entity->tags)
        {
           
$index->indexTags($entity->tags);
        }

        return
$index;
    }

    protected function
getMetaData(\XF\Entity\Thread $entity)
    {
       
$metadata = [
           
'node' => $entity->node_id,
           
'thread' => $entity->thread_id,
           
'thread_type' => $entity->discussion_type
       
];
        if (
$entity->prefix_id)
        {
           
$metadata['prefix'] = $entity->prefix_id;
        }

        return
$metadata;
    }

    public function
setupMetadataStructure(MetadataStructure $structure)
    {
       
$structure->addField('node', MetadataStructure::INT);
       
$structure->addField('thread', MetadataStructure::INT);
       
$structure->addField('prefix', MetadataStructure::INT);
       
$structure->addField('thread_type', MetadataStructure::KEYWORD);
    }

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

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

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