<?php
/**
 * @package Helix Ultimate Framework
 * @author JoomShaper https://www.joomshaper.com
 * @copyright Copyright (c) 2010 - 2025 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

defined ('_JEXEC') or die();

use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Router\Route;
use Joomla\String\StringHelper;

// Get the mime type class.
$mime = !empty($this->result->mime) ? 'mime-' . $this->result->mime : null;

$show_description = $this->params->get('show_description', 1);

if ($show_description)
{
	// Calculate number of characters to display around the result
	$term_length = StringHelper::strlen($this->query->input);
	$desc_length = $this->params->get('description_length', 255);
	$pad_length  = $term_length < $desc_length ? (int) floor(($desc_length - $term_length) / 2) : 0;

	// Find the position of the search term
	$pos = $term_length ? StringHelper::strpos(StringHelper::strtolower($this->result->description), StringHelper::strtolower($this->query->input)) : false;

	// Find a potential start point
	$start = ($pos && $pos > $pad_length) ? $pos - $pad_length : 0;

	// Find a space between $start and $pos, start right after it.
	$space = StringHelper::strpos($this->result->description, ' ', $start > 0 ? $start - 1 : 0);
	$start = ($space && $space < $pos) ? $space + 1 : $start;

	$description = HTMLHelper::_('string.truncate', StringHelper::substr($this->result->description, $start), $desc_length, true);
}

$route = $this->result->route;

$showImage  = $this->params->get('show_image', 0);
$imageClass = $this->params->get('image_class', '');
$extraAttr  = [];

if ($showImage && !empty($this->result->imageUrl) && $imageClass !== '') {
    $extraAttr['class'] = $imageClass;
}

// Get the route with highlighting information.
if (!empty($this->query->highlight)
	&& empty($this->result->mime)
	&& $this->params->get('highlight_terms', 1)
	&& PluginHelper::isEnabled('system', 'highlight'))
{
	$route .= '&highlight=' . base64_encode(json_encode($this->query->highlight));
}

?>
<li>
	<?php if ($showImage && isset($this->result->imageUrl)) : ?>
		<?php 
			$imageUrl = $this->result->imageUrl;
			$imageAlt = $this->result->imageAlt;
			if (!empty($this->result->params->get('helix_ultimate_image'))) {
				$imageUrl = $this->result->params->get('helix_ultimate_image');
				$imageAlt = $this->result->title;
			}
		?>
        <figure class="<?php echo htmlspecialchars($imageClass ?? "", ENT_COMPAT, 'UTF-8'); ?> result__image">
            <?php if ($this->params->get('link_image') && $this->result->route) : ?>
                <a href="<?php echo Route::_($this->result->route); ?>">
                    <?php echo HTMLHelper::_('image', $imageUrl, $imageAlt, $extraAttr); ?>
                </a>
            <?php else : ?>
                <?php echo HTMLHelper::_('image', $imageUrl, $imageAlt, $extraAttr); ?>
            <?php endif; ?>
        </figure>
    <?php endif; ?>
	<h4 class="result-title <?php echo $mime; ?>">
		<a href="<?php echo Route::_($route); ?>">
			<?php echo $this->result->title; ?>
		</a>
	</h4>
	<?php if ($show_description && $description !== '') : ?>
		<p class="result-text">
			<?php echo $description; ?>
		</p>
	<?php endif; ?>
</li>
