views_search_autocomplete_style.theme.inc in Search Autocomplete 7.4
Same filename and directory in other branches
Views theme to render view fields as JSON.
- $view: The view in use.
- $rows: Array of row objects as rendered by
_search_autocomplete_render_fields
- $options: The options for the style passed in from the UI.
See also
File
views/theme/views_search_autocomplete_style.theme.incView source
<?php
/**
* @file
* Views theme to render view fields as JSON.
*
* - $view: The view in use.
* - $rows: Array of row objects as rendered by
* _search_autocomplete_render_fields
* - $options: The options for the style passed in from the UI.
*
* @ingroup views_templates
* @see search_autocomplete.views.inc
*/
/**
* Prepares variables for views search autocomplete styles templates.
*
* Default template: views-search-autocomplete-style.tpl.php
*
* @param array $vars
* An associative array containing:
* - view: The view object to style.
* - rows: An array of rows to render.
* - options: An array of style options.
*
* @ingroup themeable
*/
function template_preprocess_views_search_autocomplete_style(&$vars) {
global $base_root;
$view = $vars['view'];
$rows = $vars['rows'];
$style_options = $vars['options'];
$arg = '';
if (array_key_exists(0, $view->args)) {
$arg = $view->args[0] ? $view->args[0] : '';
}
$objects = array();
$vars['bitmask'] = NULL;
foreach ($rows as $row) {
$object = array();
/* ----------------
* Build the link...
* ---------------- */
// Extract the URL...
$regexp = "<a\\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\\/a>";
$link_value = $row[$style_options['input_link']]->raw;
if (preg_match("/{$regexp}/siU", htmlspecialchars_decode($row[$style_options['input_link']]->content, ENT_QUOTES), $matches)) {
$link_value = $matches[2];
}
if (url_is_external($link_value) || valid_url($link_value, TRUE)) {
$link = $link_value;
}
else {
$link = $base_root . $link_value;
}
// And build the link object.
$object['link'] = trim($link);
/* ----------------
* Build the value...
* ---------------- */
$object['value'] = filter_xss(htmlspecialchars_decode(trim($row[$style_options['input_label']]->content, ENT_QUOTES)));
/* ----------------
* Build the array of output fields...
* ---------------- */
$object['fields'] = array();
foreach ($style_options['output_fields'] as $field_name) {
// Add the field if the value is not null.
if (array_key_exists($field_name, $row) && $row[$field_name] && $row[$field_name]->content) {
$object['fields'][$field_name] = filter_xss(htmlspecialchars_decode(trim($row[$field_name]->label . ' ' . $row[$field_name]->content), ENT_QUOTES), array(
'a',
'em',
'strong',
'cite',
'blockquote',
'code',
'ul',
'ol',
'li',
'dl',
'dt',
'dd',
'img',
));
}
}
/* ----------------
* Sort by group objects if needed.
* ---------------- */
if ($style_options['group_by']) {
$group_type = $style_options['group_by'];
$group_name = $row[$group_type]->content;
if (!isset($objects[$group_name])) {
$objects[$group_name] = array();
}
$objects[$group_name][] = $object;
}
else {
$objects[] = $object;
}
}
/* ----------------
* Build group info if grouping is enabled.
* ---------------- */
$returns = array();
if ($style_options['group_by']) {
foreach ($objects as $group_name => $group) {
$group[0]['group']['group_id'] = preg_replace('/\\W+/', '', strtolower(strip_tags($group_name)));
$group[0]['group']['group_name'] = trim($group_name);
$returns = array_merge($returns, $group);
}
$vars["rows"] = $returns;
}
else {
// Check if user wants nested arrays.
$vars["rows"] = $objects;
}
/* ----------------
* Add $no_results and $all_results if needed.
* ---------------- */
if (!empty($view->autocompletion_data)) {
// Check case between $no_results and $all_results
if (empty($vars["rows"])) {
// No results case.
$no_results = str_replace('[search-phrase]', $view->autocompletion_data['user_input'], $view->autocompletion_data['no_results']);
$suggestion = json_decode($no_results);
}
else {
// All results case.
$no_results = str_replace('[search-phrase]', $view->autocompletion_data['user_input'], $view->autocompletion_data['all_results']);
$suggestion = json_decode($no_results);
}
if (!empty($suggestion->label)) {
$suggestion->fields['label'] = html_entity_decode(stripslashes(str_replace('[search-phrase]', $view->autocompletion_data['user_input'], $suggestion->label)));
}
$vars["rows"][] = $suggestion;
}
}
Functions
Name | Description |
---|---|
template_preprocess_views_search_autocomplete_style | Prepares variables for views search autocomplete styles templates. |