Вход Регистрация
Файл: library/XenForo/Search/Indexer.php
Строк: 216
<?php

/**
 * Manipulates the search index. Proxies to the search source handler.
 *
 * @package XenForo_Search
 */
class XenForo_Search_Indexer
{
    
/**
     * @var XenForo_Search_SourceHandler_Abstract
     */
    
protected $_sourceHandler null;

    
/**
     * Constructor.
     *
     * @param XenForo_Search_SourceHandler_Abstract|null $sourceHandler Search source handler. Uses default if not specified.
     */
    
public function __construct(XenForo_Search_SourceHandler_Abstract $sourceHandler null)
    {
        if (!
$sourceHandler)
        {
            
$sourceHandler XenForo_Search_SourceHandler_Abstract::getDefaultSourceHandler();
        }

        
$this->_sourceHandler $sourceHandler;
    }

    
/**
     * Inserts (or replaces) the specified record in the index.
     *
     * @param string $contentType Content type string
     * @param integer $contentId ID of the content being indexed
     * @param string $title Content title
     * @param string $message Content message
     * @param integer $itemDate Timestamp of content
     * @param integer $userId ID of user content belongs to
     * @param integer $discussionId ID of discussion or other grouping container
     * @param array $metadata Key value pairs of metadata to index.
     */
    
public function insertIntoIndex($contentType$contentId$title$message$itemDate$userId$discussionId 0, array $metadata = array())
    {
        
$this->_sourceHandler->insertIntoIndex($contentType$contentId$title$message$itemDate$userId$discussionId$metadata);
    }

    
/**
     * Indexes the specified content.
     *
     * @param string $contentType
     * @param array|integer $contentIds One or more content IDs to index
     *
     * @return boolean
     */
    
public function quickIndex($contentType$contentIds)
    {
        
$handler XenForo_Model::create('XenForo_Model_Search')->getSearchDataHandler($contentType);
        if (!
$handler)
        {
            return 
false;
        }

        if (!
is_array($contentIds))
        {
            
$contentIds = array($contentIds);
        }
        if (!
$contentIds)
        {
            return 
false;
        }

        return 
$handler->quickIndex($this$contentIds);
    }

    
/**
     * Updates the existing index record for a specified item.
     *
     * @param string $contentType Content type string
     * @param integer $contentId ID of the content being indexed
     * @param array $fieldUpdates Key-value pairs of fields to update. Metadata is not updatable.
     */
    
public function updateIndex($contentType$contentId, array $fieldUpdates)
    {
        
$this->_sourceHandler->updateIndex($contentType$contentId$fieldUpdates);
    }

    
/**
     * Deletes the specified entry or entries from the index.
     *
     * @param string $contentType Type of content to remove
     * @param array|integer $contentIds An array of content IDs or 1 as an integer. May be an array of data records as well.
     */
    
public function deleteFromIndex($contentType$contentIds)
    {
        if (!
is_array($contentIds))
        {
            
$contentIds = array($contentIds);
        }

        if (!
$contentIds)
        {
            return;
        }

        
$this->_sourceHandler->deleteFromIndex($contentType$contentIds);
    }

    
/**
     * Sets whether this is a bulk rebuild. If true, behavior may be modified to be
     * less asynchronous.
     *
     * @param boolean $rebuild
     */
    
public function setIsRebuild($rebuild)
    {
        
$this->_sourceHandler->setIsRebuild($rebuild);
    }

    
/**
     * When rebuilding, it might be advantageous to bulk update records. This function
     * must be called to ensure that all records are updated together.
     */
    
public function finalizeRebuildSet()
    {
        
$this->_sourceHandler->finalizeRebuildSet();
    }
}
Онлайн: 1
Реклама