You are here

function ext_search_page_load_pages in Extended search page 7

Pages loader.

Parameters

int|array $options: A page Id or an array of options :

  • type : main entity type
  • extended : extended pages only
7 calls to ext_search_page_load_pages()
ext_search_admin_menu_alter in ext_search_admin/ext_search_admin.module
Implements hook_menu_alter().
ext_search_admin_settings in ext_search_admin/ext_search_admin.admin.inc
Form builder; ext search admin settings form.
ext_search_node_ref_autocomplete in ext_search_node_ref/ext_search_node_ref.module
Menu callback for the autocomplete results.
ext_search_node_ref_field_widget_settings_form in ext_search_node_ref/ext_search_node_ref.module
Implements hook_field_widget_settings_form().
ext_search_page_block_info in ./ext_search_page.module
Implements hook_block_info().

... See full list

File

./ext_search_page.module, line 1069
Extended search page module.

Code

function ext_search_page_load_pages($options = array()) {
  $pages =& drupal_static(__FUNCTION__, NULL);
  $pages_by_type =& drupal_static(__FUNCTION__ . '_by_type', array());
  $id = NULL;
  $retid = FALSE;
  if (!is_array($options)) {
    $id = $options;
    $retid = TRUE;
    $options = array();
  }
  if (!$pages) {
    $pages = array();
    foreach (entity_load('search_api_page', FALSE, array(
      'enabled' => 1,
    ), TRUE) as $page) {
      if (is_string($page->options)) {
        $page->options = unserialize($page->options);
      }
      if (isset($page->ext_search_options) && is_string($page->ext_search_options)) {
        $page->ext_search_options = (array) unserialize($page->ext_search_options);
      }
      $index = search_api_index_load($page->index_id);
      $pages[$page->id] = $page;
      $pages_by_type[ext_search_page_get_native_type($index->item_type)][$page->id] = $page;
    }
  }
  if ($retid) {
    if (isset($pages[$id])) {
      return $pages[$id];
    }
    return NULL;
  }
  if (isset($options['type'])) {
    if (isset($pages_by_type[$options['type']])) {
      $res = $pages_by_type[$options['type']];
    }
    else {
      $res = array();
    }
  }
  else {
    $res = $pages;
  }
  if (isset($options['extended']) || isset($options['block'])) {
    foreach (array_keys($res) as $id) {
      if (isset($options['extended'])) {
        if (!isset($res[$id]->ext_search_options['enabled'])) {
          $res[$id]->ext_search_options['enabled'] = FALSE;
        }
        if ($res[$id]->ext_search_options['enabled'] != $options['extended']) {
          unset($res[$id]);
        }
        continue;
      }
      if (isset($options['block'])) {
        if (!isset($res[$id]->ext_search_options['block'])) {
          $res[$id]->ext_search_options['block'] = FALSE;
        }
        if ($res[$id]->ext_search_options['block'] != $options['block']) {
          unset($res[$id]);
        }
        continue;
      }
    }
  }
  return $res;
}