You've already forked joomla_test
first commit
This commit is contained in:
506
components/com_finder/helpers/html/filter.php
Normal file
506
components/com_finder/helpers/html/filter.php
Normal file
@ -0,0 +1,506 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
JLoader::register('FinderHelperLanguage', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/language.php');
|
||||
|
||||
/**
|
||||
* Filter HTML Behaviors for Finder.
|
||||
*
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
abstract class JHtmlFilter
|
||||
{
|
||||
/**
|
||||
* Method to generate filters using the slider widget and decorated
|
||||
* with the FinderFilter JavaScript behaviors.
|
||||
*
|
||||
* @param array $options An array of configuration options. [optional]
|
||||
*
|
||||
* @return mixed A rendered HTML widget on success, null otherwise.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public static function slider($options = array())
|
||||
{
|
||||
$db = JFactory::getDbo();
|
||||
$query = $db->getQuery(true);
|
||||
$user = JFactory::getUser();
|
||||
$groups = implode(',', $user->getAuthorisedViewLevels());
|
||||
$html = '';
|
||||
$filter = null;
|
||||
|
||||
// Get the configuration options.
|
||||
$filterId = array_key_exists('filter_id', $options) ? $options['filter_id'] : null;
|
||||
$activeNodes = array_key_exists('selected_nodes', $options) ? $options['selected_nodes'] : array();
|
||||
$classSuffix = array_key_exists('class_suffix', $options) ? $options['class_suffix'] : '';
|
||||
$loadMedia = array_key_exists('load_media', $options) ? $options['load_media'] : true;
|
||||
|
||||
// Load the predefined filter if specified.
|
||||
if (!empty($filterId))
|
||||
{
|
||||
$query->select('f.data, f.params')
|
||||
->from($db->quoteName('#__finder_filters') . ' AS f')
|
||||
->where('f.filter_id = ' . (int) $filterId);
|
||||
|
||||
// Load the filter data.
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$filter = $db->loadObject();
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Initialize the filter parameters.
|
||||
if ($filter)
|
||||
{
|
||||
$registry = new JRegistry;
|
||||
$registry->loadString($filter->params);
|
||||
$filter->params = $registry;
|
||||
}
|
||||
}
|
||||
|
||||
// Build the query to get the branch data and the number of child nodes.
|
||||
$query->clear()
|
||||
->select('t.*, count(c.id) AS children')
|
||||
->from($db->quoteName('#__finder_taxonomy') . ' AS t')
|
||||
->join('INNER', $db->quoteName('#__finder_taxonomy') . ' AS c ON c.parent_id = t.id')
|
||||
->where('t.parent_id = 1')
|
||||
->where('t.state = 1')
|
||||
->where('t.access IN (' . $groups . ')')
|
||||
->where('c.state = 1')
|
||||
->where('c.access IN (' . $groups . ')')
|
||||
->group('t.id, t.parent_id, t.state, t.access, t.ordering, t.title, c.parent_id')
|
||||
->order('t.ordering, t.title');
|
||||
|
||||
// Limit the branch children to a predefined filter.
|
||||
if ($filter)
|
||||
{
|
||||
$query->where('c.id IN(' . $filter->data . ')');
|
||||
}
|
||||
|
||||
// Load the branches.
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$branches = $db->loadObjectList('id');
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Check that we have at least one branch.
|
||||
if (count($branches) === 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Load the CSS/JS resources.
|
||||
if ($loadMedia)
|
||||
{
|
||||
JHtml::_('stylesheet', 'com_finder/sliderfilter.css', false, true, false);
|
||||
JHtml::_('script', 'com_finder/sliderfilter.js', false, true);
|
||||
}
|
||||
|
||||
// Load plug-in language files.
|
||||
FinderHelperLanguage::loadPluginLanguage();
|
||||
|
||||
// Start the widget.
|
||||
$html .= '<div id="finder-filter-container">';
|
||||
$html .= '<dl id="branch-selectors">';
|
||||
$html .= '<dt>';
|
||||
$html .= '<label for="tax-select-all" class="checkbox">';
|
||||
$html .= '<input type="checkbox" id="tax-select-all" />';
|
||||
$html .= JText::_('COM_FINDER_FILTER_SELECT_ALL_LABEL');
|
||||
$html .= '</label>';
|
||||
$html .= '</dt>';
|
||||
$html .= '<div class="control-group">';
|
||||
|
||||
// Iterate through the branches to build the branch selector.
|
||||
foreach ($branches as $bk => $bv)
|
||||
{
|
||||
// If the multi-lang plug-in is enabled then drop the language branch.
|
||||
if ($bv->title == 'Language' && JLanguageMultilang::isEnabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$html .= '<label for="tax-' . $bk . '" class="checkbox">';
|
||||
$html .= '<input type="checkbox" class="toggler" id="tax-' . $bk . '"/>';
|
||||
$html .= JText::sprintf('COM_FINDER_FILTER_BRANCH_LABEL', JText::_(FinderHelperLanguage::branchSingular($bv->title)));
|
||||
$html .= '</label>';
|
||||
}
|
||||
|
||||
$html .= '</div>';
|
||||
$html .= '</dl>';
|
||||
$html .= '<div id="finder-filter-container">';
|
||||
|
||||
// Iterate through the branches and build the branch groups.
|
||||
foreach ($branches as $bk => $bv)
|
||||
{
|
||||
// If the multi-lang plug-in is enabled then drop the language branch.
|
||||
if ($bv->title == 'Language' && JLanguageMultilang::isEnabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Build the query to get the child nodes for this branch.
|
||||
$query->clear()
|
||||
->select('t.*')
|
||||
->from($db->quoteName('#__finder_taxonomy') . ' AS t')
|
||||
->where('t.parent_id = ' . (int) $bk)
|
||||
->where('t.state = 1')
|
||||
->where('t.access IN (' . $groups . ')')
|
||||
->order('t.ordering, t.title');
|
||||
|
||||
// Load the branches.
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$nodes = $db->loadObjectList('id');
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Translate node titles if possible.
|
||||
$lang = JFactory::getLanguage();
|
||||
foreach ($nodes as $nk => $nv)
|
||||
{
|
||||
$key = FinderHelperLanguage::branchPlural($nv->title);
|
||||
if ($lang->hasKey($key))
|
||||
{
|
||||
$nodes[$nk]->title = JText::_($key);
|
||||
}
|
||||
}
|
||||
|
||||
// Start the group.
|
||||
$html .= '<dl class="checklist" rel="tax-' . $bk . '">';
|
||||
$html .= '<dt>';
|
||||
$html .= '<label for="tax-' . JFilterOutput::stringUrlSafe($bv->title) . '" class="checkbox">';
|
||||
$html .= '<input type="checkbox" class="branch-selector filter-branch' . $classSuffix . '" id="tax-'
|
||||
. JFilterOutput::stringUrlSafe($bv->title) . '" />';
|
||||
$html .= JText::sprintf('COM_FINDER_FILTER_BRANCH_LABEL', JText::_(FinderHelperLanguage::branchSingular($bv->title)));
|
||||
$html .= '</label>';
|
||||
$html .= '</dt>';
|
||||
$html .= '<div class="control-group">';
|
||||
|
||||
// Populate the group with nodes.
|
||||
foreach ($nodes as $nk => $nv)
|
||||
{
|
||||
// Determine if the node should be checked.
|
||||
$checked = in_array($nk, $activeNodes) ? ' checked="checked"' : '';
|
||||
|
||||
// Build a node.
|
||||
$html .= '<label for="tax-' . $nk . '" class="checkbox">';
|
||||
$html .= '<input class="selector filter-node' . $classSuffix . '" type="checkbox" value="' . $nk . '" name="t[]" id="tax-'
|
||||
. $nk . '"' . $checked . ' />';
|
||||
$html .= $nv->title;
|
||||
$html .= '</label>';
|
||||
}
|
||||
|
||||
// Close the group.
|
||||
$html .= '</div>';
|
||||
$html .= '</dl>';
|
||||
}
|
||||
|
||||
// Close the widget.
|
||||
$html .= '<div class="clr"></div>';
|
||||
$html .= '</div>';
|
||||
$html .= '</div>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to generate filters using select box drop down controls.
|
||||
*
|
||||
* @param FinderIndexerQuery $idxQuery A FinderIndexerQuery object.
|
||||
* @param array $options An array of options.
|
||||
*
|
||||
* @return mixed A rendered HTML widget on success, null otherwise.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public static function select($idxQuery, $options)
|
||||
{
|
||||
$user = JFactory::getUser();
|
||||
$groups = implode(',', $user->getAuthorisedViewLevels());
|
||||
$filter = null;
|
||||
|
||||
// Get the configuration options.
|
||||
$classSuffix = $options->get('class_suffix', null);
|
||||
$loadMedia = $options->get('load_media', true);
|
||||
$showDates = $options->get('show_date_filters', false);
|
||||
|
||||
// Try to load the results from cache.
|
||||
$cache = JFactory::getCache('com_finder', '');
|
||||
$cacheId = 'filter_select_' . serialize(array($idxQuery->filter, $options, $groups, JFactory::getLanguage()->getTag()));
|
||||
|
||||
// Check the cached results.
|
||||
if (!($branches = $cache->get($cacheId)))
|
||||
{
|
||||
$db = JFactory::getDbo();
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
// Load the predefined filter if specified.
|
||||
if (!empty($idxQuery->filter))
|
||||
{
|
||||
$query->select('f.data, ' . $db->quoteName('f.params'))
|
||||
->from($db->quoteName('#__finder_filters') . ' AS f')
|
||||
->where('f.filter_id = ' . (int) $idxQuery->filter);
|
||||
|
||||
// Load the filter data.
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$filter = $db->loadObject();
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Initialize the filter parameters.
|
||||
if ($filter)
|
||||
{
|
||||
$registry = new JRegistry;
|
||||
$registry->loadString($filter->params);
|
||||
$filter->params = $registry;
|
||||
}
|
||||
}
|
||||
|
||||
// Build the query to get the branch data and the number of child nodes.
|
||||
$query->clear()
|
||||
->select('t.*, count(c.id) AS children')
|
||||
->from($db->quoteName('#__finder_taxonomy') . ' AS t')
|
||||
->join('INNER', $db->quoteName('#__finder_taxonomy') . ' AS c ON c.parent_id = t.id')
|
||||
->where('t.parent_id = 1')
|
||||
->where('t.state = 1')
|
||||
->where('t.access IN (' . $groups . ')')
|
||||
->where('c.state = 1')
|
||||
->where('c.access IN (' . $groups . ')')
|
||||
->group($db->quoteName('t.id'))
|
||||
->order('t.ordering, t.title');
|
||||
|
||||
// Limit the branch children to a predefined filter.
|
||||
if (!empty($filter->data))
|
||||
{
|
||||
$query->where('c.id IN(' . $filter->data . ')');
|
||||
}
|
||||
|
||||
// Load the branches.
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$branches = $db->loadObjectList('id');
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Check that we have at least one branch.
|
||||
if (count($branches) === 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Iterate through the branches and build the branch groups.
|
||||
foreach ($branches as $bk => $bv)
|
||||
{
|
||||
// If the multi-lang plug-in is enabled then drop the language branch.
|
||||
if ($bv->title == 'Language' && JLanguageMultilang::isEnabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Build the query to get the child nodes for this branch.
|
||||
$query->clear()
|
||||
->select('t.*')
|
||||
->from($db->quoteName('#__finder_taxonomy') . ' AS t')
|
||||
->where('t.parent_id = ' . (int) $bk)
|
||||
->where('t.state = 1')
|
||||
->where('t.access IN (' . $groups . ')')
|
||||
->order('t.ordering, t.title');
|
||||
|
||||
// Limit the nodes to a predefined filter.
|
||||
if (!empty($filter->data))
|
||||
{
|
||||
$query->where('t.id IN(' . $filter->data . ')');
|
||||
}
|
||||
|
||||
// Load the branches.
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$branches[$bk]->nodes = $db->loadObjectList('id');
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Translate branch nodes if possible.
|
||||
$language = JFactory::getLanguage();
|
||||
foreach ($branches[$bk]->nodes as $node_id => $node)
|
||||
{
|
||||
$key = FinderHelperLanguage::branchPlural($node->title);
|
||||
if ($language->hasKey($key))
|
||||
{
|
||||
$branches[$bk]->nodes[$node_id]->title = JText::_($key);
|
||||
}
|
||||
}
|
||||
|
||||
// Add the Search All option to the branch.
|
||||
array_unshift($branches[$bk]->nodes, array('id' => null, 'title' => JText::_('COM_FINDER_FILTER_SELECT_ALL_LABEL')));
|
||||
}
|
||||
|
||||
// Store the data in cache.
|
||||
$cache->store($branches, $cacheId);
|
||||
}
|
||||
|
||||
$html = '';
|
||||
|
||||
// Add the dates if enabled.
|
||||
if ($showDates)
|
||||
{
|
||||
$html .= JHtml::_('filter.dates', $idxQuery, $options);
|
||||
}
|
||||
|
||||
$html .= '<div id="finder-filter-select-list" class="form-horizontal">';
|
||||
|
||||
// Iterate through all branches and build code.
|
||||
foreach ($branches as $bk => $bv)
|
||||
{
|
||||
// If the multi-lang plug-in is enabled then drop the language branch.
|
||||
if ($bv->title == 'Language' && JLanguageMultilang::isEnabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$active = null;
|
||||
|
||||
// Check if the branch is in the filter.
|
||||
if (array_key_exists($bv->title, $idxQuery->filters))
|
||||
{
|
||||
// Get the request filters.
|
||||
$temp = JFactory::getApplication()->input->request->get('t', array(), 'array');
|
||||
|
||||
// Search for active nodes in the branch and get the active node.
|
||||
$active = array_intersect($temp, $idxQuery->filters[$bv->title]);
|
||||
$active = count($active) === 1 ? array_shift($active) : null;
|
||||
}
|
||||
|
||||
$html .= '<div class="filter-branch' . $classSuffix . ' control-group">';
|
||||
$html .= '<label for="tax-' . JFilterOutput::stringUrlSafe($bv->title) . '" class="control-label">';
|
||||
$html .= JText::sprintf('COM_FINDER_FILTER_BRANCH_LABEL', JText::_(FinderHelperLanguage::branchSingular($bv->title)));
|
||||
$html .= '</label>';
|
||||
$html .= '<div class="controls">';
|
||||
$html .= JHtml::_(
|
||||
'select.genericlist', $branches[$bk]->nodes, 't[]', 'class="inputbox"', 'id', 'title', $active,
|
||||
'tax-' . JFilterOutput::stringUrlSafe($bv->title)
|
||||
);
|
||||
$html .= '</div>';
|
||||
$html .= '</div>';
|
||||
}
|
||||
|
||||
// Close the widget.
|
||||
$html .= '</div>';
|
||||
|
||||
// Load the CSS/JS resources.
|
||||
if ($loadMedia)
|
||||
{
|
||||
JHtml::stylesheet('com_finder/sliderfilter.css', false, true, false);
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to generate fields for filtering dates
|
||||
*
|
||||
* @param FinderIndexerQuery $idxQuery A FinderIndexerQuery object.
|
||||
* @param array $options An array of options.
|
||||
*
|
||||
* @return mixed A rendered HTML widget on success, null otherwise.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public static function dates($idxQuery, $options)
|
||||
{
|
||||
$html = '';
|
||||
|
||||
// Get the configuration options.
|
||||
$classSuffix = $options->get('class_suffix', null);
|
||||
$loadMedia = $options->get('load_media', true);
|
||||
$showDates = $options->get('show_date_filters', false);
|
||||
|
||||
if (!empty($showDates))
|
||||
{
|
||||
// Build the date operators options.
|
||||
$operators = array();
|
||||
$operators[] = JHtml::_('select.option', 'before', JText::_('COM_FINDER_FILTER_DATE_BEFORE'));
|
||||
$operators[] = JHtml::_('select.option', 'exact', JText::_('COM_FINDER_FILTER_DATE_EXACTLY'));
|
||||
$operators[] = JHtml::_('select.option', 'after', JText::_('COM_FINDER_FILTER_DATE_AFTER'));
|
||||
|
||||
// Load the CSS/JS resources.
|
||||
if ($loadMedia)
|
||||
{
|
||||
JHtml::stylesheet('com_finder/dates.css', false, true, false);
|
||||
}
|
||||
|
||||
// Open the widget.
|
||||
$html .= '<ul id="finder-filter-select-dates">';
|
||||
|
||||
// Start date filter.
|
||||
$html .= '<li class="filter-date' . $classSuffix . '">';
|
||||
$html .= '<label for="filter_date1">';
|
||||
$html .= JText::_('COM_FINDER_FILTER_DATE1');
|
||||
$html .= '</label>';
|
||||
$html .= '<br />';
|
||||
$html .= JHtml::_(
|
||||
'select.genericlist', $operators, 'w1', 'class="inputbox filter-date-operator"', 'value', 'text', $idxQuery->when1, 'finder-filter-w1'
|
||||
);
|
||||
$html .= JHtml::calendar($idxQuery->date1, 'd1', 'filter_date1', '%Y-%m-%d', 'title="' . JText::_('COM_FINDER_FILTER_DATE1_DESC') . '"');
|
||||
$html .= '</li>';
|
||||
|
||||
// End date filter.
|
||||
$html .= '<li class="filter-date' . $classSuffix . '">';
|
||||
$html .= '<label for="filter_date2">';
|
||||
$html .= JText::_('COM_FINDER_FILTER_DATE2');
|
||||
$html .= '</label>';
|
||||
$html .= '<br />';
|
||||
$html .= JHtml::_(
|
||||
'select.genericlist', $operators, 'w2', 'class="inputbox filter-date-operator"', 'value', 'text', $idxQuery->when2, 'finder-filter-w2'
|
||||
);
|
||||
$html .= JHtml::calendar($idxQuery->date2, 'd2', 'filter_date2', '%Y-%m-%d', 'title="' . JText::_('COM_FINDER_FILTER_DATE2_DESC') . '"');
|
||||
$html .= '</li>';
|
||||
|
||||
// Close the widget.
|
||||
$html .= '</ul>';
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
}
|
1
components/com_finder/helpers/html/index.html
Normal file
1
components/com_finder/helpers/html/index.html
Normal file
@ -0,0 +1 @@
|
||||
<!DOCTYPE html><title></title>
|
164
components/com_finder/helpers/html/query.php
Normal file
164
components/com_finder/helpers/html/query.php
Normal file
@ -0,0 +1,164 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Query HTML behavior class for Finder.
|
||||
*
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
abstract class JHtmlQuery
|
||||
{
|
||||
/**
|
||||
* Method to get the explained (human-readable) search query.
|
||||
*
|
||||
* @param FinderIndexerQuery $query A FinderIndexerQuery object to explain.
|
||||
*
|
||||
* @return mixed String if there is data to explain, null otherwise.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public static function explained(FinderIndexerQuery $query)
|
||||
{
|
||||
$parts = array();
|
||||
|
||||
// Process the required tokens.
|
||||
foreach ($query->included as $token)
|
||||
{
|
||||
if ($token->required && (!isset($token->derived) || $token->derived == false))
|
||||
{
|
||||
$parts[] = '<span class="query-required">' . JText::sprintf('COM_FINDER_QUERY_TOKEN_REQUIRED', $token->term) . '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
// Process the optional tokens.
|
||||
foreach ($query->included as $token)
|
||||
{
|
||||
if (!$token->required && (!isset($token->derived) || $token->derived == false))
|
||||
{
|
||||
$parts[] = '<span class="query-optional">' . JText::sprintf('COM_FINDER_QUERY_TOKEN_OPTIONAL', $token->term) . '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
// Process the excluded tokens.
|
||||
foreach ($query->excluded as $token)
|
||||
{
|
||||
if (!isset($token->derived) || $token->derived == false)
|
||||
{
|
||||
$parts[] = '<span class="query-excluded">' . JText::sprintf('COM_FINDER_QUERY_TOKEN_EXCLUDED', $token->term) . '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
// Process the start date.
|
||||
if ($query->date1)
|
||||
{
|
||||
$date = JFactory::getDate($query->date1)->format(JText::_('DATE_FORMAT_LC'));
|
||||
$parts[] = '<span class="query-start-date">' . JText::sprintf('COM_FINDER_QUERY_START_DATE', $query->when1, $date) . '</span>';
|
||||
}
|
||||
|
||||
// Process the end date.
|
||||
if ($query->date2)
|
||||
{
|
||||
$date = JFactory::getDate($query->date2)->format(JText::_('DATE_FORMAT_LC'));
|
||||
$parts[] = '<span class="query-end-date">' . JText::sprintf('COM_FINDER_QUERY_END_DATE', $query->when2, $date) . '</span>';
|
||||
}
|
||||
|
||||
// Process the taxonomy filters.
|
||||
if (!empty($query->filters))
|
||||
{
|
||||
// Get the filters in the request.
|
||||
$t = JFactory::getApplication()->input->request->get('t', array(), 'array');
|
||||
|
||||
// Process the taxonomy branches.
|
||||
foreach ($query->filters as $branch => $nodes)
|
||||
{
|
||||
// Process the taxonomy nodes.
|
||||
$lang = JFactory::getLanguage();
|
||||
foreach ($nodes as $title => $id)
|
||||
{
|
||||
// Translate the title for Types
|
||||
$key = FinderHelperLanguage::branchPlural($title);
|
||||
if ($lang->hasKey($key))
|
||||
{
|
||||
$title = JText::_($key);
|
||||
}
|
||||
|
||||
// Don't include the node if it is not in the request.
|
||||
if (!in_array($id, $t))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Add the node to the explanation.
|
||||
$parts[] = '<span class="query-taxonomy">'
|
||||
. JText::sprintf('COM_FINDER_QUERY_TAXONOMY_NODE', $title, JText::_(FinderHelperLanguage::branchSingular($branch)))
|
||||
. '</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build the interpreted query.
|
||||
return count($parts) ? JText::sprintf('COM_FINDER_QUERY_TOKEN_INTERPRETED', implode(JText::_('COM_FINDER_QUERY_TOKEN_GLUE'), $parts)) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get the suggested search query.
|
||||
*
|
||||
* @param FinderIndexerQuery $query A FinderIndexerQuery object.
|
||||
*
|
||||
* @return mixed String if there is a suggestion, false otherwise.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public static function suggested(FinderIndexerQuery $query)
|
||||
{
|
||||
$suggested = false;
|
||||
|
||||
// Check if the query input is empty.
|
||||
if (empty($query->input))
|
||||
{
|
||||
return $suggested;
|
||||
}
|
||||
|
||||
// Check if there were any ignored or included keywords.
|
||||
if (count($query->ignored) || count($query->included))
|
||||
{
|
||||
$suggested = $query->input;
|
||||
|
||||
// Replace the ignored keyword suggestions.
|
||||
foreach (array_reverse($query->ignored) as $token)
|
||||
{
|
||||
if (isset($token->suggestion))
|
||||
{
|
||||
$suggested = str_replace($token->term, $token->suggestion, $suggested);
|
||||
}
|
||||
}
|
||||
|
||||
// Replace the included keyword suggestions.
|
||||
foreach (array_reverse($query->included) as $token)
|
||||
{
|
||||
if (isset($token->suggestion))
|
||||
{
|
||||
$suggested = str_replace($token->term, $token->suggestion, $suggested);
|
||||
}
|
||||
}
|
||||
|
||||
// Check if we made any changes.
|
||||
if ($suggested == $query->input)
|
||||
{
|
||||
$suggested = false;
|
||||
}
|
||||
}
|
||||
|
||||
return $suggested;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user