function search_by_page_paths_search_by_page_details in Search by Page 8
Implements Search by Page hook_search_by_page_details().
Reads details information stored in the database, extracts snippet if necessary, and returns it.
File
- search_by_page_paths/
search_by_page_paths.module, line 97 - Module file for Search by Page Paths, a sub-module for Search by Page.
Code
function search_by_page_paths_search_by_page_details($id, $environment, $keys = NULL) {
// Get info from DB
$item = \Drupal::database()
->query('SELECT p.pid, p.title, p.page_path, p.page_type, p.snippet FROM {sbpp_path} p WHERE p.pid = :pid', array(
':pid' => $id,
))
->fetchObject();
if (!$item->pid) {
return NULL;
}
// Translate if necessary
if (\Drupal::moduleHandler()
->moduleExists('i18n_string')) {
$code = 'search_by_page_paths:path:' . $item->pid . ':';
$item->title = i18n_string_translate($code . 'title', $item->title);
$item->page_type = i18n_string_translate($code . 'type', $item->page_type);
$snip = drupal_strtolower($item->snippet);
if ($snip != 'yes' && $snip != 'no' && $keys) {
$item->snippet = i18n_string_translate($code . 'snippet', $item->snippet);
}
}
// Basic page info.
$ret = array(
'type' => $item->page_type,
'title' => search_by_page_strip_tags($item->title, $environment),
);
// Snippet -- DB either stores "yes", "no", or a custom snippet to use.
$code = mb_strtolower($item->snippet);
if ($code == 'yes' && $keys) {
$content = search_by_page_stored_page_content('search_by_page_paths', $id, $environment);
if ($content) {
$ret['snippet'] = \Drupal::service('search_by_page.settings')
->excerpt($keys, $content);
}
}
elseif ($code != 'no' && $keys) {
// User-supplied custom snippet.
$ret['snippet'] = search_by_page_strip_tags($item->snippet, $environment);
}
return $ret;
}