Seditio Source
Root |
./othercms/ips_4.3.4/system/Content/Search/Result/Result.php
<?php
/**
 * @brief        Search Result
 * @author        <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright    (c) Invision Power Services, Inc.
 * @license        https://www.invisioncommunity.com/legal/standards/
 * @package        Invision Community
 * @since        15 Sep 2015
*/

namespace IPS\Content\Search;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
   
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
    exit;
}

/**
 * Search Result
 */
abstract class _Result
{
   
/**
     * Pre-Display logic for search index content
     *
     * @param    bool    $createdDate    If TRUE, uses $createdDate, otherwise uses $lastUpdatedDate
     * @return    string
     */
   
public static function preDisplay( $content )
    {
       
/* We cannot use images (or *anything* other than text) in search results as it messes with the truncation
            logic. All HTML (including emoticons) are already stripped before they go into the search index
            for this reason, but Emoji (because they're text) won't be. We can't swap the Emoji back out
            with one of the alternative Emoji style images though because that re-introduces images, so we
            just strip them out (making them behave like emoticons) */
       
if ( \IPS\Settings::i()->emoji_style == 'twemoji' or \IPS\Settings::i()->emoji_style == 'emojione' )
        {
            return
preg_replace( '/(?:' . \IPS\Text\Parser::EMOJI_REGEX . '|\x{200d})+/u', '', $content );
        }
        else
        {
            return
$content;
        }
    }
   
   
/**
     * @brief    Created Date
     */
   
public $createdDate;
   
   
/**
     * @brief    Last Updated Date
     */
   
public $lastUpdatedDate;
   
   
/**
     * Separator for activity streams - "past hour", "today", etc.
     *
     * @param    bool    $createdDate    If TRUE, uses $createdDate, otherwise uses $lastUpdatedDate
     * @return    string
     */
   
public function streamSeparator( $createdDate=TRUE )
    {
       
$date = $createdDate ? $this->createdDate : $this->lastUpdatedDate;
       
       
$now = \IPS\DateTime::ts( time() );
       
$yesterday = clone $now;
       
$yesterday = $yesterday->sub( new \DateInterval('P1D') );
       
$diff = $date->diff( $now );

        if (
$date->format('Y-m-d') == $yesterday->format('Y-m-d') )
        {
            return
'yesterday';
        }
        elseif (
$diff->h < 1 && !$diff->d && !$diff->m )
        {
            return
'past_hour';
        }
        elseif (
$date->format('Y-m-d') == $now->format('Y-m-d') )
        {
            return
'today';
        }
        elseif ( !
$diff->y and !$diff->m and $diff->d < 7 )
        {
            return
'last_week';
        }
        else
        {
            return
'earlier';
        }
    }

   
/**
     * Get output for API
     *
     * @param    \IPS\Member|NULL    $authorizedMember    The member making the API request or NULL for API Key / client_credentials
     * @return    array
     * @apiresponse            string                title                    Title of search result
     * @apiresponse            string                content                    Content of search result
     * @apiresponse            string                class                    Content class of search result
     * @apiresponse            int                    objectId                Content ID of search result
     * @apiresponse            string                itemClass                Content item class of search result (if search result is of a content item, this will match class)
     * @apiresponse            int                    itemId                    Content item ID of search result (if search result is of a content item, this will match objectId)
     * @apiresponse            datetime            started                    Datetime search result was submitted
     * @apiresponse            datetime            updated                    Datetime search result was last updated
     * @apiresponse            string                itemUrl                    URL to content item
     * @apiresponse            string                objectUrl                URL to search result item (if search result is of a content item, this will match itemUrl)
     * @apiresponse            int                    reputation                Number of reputation points for search result
     * @apiresponse            int|null            comments                Number of comments or replies for search result, or NULL if commenting is not supported
     * @apiresponse            int|null            reviews                    Number of reviews for search result, or NULL if reviewing is not supported
     * @apiresponse            string                container                Title of container of search result
     * @apiresponse            string                containerUrl            URL to container of search result
     * @apiresponse            string                author                    Author name of search result
     * @apiresponse            string|null            authorUrl                URL to author's profile, or NULL if search result was submitted by a guest
     * @apiresponse            string                authorPhoto                URL to author's profile photo
     * @apiresponse            string                authorPhotoThumbnail    URL to author's profile photo thumbnail
     * @apiresponse            array                tags                    Array of tags associated with the search result
     */
   
public function apiOutput( \IPS\Member $authorizedMember = NULL )
    {
       
/* @note This is only here to populate the AdminCP reference tab - the array of search result entries is built manually */
   
}
}