$page_title = elgg_echo('search:results', ["\"{$display_query}\""]); } $vars['page_title'] = $page_title; // show loader or direct page $loader = (int) get_input('loader', 0); $search_with_loader = false; if (elgg_get_plugin_setting('search_with_loader', 'search_advanced') == 'yes') { $search_with_loader = true; } if ($search_with_loader && !elgg_is_xhr()) { // show loader $page_data = elgg_view_layout('one_column', ['content' => elgg_view('search_advanced/loader')]); echo elgg_view_page($page_title, $page_data); return; } if (search_advanced_get_list_type() == 'compact') { $limit = $search_type == 'all' ? 5 : get_input('limit', 20); } else { $limit = $search_type == 'all' ? 2 : get_input('limit', 10); } // set up search params $params = array('query' => $query, 'offset' => $search_type == 'all' ? 0 : get_input('offset', 0), 'limit' => $limit, 'sort' => get_input('sort', 'relevance'), 'order' => get_input('order', 'desc'), 'search_type' => $search_type, 'type' => $entity_type, 'subtype' => get_input('entity_subtype'), 'owner_guid' => get_input('owner_guid'), 'container_guid' => get_input('container_guid'), 'pagination' => $search_type == 'all' ? false : true, 'search_filter' => (array) get_input('filter', [])); $params = elgg_trigger_plugin_hook('search_params', 'search', $params, $params); // check and show error page $error_vars = $vars; $error_vars['params'] = $params; $error_output = elgg_view('search_advanced/error', $error_vars); if ($error_output) { echo $error_output; return; }
/** * Registers menu items related to search results listing * * @param string $hook name of hook * @param string $type type of hook * @param unknown_type $value current value * @param array $params parameters * * @return array */ function search_advanced_register_menu_list($hook, $type, $value, $params) { $result = $value; $url = search_advanced_get_search_url(); $current_list_type = search_advanced_get_list_type(); $title = elgg_echo('search_advanced:menu:search_list:list:title'); $result[] = ElggMenuItem::factory(['name' => 'list', 'text' => elgg_view_icon('list'), 'href' => '#', 'title' => $title, 'priority' => 999]); $result[] = ElggMenuItem::factory(['name' => 'list_entity', 'text' => elgg_echo('search_advanced:menu:search_list:entity'), 'href' => elgg_http_add_url_query_elements($url, ['list_type' => 'entity']), 'parent_name' => 'list', 'selected' => $current_list_type === 'entity', 'title' => $title]); $result[] = ElggMenuItem::factory(['name' => 'list_compact', 'text' => elgg_echo('search_advanced:menu:search_list:compact'), 'href' => elgg_http_add_url_query_elements($url, ['list_type' => 'compact']), 'parent_name' => 'list', 'selected' => $current_list_type === 'compact', 'title' => $title]); return $result; }
} elseif ($type) { $title = elgg_echo("item:{$type}"); } elseif (in_array('entities', [$type, $search_type])) { $title = elgg_echo("search_advanced:content:title"); } else { $title = elgg_echo('search:unknown_entity'); } // allow overrides for titles if (elgg_language_key_exists("search_types:{$search_type}")) { $title = elgg_echo("search_types:{$search_type}"); } $list_items = ''; foreach ($entities as $entity) { $view = search_advanced_get_search_view(['type' => $entity->type, 'subtype' => $entity->getSubtype(), 'search_type' => $search_type], search_advanced_get_list_type()); if (empty($view)) { continue; } $entity_params = ['entity' => $entity, 'params' => $vars['params'], 'results' => $vars['results']]; $list_item = elgg_view('search_advanced/search/floating_tag', $entity_params); $list_item .= elgg_view($view, $entity_params); $list_items .= elgg_format_element('li', ['id' => "elgg-{$entity->getType()}-{$entity->getGUID()}", 'class' => 'elgg-item'], $list_item); } $header = elgg_format_element('h3', [], $title); if ($show_more) { $url = search_advanced_get_search_url(['limit' => null, 'search_type' => $search_type, 'entity_type' => $type, 'entity_subtype' => $subtype]); $more_link = elgg_view('output/url', ['href' => $url, 'text' => elgg_echo('search:more', array($count, $title)), 'class' => 'search-more float-alt']); $header = $more_link . $header; } $body = elgg_format_element('ul', ['class' => 'elgg-list search-list search-list-type-' . search_advanced_get_list_type()], $list_items); $body .= $nav; echo elgg_view_module('info', '', $body, ['header' => $header]);
/** * Passes results, and original params to the view functions for * search type. * * @param array $results * @param array $params * @param string $view_type = list, entity or layout * @return string */ function search_advanced_get_search_view($params, $view_type) { if (in_array($view_type, ['entity', 'list', 'layout'])) { return search_get_search_view($params, $view_type); } $list_type = search_advanced_get_list_type(); $view_order = []; if (isset($params['type']) && $params['type'] && isset($params['subtype']) && $params['subtype']) { $view_order[] = "search/{$params['type']}/{$params['subtype']}/{$list_type}"; } // also check for the default type if (isset($params['type']) && $params['type']) { $view_order[] = "search/{$params['type']}/{$list_type}"; } // check search types if (isset($params['search_type']) && $params['search_type']) { $view_order[] = "search/{$params['search_type']}/{$list_type}"; } // finally default to a search list default $view_order[] = "search/{$list_type}"; foreach ($view_order as $view) { if (elgg_view_exists($view)) { return $view; } } return search_get_search_view($params, 'entity'); }