summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2001-09-22 21:01:39 +0000
committerDries Buytaert <dries@buytaert.net>2001-09-22 21:01:39 +0000
commit6c7b845b34d8b4d55175c7db02fa71cf62789ab6 (patch)
tree72aa2c5575b5eba5e0461dd3f101b5de628b571b /modules
parent5a6a4206b9c83c9ec6f844ddba452672f26706fb (diff)
downloadbrdo-6c7b845b34d8b4d55175c7db02fa71cf62789ab6.tar.gz
brdo-6c7b845b34d8b4d55175c7db02fa71cf62789ab6.tar.bz2
- improved search module (vaguely derived from axel's code)
Diffstat (limited to 'modules')
-rw-r--r--modules/search.module63
-rw-r--r--modules/search/search.module63
2 files changed, 104 insertions, 22 deletions
diff --git a/modules/search.module b/modules/search.module
index bb74db3c2..86049d67d 100644
--- a/modules/search.module
+++ b/modules/search.module
@@ -12,29 +12,65 @@ function search_link($type) {
return $links ? $links : array();
}
+function search_item($item, $type) {
+ $output .= "<p>";
+ $output .= " <b><u><a href=\"". $item["link"] ."\">". $item["title"] ."</a></u></b><br />";
+ $output .= " <small>$type ". ($item["user"] ? " - ". $item["user"] : "") ."". ($item["date"] ? " - ". format_date($item["date"], "small") : "") ."</small>";
+ $output .= "</p>";
+
+ return $output;
+}
+
function search_page() {
- global $theme, $type, $keys, $REQUEST_URI;
+ global $theme, $edit, $type, $keys, $REQUEST_URI;
if (user_access("search content")) {
- // verify input:
+
+ /*
+ ** Verify the user input:
+ */
+
$type = check_input($type);
$keys = check_input($keys);
- // build options list:
+
+ /*
+ ** Construct the search form:
+ */
+
+ $form .= "<form action=\"$REQUEST_URI\" method=\"POST\">";
+ $form .= " <input size=\"50\" value=\"". check_form($keys) ."\" name=\"keys\" type=\"text\">";
+ $form .= " <input type=\"submit\" value=\"". t("Search") ."\"><br />";
+ $form .= t("Restrict search to") .": ";
+
foreach (module_list() as $name) {
if (module_hook($name, "search")) {
- $options .= "<option value=\"$name\"". ($name == $type ? " selected" : "") .">$name</option>\n";
+ $form .= "<input type=\"checkbox\" name=\"edit[type][$name]\" ". ($edit["type"][$name] ? " checked=\"checked\"" : "") ."/> $name ";
}
}
- // build form:
- $form .= "<form action=\"$REQUEST_URI\" method=\"POST\">\n";
- $form .= " <input size=\"50\" value=\"". check_form($keys) ."\" name=\"keys\" TYPE=\"text\">\n";
- $form .= " <select name=\"type\">$options</select>\n";
- $form .= " <input type=\"submit\" value=\"". t("Search") ."\">\n";
$form .= "</form>\n";
- // visualize form:
+ /*
+ ** Collect the search results:
+ */
+
+ $array = array();
+
+ if ($keys) {
+ foreach (module_list() as $name) {
+ if ((!$edit["type"] || $edit["type"][$name]) && ($result = module_invoke($name, "search", $keys))) {
+ foreach ($result as $entry) {
+ $output .= search_item($entry, $name);
+ }
+ }
+ }
+ }
+
+ /*
+ ** Display form and search results:
+ */
+
$theme->header();
if ($form) {
@@ -42,7 +78,12 @@ function search_page() {
}
if ($keys) {
- $theme->box(t("Result"), search_data($keys, $type));
+ if ($output) {
+ $theme->box(t("Result"), $output);
+ }
+ else {
+ $theme->box(t("Result"), t("Your search yielded no results."));
+ }
}
$theme->footer();
diff --git a/modules/search/search.module b/modules/search/search.module
index bb74db3c2..86049d67d 100644
--- a/modules/search/search.module
+++ b/modules/search/search.module
@@ -12,29 +12,65 @@ function search_link($type) {
return $links ? $links : array();
}
+function search_item($item, $type) {
+ $output .= "<p>";
+ $output .= " <b><u><a href=\"". $item["link"] ."\">". $item["title"] ."</a></u></b><br />";
+ $output .= " <small>$type ". ($item["user"] ? " - ". $item["user"] : "") ."". ($item["date"] ? " - ". format_date($item["date"], "small") : "") ."</small>";
+ $output .= "</p>";
+
+ return $output;
+}
+
function search_page() {
- global $theme, $type, $keys, $REQUEST_URI;
+ global $theme, $edit, $type, $keys, $REQUEST_URI;
if (user_access("search content")) {
- // verify input:
+
+ /*
+ ** Verify the user input:
+ */
+
$type = check_input($type);
$keys = check_input($keys);
- // build options list:
+
+ /*
+ ** Construct the search form:
+ */
+
+ $form .= "<form action=\"$REQUEST_URI\" method=\"POST\">";
+ $form .= " <input size=\"50\" value=\"". check_form($keys) ."\" name=\"keys\" type=\"text\">";
+ $form .= " <input type=\"submit\" value=\"". t("Search") ."\"><br />";
+ $form .= t("Restrict search to") .": ";
+
foreach (module_list() as $name) {
if (module_hook($name, "search")) {
- $options .= "<option value=\"$name\"". ($name == $type ? " selected" : "") .">$name</option>\n";
+ $form .= "<input type=\"checkbox\" name=\"edit[type][$name]\" ". ($edit["type"][$name] ? " checked=\"checked\"" : "") ."/> $name ";
}
}
- // build form:
- $form .= "<form action=\"$REQUEST_URI\" method=\"POST\">\n";
- $form .= " <input size=\"50\" value=\"". check_form($keys) ."\" name=\"keys\" TYPE=\"text\">\n";
- $form .= " <select name=\"type\">$options</select>\n";
- $form .= " <input type=\"submit\" value=\"". t("Search") ."\">\n";
$form .= "</form>\n";
- // visualize form:
+ /*
+ ** Collect the search results:
+ */
+
+ $array = array();
+
+ if ($keys) {
+ foreach (module_list() as $name) {
+ if ((!$edit["type"] || $edit["type"][$name]) && ($result = module_invoke($name, "search", $keys))) {
+ foreach ($result as $entry) {
+ $output .= search_item($entry, $name);
+ }
+ }
+ }
+ }
+
+ /*
+ ** Display form and search results:
+ */
+
$theme->header();
if ($form) {
@@ -42,7 +78,12 @@ function search_page() {
}
if ($keys) {
- $theme->box(t("Result"), search_data($keys, $type));
+ if ($output) {
+ $theme->box(t("Result"), $output);
+ }
+ else {
+ $theme->box(t("Result"), t("Your search yielded no results."));
+ }
}
$theme->footer();