annotate solrsearch_search.admin.inc @ 0:a2b4f67e73dc default tip

initial
author Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
date Mon, 08 Jun 2015 10:21:54 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 <?php
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 * @file
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 * Administrative settings for searching.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
7
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 * Helper function for empty search configuration.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 function _solrsearch_search_browse_form($default_value) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 $description = t('This is what is shown when the user enters an empty search, or removes all filters from an active search.') . ' ';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 if (!module_exists('facetapi')) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 $description .= t('<strong>Facets will not be shown until you enable Facet API module.</strong>');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 $description .= t('Remember to configure the facets on the <a href="!facetslink">search environment page</a> and assign blocks to regions on the <a href="!blocklink">block settings page</a>', array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 '!facetslink' => url('admin/config/search/solrsearch/settings/'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 '!blocklink' => url('admin/structure/block'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 ));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 return array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 '#type' => 'radios',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 '#title' => t('Behavior on empty search'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 '#options' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 'none' => t("Show search box"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 'browse' => t("Show enabled facets' blocks under the search box"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 'blocks' => t("Show enabled facets' blocks in their configured regions"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 'results' => t("Show enabled facets' blocks in their configured regions and first page of all available results"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 '#default_value' => $default_value,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 '#description' => $description,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
35
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 * Menu callback for the overview page showing custom search pages and blocks.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 * @return array $build
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 function solrsearch_search_page_list_all() {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
41
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 $build['pages'] = solrsearch_search_page_list_pages();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 $build['blocks'] = solrsearch_search_page_list_blocks();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 return $build;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
45
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
47
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
48
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 * Listing of all the search pages
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 * @return array $build
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 function solrsearch_search_page_list_pages() {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 $build = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 $rows = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 $rows['core_solr_search'] = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
57
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 // Build the sortable table header.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 $header = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 'label' => array('data' => t('Name'), 'field' => 's.label'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 'path' => array('data' => t('Path'), 'field' => 's.search_path'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 'environment' => array('data' => t('Search environment')),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 'operations' => array('data' => t('Operations')),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
65
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 $search_pages = solrsearch_search_load_all_search_pages();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 $default_search_page = solrsearch_search_default_search_page();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 foreach ($search_pages as $search_page) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 $row = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
70
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 // Add the label
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 $label = check_plain($search_page['label']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 // Is this row our default environment?
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 if ($search_page['page_id'] == $default_search_page) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 $label = t('!search_page <em>(Default)</em>', array('!search_page' => $label));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
77
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 $row[] = $label;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 // Add the link
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 $row[] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 'data' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 '#type' => 'link',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 '#title' => $search_page['search_path'],
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 '#href' => $search_page['search_path'],
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
87
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 // Add the search environment
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 $environment = solrsearch_environment_load($search_page['env_id']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 $row[] = $environment ? check_plain($environment['name']) : check_plain(t('<Disabled>'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 // Operations
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 $row[] = array('data' => l(t('Edit'), 'admin/config/search/solrsearch/search-pages/' . $search_page['page_id'] . '/edit'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 $row[] = array('data' => l(t('Clone'), 'admin/config/search/solrsearch/search-pages/' . $search_page['page_id'] . '/clone'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
94
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 // Allow to revert a search page or to delete it
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 if (!isset($search_page['settings']['solrsearch_search_not_removable']) && !isset($search_page['in_code_only'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 if ((isset($search_page['type']) && $search_page['type'] == 'Overridden')) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 $row[] = array('data' => l(t('Revert'), 'admin/config/search/solrsearch/search-pages/' . $search_page['page_id'] . '/delete'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 } else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 $row[] = array('data' => l(t('Delete'), 'admin/config/search/solrsearch/search-pages/' . $search_page['page_id'] . '/delete'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
101 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
104 $row[] = '';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 $rows[$search_page['page_id']] = $row;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
108
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
109 // Automatically enlarge our header with the operations size
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
110 $header['operations']['colspan'] = count(reset($rows)) - 3;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
111
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
112 $build['list'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
113 '#prefix' => '<h3>Pages</h3>',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 '#theme' => 'table',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
115 '#header' => $header,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
116 '#rows' => array_values($rows),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
117 '#empty' => t('No available search pages.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
118 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
119 $build['pager'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
120 '#theme' => 'pager',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
121 '#quantity' => 20,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
122 '#weight' => 10,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
123 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
124
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
125 return $build;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
126 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
127
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
128 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
129 * Listing of all the search blocks
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
130 * @return array $build
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
131 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
132 function solrsearch_search_page_list_blocks() {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
133 $build = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 $rows = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
135
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 // Build the sortable table header.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 $header = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 'label' => array('data' => t('Name'), 'field' => 's.label'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 'environment' => array('data' => t('Search environment')),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
140 'operations' => array('data' => t('Operations')),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
141 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
142
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
143 $search_blocks = variable_get('solrsearch_search_mlt_blocks', array());
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
144 foreach ($search_blocks as $search_block_id => $search_block) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 $row = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
146
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
147 // Add the label
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
148 $label = check_plain($search_block['name']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
149 $row[] = $label;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
150
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 // Add the search environment
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
152 $environment = solrsearch_environment_load($search_block['mlt_env_id']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
153 $row[] = $environment ? check_plain($environment['name']) : check_plain(t('<Disabled>'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
154 // Operations
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
155 if (module_exists('block')) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
156 $row[] = array('data' => l(t('Configure'), 'admin/structure/block/manage/solrsearch_search/' . $search_block_id . '/configure', array('query' => array('destination' => current_path()))));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
157 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
158 $row[] = array('data' => l(t('Delete'), 'admin/config/search/solrsearch/search-pages/block/' . $search_block_id . '/delete'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
159 $rows[$search_block_id] = $row;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
160 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
161
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
162 // Automatically enlarge our header with the operations size
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
163 $header['operations']['colspan'] = count(reset($rows)) - 2;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
164
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
165 $build['list'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
166 '#prefix' => '<h3>Blocks "More Like This"</h3>',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
167 '#theme' => 'table',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
168 '#header' => $header,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
169 '#rows' => array_values($rows),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
170 '#empty' => t('No available search blocks.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
171 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
172 $build['pager'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
173 '#theme' => 'pager',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
174 '#quantity' => 20,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
175 '#weight' => 10,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
176 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
177
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
178 return $build;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
179 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
180
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
181 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
182 * Menu callback/form-builder for the form to create or edit a search page.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
183 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
184 function solrsearch_search_page_settings_form($form, &$form_state, $search_page = NULL) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
185 $environments = solrsearch_load_all_environments();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
186 $options = array('' => t('<Disabled>'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 foreach ($environments as $id => $environment) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 $options[$id] = $environment['name'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
189 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 // Validate the env_id.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
191 if (!empty($search_page['env_id']) && !solrsearch_environment_load($search_page['env_id'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
192 $search_page['env_id'] = '';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
193 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
194
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 // Initializes form with common settings.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
196 $form['search_page'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
197 '#type' => 'value',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
198 '#value' => $search_page,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
199 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
200
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
201 $form['label'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
202 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
203 '#title' => t('Label'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
204 '#description' => '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
205 '#required' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
206 '#size' => 30,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
207 '#maxlength' => 32,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
208 '#default_value' => !empty($search_page['label']) ? $search_page['label'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
209 '#description' => t('The human-readable name of the search page configuration.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
210 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
211
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
212 $form['page_id'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
213 '#type' => 'machine_name',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
214 '#maxlength' => 32,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
215 '#required' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
216 '#machine_name' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
217 'exists' => 'solrsearch_search_page_exists',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
218 'source' => array('label'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
219 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
220 '#description' => '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
221 '#default_value' => !empty($search_page['page_id']) ? $search_page['page_id'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
222 '#disabled' => !empty($search_page),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
223 '#description' => t('A unique machine-readable identifier for the search page configuration. It must only contain lowercase letters, numbers, and underscores.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
224 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
225
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
226 $form['description_enable'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
227 '#type' => 'checkbox',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
228 '#title' => t('Description'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
229 '#default_value' => !empty($search_page['description']) ? TRUE : FALSE
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
230 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
231
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
232 $form['description'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
233 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
234 '#title' => t('Provide description'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
235 '#title_display' => 'invisible',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
236 '#size' => 64,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
237 '#default_value' => !empty($search_page['description']) ? $search_page['description'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
238 '#dependency' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
239 'edit-description-enable' => array(1),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
240 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
241 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
242
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
243 $is_default = FALSE;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
244 if (!empty($search_page)) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
245 $is_default = $search_page['page_id'] == solrsearch_search_default_search_page();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
246 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
247 $form['make_default'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
248 '#type' => 'checkbox',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
249 '#title' => t('Make this Solr Search Page the default'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
250 '#description' => t('Useful for eg. making facets to link to this page when they are shown on non-search pages'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
251 '#default_value' => $is_default,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
252 '#disabled' => $is_default,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
253 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
254
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
255 $form['info'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
256 '#title' => t('Search Page Information'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
257 '#type' => 'fieldset',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
258 '#collapsible' => FALSE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
259 '#prefix' => '<div id="dynamic-search-page">',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
260 '#suffix' => '</div>',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
261 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
262
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
263 $core_solr_search = FALSE;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
264 if (!empty($search_page['page_id']) && ($search_page['page_id'] == 'core_solr_search')) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
265 $core_solr_search = TRUE;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
266 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
267 if ($core_solr_search) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
268 $description = t('This page always uses the current default search environment');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
269 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
270 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
271 $description = t('The environment that is used by this search page. If no environment is selected, this page will be disabled.');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
272 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
273
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
274 $form['info']['env_id'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
275 '#title' => t('Search environment'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
276 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
277 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
278 '#default_value' => !empty($search_page['env_id']) ? $search_page['env_id'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
279 '#disabled' => $core_solr_search,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
280 '#description' => $description,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
281 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
282
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
283 $form['info']['page_title'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
284 '#title' => t('Title'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
285 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
286 '#required' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
287 '#maxlength' => 255,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
288 '#description' => 'You can use %value to place the search term in the title',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
289 '#default_value' => !empty($search_page['page_title']) ? $search_page['page_title'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
290 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
291
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
292 $search_types = solrsearch_search_load_all_search_types();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
293 $options = array('custom' => t('Custom Field'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
294 foreach ($search_types as $id => $search_type) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
295 $options[$id] = $search_type['name'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
296 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
297
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
298 $form['info']['search_type'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
299 '#title' => t('Search Type'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
300 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
301 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
302 '#default_value' => !empty($search_page['settings']['solrsearch_search_search_type']) ? $search_page['settings']['solrsearch_search_search_type'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
303 '#access' => !$core_solr_search,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
304 '#description' => t('Use this only when filtering on a value from the search path.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
305 For example, select Taxonomy Term to filter on a term ID (search/taxonomy/%).'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
306 '#ajax' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
307 'callback' => 'solrsearch_search_ajax_search_page_default',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
308 'wrapper' => 'dynamic-search-page',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
309 'method' => 'replace',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
310 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
311 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
312
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
313 // Token element validate is added to validate the specific
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
314 // tokens that are allowed
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
315 $form['info']['search_path'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
316 '#title' => t('Path'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
317 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
318 '#required' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
319 '#maxlength' => 255,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
320 '#description' => t('For example: search/my-search-page. Search keywords will appear at the end of the path.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
321 '#default_value' => !empty($search_page['search_path']) ? $search_page['search_path'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
322 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
323 if (!$core_solr_search) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
324 $form['info']['search_path']['#description'] .= ' ' . t('You can use one % to make the search page dynamic.');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
325 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
326
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
327 $form['info']['custom_filter_enable'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
328 '#type' => 'checkbox',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
329 '#title' => t('Custom Filter'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
330 '#default_value' => !empty($search_page['settings']['solrsearch_search_custom_enable']) ? TRUE : FALSE
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
331 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
332
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
333 $form['info']['filters'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
334 '#title' => t('Custom filters'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
335 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
336 '#required' => FALSE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
337 '#maxlength' => 255,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
338 '#description' => t('A comma-separated list of lucene filter queries to apply by default.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
339 '#default_value' => !empty($search_page['settings']['fq']) ? implode(', ', $search_page['settings']['fq']) : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
340 '#dependency' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
341 'edit-custom-filter-enable' => array(1),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
342 'edit-search-type' => array('custom'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
343 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
344 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
345 if (!$core_solr_search) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
346 $form['info']['filters']['#description'] .= ' ' . t('E.g. "bundle:blog, is_uid:(1 OR 2 OR %). % will be replaced by the value of % in the path"');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
347 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
348
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
349 $form['advanced'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
350 '#title' => t('Advanced Search Page Options'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
351 '#type' => 'fieldset',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
352 '#collapsible' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
353 '#collapsed' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
354 '#tree' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
355 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
356
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
357 // Results per page per search page
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
358 $default_value = isset($search_page['settings']['solrsearch_search_per_page']) ? $search_page['settings']['solrsearch_search_per_page'] : '10';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
359 $form['advanced']['solrsearch_search_per_page'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
360 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
361 '#size' => 3,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
362 '#title' => t('Results per page'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
363 '#description' => t('How many items will be displayed on one page of the search result.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
364 '#default_value' => $default_value,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
365 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
366
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
367 // Enable/disable spellcheck on pages
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
368 $default_value = isset($search_page['settings']['solrsearch_search_spellcheck']) ? $search_page['settings']['solrsearch_search_spellcheck'] : TRUE;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
369 $form['advanced']['solrsearch_search_spellcheck'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
370 '#type' => 'checkbox',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
371 '#title' => t('Enable spell check'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
372 '#description' => t('Display "Did you mean … ?" above search results.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
373 '#default_value' => $default_value,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
374 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
375
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
376 // Enable/disable search form on search page (replaced by a block perhaps)
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
377 $default_value = isset($search_page['settings']['solrsearch_search_search_box']) ? $search_page['settings']['solrsearch_search_search_box'] : TRUE;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
378 $form['advanced']['solrsearch_search_search_box'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
379 '#type' => 'checkbox',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
380 '#title' => t('Enable the search box on the page'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
381 '#description' => t('Display a search box on the page.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
382 '#default_value' => $default_value,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
383 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
384
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
385 // Enable/disable search form on search page (replaced by a block perhaps)
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
386 $default_value = isset($search_page['settings']['solrsearch_search_allow_user_input']) ? $search_page['settings']['solrsearch_search_allow_user_input'] : FALSE;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
387 $form['advanced']['solrsearch_search_allow_user_input'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
388 '#type' => 'checkbox',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
389 '#title' => t('Allow user input using the URL'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
390 '#description' => t('Allow users to use the URL for manual facetting via fq[] params (e.g. http://example.com/search/site/test?fq[]=uid:1&fq[]=tid:99). This will only work in combination with a keyword search. The recommended value is unchecked'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
391 '#default_value' => $default_value,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
392 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
393
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
394 // Use the main search page setting as the default for new pages.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
395 $default_value = isset($search_page['settings']['solrsearch_search_browse']) ? $search_page['settings']['solrsearch_search_browse'] : 'browse';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
396 $form['advanced']['solrsearch_search_browse'] = _solrsearch_search_browse_form($default_value);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
397
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
398 // Button for the corresponding actions
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
399 $form['actions'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
400 '#type' => 'actions',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
401 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
402
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
403 $form['actions']['submit'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
404 '#type' => 'submit',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
405 '#redirect' => 'admin/config/search/solrsearch/search-pages',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
406 '#value' => t('Save'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
407 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
408 $form['actions']['submit_edit'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
409 '#type' => 'submit',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
410 '#value' => t('Save and edit'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
411 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
412
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
413 $form['actions']['cancel'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
414 '#type' => 'link',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
415 '#title' => t('Cancel'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
416 '#href' => 'admin/config/search/solrsearch/search-pages',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
417 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
418
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
419 $form['#submit'][] = 'solrsearch_search_page_settings_form_submit';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
420
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
421 return $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
422 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
423
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
424 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
425 * Callback element needs only select the portion of the form to be updated.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
426 * Since #ajax['callback'] return can be HTML or a renderable array (or an
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
427 * array of commands), we can just return a piece of the form.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
428 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
429 function solrsearch_search_ajax_search_page_default($form, $form_state, $search_page = NULL) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
430
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
431 $search_page = $form_state['values']['search_page'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
432 $search_types = solrsearch_search_load_all_search_types();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
433
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
434 // Helping with sensible defaults for the search path
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
435 $default_search_path = '';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
436 if (!empty($form_state['values']['search_type']) && $form_state['values']['search_type'] != 'custom') {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
437 $default_search_path = $search_types[$form_state['values']['search_type']]['default menu'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
438 $form['info']['search_path']['#value'] = $default_search_path;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
439 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
440
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
441 // Helping with sensible defaults for the search title
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
442 $default_search_title = '';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
443
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
444 if (empty($form_state['values']['page_title']) && $form_state['values']['search_type'] != 'custom') {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
445 $default_search_title_callback = $search_types[$form_state['values']['search_type']]['title callback'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
446 $default_search_title = $default_search_title_callback();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
447 $form['info']['page_title']['#value'] = $default_search_title;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
448 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
449 return $form['info'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
450 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
451
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
452 function solrsearch_search_page_settings_form_validate($form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
453 // Performs basic validation of the menu path.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
454 if (url_is_external($form_state['values']['search_path'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
455 form_set_error('search_path', t('Path must be local.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
456 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
457 $form_state['values']['search_path'] = trim($form_state['values']['search_path'], '/');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
458 if (empty($form_state['values']['search_path'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
459 form_set_error('search_path', t('Path required.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
460 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
461 if (!is_numeric($form_state['values']['advanced']['solrsearch_search_per_page'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
462 form_set_error('advanced][solrsearch_search_per_page', t('The amount of search results must be an integer.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
463 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
464 $form_state['values']['advanced']['solrsearch_search_per_page'] = (int) $form_state['values']['advanced']['solrsearch_search_per_page'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
465 if (empty($form_state['values']['advanced']['solrsearch_search_per_page'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
466 form_set_error('advanced][solrsearch_search_per_page', t('The amount of search results cannot be empty.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
467 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
468 if (count(explode('%', $form_state['values']['search_path'])) > 2) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
469 form_set_error('search_path', t('Only one % placeholder is allowed.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
470 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
471 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
472
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
473 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
474 * Processes solrsearch_search_page_settings_form form submissions.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
475 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
476 function solrsearch_search_page_settings_form_submit($form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
477 $settings = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
478 $settings['fq'] = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
479 if ($form_state['values']['filters']) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
480 foreach (explode(',', $form_state['values']['filters']) as $string) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
481 $string = trim($string);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
482 // Minimal validation. ':' must exist and can't be the 1st char..
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
483 if (strpos($string, ':')) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
484 $settings['fq'][] = $string;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
485 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
486 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
487 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
488 $settings['solrsearch_search_custom_enable'] = $form_state['values']['custom_filter_enable'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
489 $settings['solrsearch_search_search_type'] = $form_state['values']['search_type'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
490 // Add all advanced settings.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
491 $settings += $form_state['values']['advanced'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
492
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
493 // Set the default search page settings
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
494 if (!empty($form_state['values']['make_default']) && isset($form_state['values']['page_id'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
495 variable_set('solrsearch_search_default_search_page', $form_state['values']['page_id']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
496 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
497
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
498 $search_page = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
499 $search_page['page_id'] = $form_state['values']['page_id'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
500 $search_page['label'] = $form_state['values']['label'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
501 $search_page['description'] = $form_state['values']['description'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
502 $search_page['env_id'] = $form_state['values']['env_id'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
503 $search_page['search_path'] = $form_state['values']['search_path'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
504 $search_page['page_title'] = $form_state['values']['page_title'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
505 $search_page['settings'] = $settings;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
506 solrsearch_search_page_save($search_page);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
507
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
508 // Saves our values in the database, sets redirect path on success.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
509 drupal_set_message(t('The configuration options have been saved for %page.', array('%page' => $form_state['values']['label'])));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
510 if (isset($form_state['clicked_button']['#redirect'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
511 $form_state['redirect'] = $form_state['clicked_button']['#redirect'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
512 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
513 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
514 $form_state['redirect'] = current_path();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
515 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
516 // Regardlessly of the destination parameter we want to go to another page
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
517 unset($_GET['destination']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
518 drupal_static_reset('drupal_get_destination');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
519 drupal_get_destination();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
520 // Menu rebuild needed to pick up search path.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
521 menu_rebuild();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
522 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
523
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
524 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
525 * Deletes a single search page configuration.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
526 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
527 function solrsearch_search_delete_search_page_confirm($form, &$form_state, $search_page) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
528
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
529 // Sets values required for deletion.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
530 $form['page_id'] = array('#type' => 'value', '#value' => $search_page['page_id']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
531 $form['label'] = array('#type' => 'value', '#value' => $search_page['label']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
532
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
533 if (isset($search_page['export_type']) && $search_page['export_type'] == '3') {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
534 $verb = t('Revert');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
535 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
536 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
537 $verb = t('Delete');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
538 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
539
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
540 // Sets the message, or the title of the page.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
541 $message = t(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
542 'Are you sure you want to !verb the %label search page configuration?',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
543 array('%label' => $form['label']['#value'], '!verb' => strtolower($verb))
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
544 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
545
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
546
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
547 // Builds caption.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
548 $caption = '<p>';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
549 $caption .= t(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
550 'The %label search page configuration will be deleted.',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
551 array('%label' => $form['label']['#value'])
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
552 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
553 $caption .= '</p>';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
554 $caption .= '<p><strong>' . t('This action cannot be undone.') . '</strong></p>';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
555
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
556 // Finalizes and returns the confirmation form.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
557 $return_path = 'admin/config/search/solrsearch/search-pages';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
558 $button_text = $verb;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
559 if (!isset($search_page['settings']['solrsearch_search_not_removable'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
560 return confirm_form($form, filter_xss($message), $return_path, filter_xss($caption), check_plain($button_text));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
561 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
562 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
563 // Maybe this should be solved somehow else
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
564 drupal_access_denied();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
565 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
566 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
567
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
568 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
569 * Process content type delete confirm submissions.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
570 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
571 function solrsearch_search_delete_search_page_confirm_submit($form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
572 // Deletes the index configuration settings.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
573 // @todo Invoke a hook that allows backends and indexers to delete their stuff.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
574 db_delete('solrsearch_search_page')
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
575 ->condition('page_id', $form_state['values']['page_id'])
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
576 ->execute();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
577
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
578 // Sets message, logs action.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
579 drupal_set_message(t(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
580 'The %label search page configuration has been deleted.',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
581 array('%label' => $form_state['values']['label'])
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
582 ));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
583 watchdog('solrsearch_search', 'Deleted search page configuration "@page_id".', array('@page_id' => $form_state['values']['page_id']), WATCHDOG_NOTICE);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
584
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
585 // Rebuilds the menu cache.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
586 menu_rebuild();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
587
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
588 // Returns back to search page list page.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
589 $form_state['redirect'] = 'admin/config/search/solrsearch/search-pages';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
590 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
591
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
592 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
593 * Clones a single search page configuration
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
594 * @param $search_page
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
595 * The search page that needs to be cloned
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
596 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
597 function solrsearch_search_clone_search_page_confirm($form, &$form_state, $search_page) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
598 $form['page_id'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
599 '#type' => 'value',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
600 '#value' => $search_page['page_id'],
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
601 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
602 return confirm_form(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
603 $form,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
604 t('Are you sure you want to clone search page %name?', array('%name' => $search_page['label'])),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
605 'admin/config/search/solrsearch',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
606 '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
607 t('Clone'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
608 t('Cancel')
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
609 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
610 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
611
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
612 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
613 * Submits the confirmations of the cloning of a search page
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
614 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
615 function solrsearch_search_clone_search_page_confirm_submit($form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
616 if (solrsearch_search_page_clone($form_state['values']['page_id'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
617 drupal_set_message(t('The search page was cloned'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
618 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
619 $form_state['redirect'] = 'admin/config/search/solrsearch/search-pages';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
620 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
621
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
622 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
623 * Menu callback - the settings form.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
624 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
625 function solrsearch_search_get_fields($environment = NULL) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
626 if (empty($environment)) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
627 $env_id = solrsearch_default_environment();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
628 $environment = solrsearch_environment_load($env_id);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
629 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
630 $env_id = $environment['env_id'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
631
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
632 // Try to fetch the schema fields.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
633 try {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
634 $solr = solrsearch_get_solr($env_id);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
635 $fields = $solr->getFields();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
636 return $fields;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
637 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
638 catch (Exception $e) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
639 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
640 drupal_set_message(nl2br(check_plain($e->getMessage())), 'warning');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
641 drupal_set_message(t('Cannot get information about the fields in the index.'), 'warning');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
642 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
643 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
644
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
645 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
646 * Menu callback - Bias settings form.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
647 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
648 function solrsearch_bias_settings_page($environment = NULL) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
649 if (empty($environment)) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
650 $env_id = solrsearch_default_environment();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
651 $environment = solrsearch_environment_load($env_id);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
652 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
653 $env_id = $environment['env_id'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
654
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
655 // Initializes output with information about which environment's setting we are
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
656 // editing, as it is otherwise not transparent to the end user.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
657 $output = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
658 'solrsearch_environment' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
659 '#theme' => 'solrsearch_settings_title',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
660 '#env_id' => $env_id,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
661 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
662 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
663
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
664 // Adds content bias and type boost forms.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
665 $fields = solrsearch_search_get_fields($environment);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
666 $form = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
667 $form = drupal_get_form('solrsearch_search_bias_form', $env_id, $fields);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
668 $output['bias_forms'] = $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
669 return $output;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
670 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
671
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
672 function solrsearch_search_bias_form($form, &$form_state, $env_id, $fields) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
673 $form['#env_id'] = $env_id;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
674 $form['bias_tabs'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
675 '#type' => 'vertical_tabs',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
676 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
677 $form['actions']['#type'] = 'actions';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
678 $form['actions']['submit'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
679 '#type' => 'submit',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
680 '#value' => t('Save configuration'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
681 '#submit' => array('solrsearch_search_bias_form_submit'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
682 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
683 $form['actions']['reset'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
684 '#type' => 'submit',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
685 '#value' => t('Reset to defaults'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
686 '#submit' => array('solrsearch_search_bias_form_reset'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
687 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
688 $form += solrsearch_search_result_bias_form($env_id);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
689 $form += solrsearch_search_type_boost_form($env_id);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
690 $form += solrsearch_search_field_bias_form($fields, $env_id);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
691 return $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
692 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
693
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
694 function solrsearch_search_bias_form_submit(&$form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
695 // Exclude unnecessary elements.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
696 form_state_values_clean($form_state);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
697 foreach ($form_state['values'] as $key => $value) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
698 if (is_array($value) && isset($form_state['values']['array_filter'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
699 $value = array_keys(array_filter($value));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
700 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
701 // There is no need to set default variable values.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
702 if (!isset($form[$key]['#default_value']) || $form[$key]['#default_value'] != $value) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
703 switch ($key) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
704 case 'solrsearch_search_sticky_boost' :
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
705 case 'solrsearch_search_promote_boost' :
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
706 case 'solrsearch_search_date_boost' :
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
707 case 'solrsearch_search_comment_boost' :
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
708 case 'solrsearch_search_changed_boost' :
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
709 case 'solrsearch_search_type_boosts' :
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
710 case 'field_bias' :
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
711 solrsearch_environment_variable_set($form['#env_id'], $key, $value);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
712 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
713 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
714 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
715 drupal_set_message(t('The configuration options have been saved.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
716 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
717
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
718 function solrsearch_search_bias_form_reset($form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
719 // Exclude unnecessary elements.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
720 form_state_values_clean($form_state);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
721
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
722 foreach ($form_state['values'] as $key => $value) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
723 solrsearch_environment_variable_del($form['#env_id'], $key);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
724 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
725 drupal_set_message(t('The configuration options have been reset to their default values.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
726 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
727
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
728 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
729 * Form builder function to set date, comment, etc biases.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
730 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
731 function solrsearch_search_result_bias_form($env_id) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
732
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
733 $date_settings = solrsearch_environment_variable_get($env_id, 'solrsearch_search_date_boost', '0:0');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
734 $comment_settings = solrsearch_environment_variable_get($env_id, 'solrsearch_search_comment_boost', '0:0');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
735 $changed_settings = solrsearch_environment_variable_get($env_id, 'solrsearch_search_changed_boost', '0:0');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
736 $sticky_boost = solrsearch_environment_variable_get($env_id, 'solrsearch_search_sticky_boost', '0');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
737 $promote_boost = solrsearch_environment_variable_get($env_id, 'solrsearch_search_promote_boost', '0');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
738
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
739 $options = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
740 '10:2000.0' => '10',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
741 '8:1000.0' => '9',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
742 '8:700.0' => '8',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
743 '8:500.0' => '7',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
744 '4:300.0' => '6',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
745 '4:200.0' => '5',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
746 '4:150.0' => '4',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
747 '2:150.0' => '3',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
748 '2:100.0' => '2',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
749 '1:100.0' => '1',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
750 '0:0' => t('Ignore'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
751 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
752
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
753 $weights = drupal_map_assoc(array('21.0', '13.0', '8.0', '5.0', '3.0', '2.0', '1.0', '0.8', '0.5', '0.3', '0.2', '0.1'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
754 $weights['0'] = t('Ignore');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
755
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
756 $form = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
757 $form['result_bias'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
758 '#type' => 'fieldset',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
759 '#title' => t('Result biasing'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
760 '#collapsible' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
761 '#collapsed' => FALSE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
762 '#description' => t('Give bias to certain properties when ordering the search results. Any value except <em>Ignore</em> will increase the score of the given type in search results. Choose <em>Ignore</em> to ignore any given property.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
763 '#group' => 'bias_tabs',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
764 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
765 $form['result_bias']['solrsearch_search_sticky_boost'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
766 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
767 '#options' => $weights,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
768 '#title' => t("Sticky at top of lists"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
769 '#default_value' => $sticky_boost,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
770 '#description' => t("Select additional bias to give to nodes that are set to be 'Sticky at top of lists'."),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
771 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
772 $form['result_bias']['solrsearch_search_promote_boost'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
773 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
774 '#options' => $weights,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
775 '#title' => t("Promoted to home page"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
776 '#default_value' => $promote_boost,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
777 '#description' => t("Select additional bias to give to nodes that are set to be 'Promoted to home page'."),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
778 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
779 $form['result_bias']['solrsearch_search_date_boost'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
780 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
781 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
782 '#title' => t("More recently created"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
783 '#default_value' => $date_settings,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
784 '#description' => t('This setting will change the result scoring so that nodes created more recently may appear before those with higher keyword matching.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
785 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
786 $form['result_bias']['solrsearch_search_comment_boost'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
787 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
788 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
789 '#title' => t("More comments"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
790 '#default_value' => $comment_settings,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
791 '#description' => t('This setting will change the result scoring so that nodes with more comments may appear before those with higher keyword matching.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
792 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
793 $form['result_bias']['solrsearch_search_changed_boost'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
794 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
795 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
796 '#title' => t("More recent comments"),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
797 '#default_value' => $changed_settings,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
798 '#description' => t('This setting will change the result scoring so that nodes with the most recent comments (or most recent updates to the node itself) may appear before those with higher keyword matching.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
799 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
800 return $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
801 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
802
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
803 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
804 * Form builder function to set query field weights.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
805 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
806 function solrsearch_search_field_bias_form($fields, $env_id) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
807 $form = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
808 // get the current weights
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
809 $defaults = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
810 'content' => '1.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
811 'ts_comments' => '0.5',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
812 'tos_content_extra' => '0.1',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
813 'label' => '5.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
814 'tos_name' => '3.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
815 'taxonomy_names' => '2.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
816 'tags_h1' => '5.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
817 'tags_h2_h3' => '3.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
818 'tags_h4_h5_h6' => '2.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
819 'tags_inline' => '1.0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
820 'tags_a' => '0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
821 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
822 $qf = solrsearch_environment_variable_get($env_id, 'field_bias', $defaults);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
823 $weights = drupal_map_assoc(array('21.0', '13.0', '8.0', '5.0', '3.0', '2.0', '1.0', '0.8', '0.5', '0.3', '0.2', '0.1'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
824 $weights['0'] = t('Omit');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
825 if (!$qf) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
826 $qf = $defaults;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
827 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
828 if ($fields) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
829 $form['field_bias'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
830 '#type' => 'fieldset',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
831 '#title' => t('Field biases'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
832 '#collapsible' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
833 '#collapsed' => FALSE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
834 '#tree' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
835 '#description' => t('Specify here which fields are more important when searching. Give a field a greater numeric value to make it more important. If you omit a field, it will not be searched.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
836 '#group' => 'bias_tabs',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
837 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
838 foreach ($fields as $field_name => $field) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
839 // Only indexed feids are searchable.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
840 if ($field->schema{0} == 'I') {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
841 // By default we only show text fields. Use hook_form_alter to change.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
842 // We use filter_xss to make sure links are allowed
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
843 $form['field_bias'][$field_name] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
844 '#access' => ($field->type == 'text' || $field->type == 'text_und'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
845 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
846 '#options' => $weights,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
847 '#title' => filter_xss(solrsearch_field_name_map($field_name)),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
848 '#default_value' => isset($qf[$field_name]) ? $qf[$field_name] : '0',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
849 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
850 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
851 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
852
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
853 // Make sure all the default fields are included, even if they have
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
854 // no indexed content.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
855 foreach ($defaults as $field_name => $weight) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
856 $form['field_bias'][$field_name] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
857 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
858 '#options' => $weights,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
859 '#title' => check_plain(solrsearch_field_name_map($field_name)),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
860 '#default_value' => isset($qf[$field_name]) ? $qf[$field_name] : $defaults[$field_name],
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
861 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
862 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
863
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
864 ksort($form['field_bias']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
865 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
866 return $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
867 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
868
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
869 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
870 * Form builder function to set query type weights.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
871 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
872 function solrsearch_search_type_boost_form($env_id) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
873
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
874 $form['type_boost'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
875 '#type' => 'fieldset',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
876 '#title' => t('Type biasing'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
877 '#collapsible' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
878 '#collapsed' => FALSE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
879 '#group' => 'bias_tabs',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
880 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
881 $form['type_boost']['solrsearch_search_type_boosts'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
882 '#type' => 'item',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
883 '#description' => t("Specify here which node types should get a higher relevancy score in searches. Any value except <em>Ignore</em> will increase the score of the given type in search results."),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
884 '#tree' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
885 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
886
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
887 $weights = drupal_map_assoc(array('21.0', '13.0', '8.0', '5.0', '3.0', '2.0', '1.0', '0.8', '0.5', '0.3', '0.2', '0.1'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
888 $weights['0'] = t('Ignore');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
889
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
890 // Get the current boost values.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
891 $type_boosts = solrsearch_environment_variable_get($env_id, 'solrsearch_search_type_boosts', array());
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
892 $names = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
893 foreach (entity_get_info() as $entity_type => $entity_info) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
894 if (!empty($entity_info['solrsearch']['indexable'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
895 foreach ($entity_info['bundles'] as $key => $info) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
896 $names[$key] = $info['label'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
897 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
898 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
899 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
900 asort($names);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
901
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
902 foreach ($names as $type => $name) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
903 $form['type_boost']['solrsearch_search_type_boosts'][$type] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
904 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
905 '#title' => t('%type type content bias', array('%type' => $name)),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
906 '#options' => $weights,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
907 '#default_value' => isset($type_boosts[$type]) ? $type_boosts[$type] : 0,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
908 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
909 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
910
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
911 return $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
912 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
913
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
914 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
915 * MoreLikeThis administration and utility functions.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
916 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
917 function solrsearch_search_mlt_add_block_form() {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
918 $form = solrsearch_search_mlt_block_form();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
919 $form['submit'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
920 '#type' => 'submit',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
921 '#value' => t('Save'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
922 '#weight' => '5',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
923 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
924 return $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
925 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
926
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
927 function solrsearch_search_mlt_add_block_form_submit($form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
928 solrsearch_search_mlt_save_block($form_state['values']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
929 $block_message = t('New More like this block created. <a href="!configure">Configure</a> this block in the Block administration', array('!configure' => url('admin/structure/block')));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
930 drupal_set_message($block_message);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
931 $form_state['redirect'] = 'admin/config/search/solrsearch/search-pages';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
932 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
933
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
934 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
935 * Merge supplied settings with the standard defaults..
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
936 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
937 function solrsearch_search_mlt_block_defaults($block = array()) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
938 return $block + array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
939 'name' => '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
940 'num_results' => '5',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
941 'mlt_fl' => array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
942 'label' => 'label',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
943 'taxonomy_names' => 'taxonomy_names',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
944 ),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
945 'mlt_env_id' => 'solr',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
946 'mlt_mintf' => '1',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
947 'mlt_mindf' => '1',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
948 'mlt_minwl' => '3',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
949 'mlt_maxwl' => '15',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
950 'mlt_maxqt' => '20',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
951 'mlt_type_filters' => array(),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
952 'mlt_custom_filters' => '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
953 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
954 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
955
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
956 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
957 * Constructs a list of field names used on the settings form.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
958 *
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
959 * @return array An array containing a the fields in the solr instance.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
960 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
961 function solrsearch_search_mlt_get_fields() {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
962 $rows = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
963
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
964 try {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
965 $solr = solrsearch_get_solr();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
966 $fields = $solr->getFields();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
967 foreach ($fields as $field_name => $field) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
968 if ($field->schema{4} == 'V') {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
969 $rows[$field_name] = solrsearch_field_name_map($field_name);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
970 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
971 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
972 ksort($rows);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
973 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
974 catch (Exception $e) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
975 watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
976 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
977
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
978 return $rows;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
979 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
980
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
981 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
982 * A helper function to save MLT block data.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
983 *
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
984 * If passed a block delta, the function will update block settings. If it is
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
985 * not passed a block delta, the function will create a new block.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
986 *
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
987 * @param array $block_settings An array containing the settings required to form
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
988 * a moreLikeThis request.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
989 *
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
990 * @param int $delta The id of the block you wish to update.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
991 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
992 function solrsearch_search_mlt_save_block($block_settings = array(), $delta = NULL) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
993 $blocks = variable_get('solrsearch_search_mlt_blocks', array());
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
994 if (is_null($delta)) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
995 $count = 0;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
996 ksort($blocks);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
997 // Construct a new array key.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
998 if (end($blocks)) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
999 list(, $count) = explode('-', key($blocks));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1000 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1001 $delta = sprintf('mlt-%03d', 1 + $count);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1002 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1003 $defaults = solrsearch_search_mlt_block_defaults();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1004 // Remove stray form values.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1005 $blocks[$delta] = array_intersect_key($block_settings, $defaults) + $defaults;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1006 // Eliminate non-selected fields.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1007 $blocks[$delta]['mlt_fl'] = array_filter($blocks[$delta]['mlt_fl']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1008 $blocks[$delta]['delta'] = $delta;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1009 $blocks[$delta]['mlt_type_filters'] = array_filter($blocks[$delta]['mlt_type_filters']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1010 $blocks[$delta]['mlt_custom_filters'] = trim($blocks[$delta]['mlt_custom_filters']);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1011 variable_set('solrsearch_search_mlt_blocks', $blocks);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1012 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1013
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1014 function solrsearch_search_mlt_delete_block_form($form, &$form_state, $block) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1015 if ($block) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1016 // Backwards compatibility for the block deltas
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1017 if (isset($block['delta'])) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1018 $delta = $block['delta'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1019 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1020 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1021 $delta = arg(6);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1022 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1023 // Add our delta to the delete form
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1024 $form['delta'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1025 '#type' => 'value',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1026 '#value' => $delta,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1027 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1028 $question = t('Are you sure you want to delete the "More Like this" block %name?', array('%name' => $block['name']));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1029 $path = 'admin/structure/block';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1030 $description = t('The block will be deleted. This action cannot be undone.');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1031 $yes = t('Delete');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1032 $no = t('Cancel');
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1033 return confirm_form($form, filter_xss($question), $path, $description, $yes, $no);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1034 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1035 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1036
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1037 function solrsearch_search_mlt_delete_block_form_submit($form, &$form_state) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1038 $blocks = solrsearch_search_load_all_mlt_blocks();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1039
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1040 unset($blocks[$form_state['values']['delta']]);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1041 variable_set('solrsearch_search_mlt_blocks', $blocks);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1042 drupal_set_message(t('The block has been deleted.'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1043 $form_state['redirect'] = 'admin/config/search/solrsearch/search-pages';
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1044 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1045
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1046 /**
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1047 * Form to edit moreLikeThis block settings.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1048 *
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1049 * @param int $delta If editing, the id of the block to edit.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1050 *
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1051 * @return array The form used for editing.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1052 * @todo Add term boost settings.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1053 * @todo Enable the user to specify a query, rather then forcing suggestions
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1054 * based on the node id.
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1055 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1056 function solrsearch_search_mlt_block_form($block_id = NULL) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1057
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1058 if (!empty($block_id)) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1059 $block = solrsearch_search_mlt_block_load($block_id);
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1060 if (!$block) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1061 return array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1062 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1063 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1064 else {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1065 $block = solrsearch_search_mlt_block_defaults();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1066 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1067
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1068 $form['delta'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1069 '#type' => 'value',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1070 '#default_value' => isset($block['delta']) ? $block['delta'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1071 '#weight' => '-2',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1072 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1073
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1074 $form['name'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1075 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1076 '#title' => t('Block name'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1077 '#description' => t('The block name displayed to site users.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1078 '#required' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1079 '#default_value' => isset($block['name']) ? $block['name'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1080 '#weight' => '-2',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1081 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1082
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1083 $environments = solrsearch_load_all_environments();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1084 $options = array('' => t('<Disabled>'));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1085 foreach ($environments as $id => $environment) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1086 $options[$id] = $environment['name'];
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1087 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1088 $form['mlt_env_id'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1089 '#title' => t('Search environment'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1090 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1091 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1092 '#default_value' => isset($block['mlt_env_id']) ? $block['mlt_env_id'] : solrsearch_default_environment(),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1093 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1094
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1095 $form['num_results'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1096 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1097 '#title' => t('Maximum number of related items to display'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1098 '#default_value' => isset($block['num_results']) ? $block['num_results'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1099 '#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1100 '#weight' => -1,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1101
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1102 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1103 /*
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1104 *
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1105 $form['mlt_fl'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1106 '#type' => 'checkboxes',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1107 '#title' => t('Fields for finding related content'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1108 '#description' => t('Choose the fields to be used in calculating similarity. The default combination of %taxonomy_names and %title will provide relevant results for typical sites.', array("%taxonomy_names" => solrsearch_field_name_map("taxonomy_names"), "%title" => solrsearch_field_name_map("label"))),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1109 '#options' => solrsearch_search_mlt_get_fields(),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1110 '#required' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1111 '#default_value' => isset($block['mlt_fl']) ? $block['mlt_fl'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1112 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1113 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1114 $form['advanced'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1115 '#type' => 'fieldset',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1116 '#title' => t('Advanced configuration'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1117 '#weight' => '1',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1118 '#collapsible' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1119 '#collapsed' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1120 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1121 $options = drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7));
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1122 /*$form['advanced']['mlt_mintf'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1123 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1124 '#title' => t('Minimum term frequency'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1125 '#description' => t('A word must appear this many times in any given document before the document is considered relevant for comparison.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1126 '#default_value' => isset($block['mlt_mintf']) ? $block['mlt_mintf'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1127 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1128 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1129 $form['advanced']['mlt_mindf'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1130 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1131 '#title' => t('Minimum document frequency'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1132 '#description' => t('A word must occur in at least this many documents before it will be used for similarity comparison.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1133 '#default_value' => isset($block['mlt_mindf']) ? $block['mlt_mindf'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1134 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1135 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1136 $form['advanced']['mlt_minwl'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1137 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1138 '#title' => t('Minimum word length'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1139 '#description' => 'You can use this to eliminate short words such as "the" and "it" from similarity comparisons. Words must be at least this number of characters or they will be ignored.',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1140 '#default_value' => isset($block['mlt_minwl']) ? $block['mlt_minwl'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1141 '#options' => $options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1142 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1143 $form['advanced']['mlt_maxwl'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1144 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1145 '#title' => t('Maximum word length'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1146 '#description' => t('You can use this to eliminate very long words from similarity comparisons. Words of more than this number of characters will be ignored.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1147 '#default_value' => isset($block['mlt_maxwl']) ? $block['mlt_maxwl'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1148 '#options' => drupal_map_assoc(array(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1149 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1150 $form['advanced']['mlt_maxqt'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1151 '#type' => 'select',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1152 '#title' => t('Maximum number of query terms'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1153 '#description' => t('The maximum number of query terms that will be included in any query. Lower numbers will result in fewer recommendations but will get results faster. If a content recommendation is not returning any recommendations, you can either check more "Comparison fields" checkboxes or increase the maximum number of query terms here.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1154 '#options' => drupal_map_assoc(array(3, 5, 7, 10, 12, 15, 20, 25, 30, 35, 40)),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1155 '#default_value' => isset($block['mlt_maxqt']) ? $block['mlt_maxqt'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1156 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1157 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1158 /*
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1159 $form['restrictions'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1160 '#type' => 'fieldset',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1161 '#title' => t('Filters'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1162 '#weight' => '1',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1163 '#collapsible' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1164 '#collapsed' => TRUE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1165 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1166
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1167 $type_options = array();
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1168 foreach (node_type_get_types() as $key => $type) {
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1169 $type_options[$key] = $type->name;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1170 }
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1171
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1172 $form['restrictions']['mlt_type_filters'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1173 '#type' => 'checkboxes',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1174 '#title' => t('Content Types'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1175 '#default_value' => is_array($block['mlt_type_filters']) ? $block['mlt_type_filters'] : array(),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1176 '#options' => $type_options,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1177 '#description' => t('Select the content types that similarity suggestions should be restricted to. Multiple types are joined with an OR query, so selecting more types results in more recommendations. If none are selected, no filter will be applied.'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1178 '#weight' => '-2',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1179 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1180
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1181 $form['restrictions']['mlt_custom_filters'] = array(
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1182 '#type' => 'textfield',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1183 '#title' => t('Additional Query'),
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1184 '#description' => t("A query, in Lucene syntax, which will further filter the similarity suggestions. For example, 'label:strategy' will filter related content further to only those with strategy in the title. Here are some more examples:") .
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1185 '<ul>
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1186 <li>ss_language:fr</li>
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1187 <li>tid:(5 OR 7)</li>
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1188 <li>ds_created:[2009-05-01T23:59:59Z TO 2009-07-28T12:30:00Z]</li>
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1189 <li>-is_uid:0, -is_uid:1</li>
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1190 </ul>',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1191 '#required' => FALSE,
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1192 '#default_value' => isset($block['mlt_custom_filters']) ? $block['mlt_custom_filters'] : '',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1193 '#weight' => '-1',
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1194 );
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1195 */
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1196 return $form;
a2b4f67e73dc initial
Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
parents:
diff changeset
1197 }