| Current Path : /var/www/html/components/com_kunena/src/Layout/Search/ |
| Current File : /var/www/html/components/com_kunena/src/Layout/Search/SearchResults.php |
<?php
/**
* Kunena Component
*
* @package Kunena.Site
* @subpackage Layout.Search
*
* @copyright Copyright (C) 2008 - 2026 Kunena Team. All rights reserved.
* @license https://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link https://www.kunena.org
**/
namespace Kunena\Forum\Site\Layout\Search;
\defined('_JEXEC') or die;
use Exception;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Registry\Registry;
use Kunena\Forum\Libraries\Event\KunenaPrepareEvent;
use Kunena\Forum\Libraries\Factory\KunenaFactory;
use Kunena\Forum\Libraries\Forum\Category\KunenaCategory;
use Kunena\Forum\Libraries\Forum\Message\KunenaMessage;
use Kunena\Forum\Libraries\Forum\Topic\KunenaTopic;
use Kunena\Forum\Libraries\Html\KunenaParser;
use Kunena\Forum\Libraries\Layout\KunenaLayout;
use Kunena\Forum\Libraries\User\KunenaUser;
/**
* KunenaLayoutSearchResults
*
* @since Kunena 4.0
*/
class SearchResults extends KunenaLayout
{
/**
* @var KunenaMessage
* @since Kunena 6.0
*/
public $message;
/**
* @var KunenaCategory
* @since Kunena 6.0
*/
public $category;
/**
* @var string
* @since Kunena 6.0
*/
public $categoryLink;
/**
* @var array
* @since Kunena 6.0
*/
public $results;
/**
* @var KunenaTopic
* @since Kunena 6.0
*/
public $topic;
/**
* @var string
* @since Kunena 6.0
*/
public $useravatar;
/**
* @var array
* @since Kunena 6.0
*/
public $searchwords;
/**
* @var KunenaUser
* @since Kunena 6.0
*/
public $author;
/**
* @var KunenaUser
* @since Kunena 6.0
*/
public $topicAuthor;
/**
* @var integer
* @since Kunena 6.0
*/
public $topicTime;
/**
* @var string
* @since Kunena 6.0
*/
public $subjectHtml;
/**
* @var string
* @since Kunena 6.0
*/
public $messageHtml;
public $output;
public $user;
public $headerText;
public $pagination;
public $config;
public $model;
public $total;
public $state;
public $message_ordering;
public $isModerator;
public $error;
/**
* Method to display the layout of search results
*
* @return void
*
* @since Kunena 6.0
*
* @throws Exception
* @throws null
*/
public function displayRows()
{
// Run events
$params = new Registry();
$params->set('ksource', 'kunena');
$params->set('kunena_view', 'search');
$params->set('kunena_layout', 'default');
PluginHelper::importPlugin('kunena');
foreach ($this->results as &$result) {
$prepareEvent = new KunenaPrepareEvent('onKunenaPrepare', [
'context' => 'kunena.messages',
'subject' => $result,
'params' => $params,
'page' => 0
]);
$this->app->getDispatcher()->dispatch('onKunenaPrepare', $prepareEvent);
}
foreach ($this->results as $this->message) {
$this->topic = $this->message->getTopic();
$this->category = $this->message->getCategory();
$this->categoryLink = $this->getCategoryLink($this->category->getParent()) . ' / ' . $this->getCategoryLink($this->category);
$ressubject = KunenaParser::parseText($this->message->subject);
$resmessage = KunenaParser::parseBBCode($this->message->message, 500);
$profile = KunenaFactory::getUser((int) $this->message->userid);
$this->useravatar = $profile->getAvatarImage('kavatar', 'post');
foreach ($this->searchwords as $searchword) {
if (empty($searchword)) {
continue;
}
$ressubject = preg_replace(
"/" . preg_quote($searchword, '/') . "/iu",
'<span class="searchword" >' . $searchword . '</span>',
$ressubject
);
// FIXME: enable highlighting, but only after we can be sure that we do not break html
// $resmessage = preg_replace ( "/" . preg_quote ( $searchword, '/' ) . "/iu",
// '<span class="searchword" >' . $searchword . '</span>', $resmessage );
}
$this->author = $this->message->getAuthor();
$this->topicAuthor = $this->topic->getAuthor();
$this->topicTime = $this->topic->first_post_time;
$this->subjectHtml = $ressubject;
$this->messageHtml = $resmessage;
$contents = $this->subLayout('Search/Results/Row')->setProperties($this->getProperties());
echo $contents;
}
}
}