summaryrefslogtreecommitdiff
path: root/modules/search.module
blob: 116b671c681d06733718b1cd6300ac0e4c4fb288 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
// $Id$

function search_perm() {
  return array("search content");
}

function search_link($type) {
  if ($type == "page" && user_access("search content")) {
    $links[] = "<a href=\"module.php?mod=search\">". t("search") ."</a>";
  }

  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, $edit, $type, $keys;

  if (user_access("search content")) {

    /*
    ** Verify the user input:
    */

    $type = check_input($type);
    $keys = check_input($keys);

    /*
    ** Construct the search form:
    */

    $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, "user") || module_hook($name, "search")) {
        $form .= " <input type=\"checkbox\" name=\"edit[type][$name]\" ". ($edit["type"][$name] ? " checked=\"checked\"" : "") ."/> ". t($name);
      }
    }

    $form = form($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) {
      $theme->box(t("Search"), $form);
    }

    if ($keys) {
      if ($output) {
        $theme->box(t("Result"), $output);
      }
      else {
        $theme->box(t("Result"), t("Your search yielded no results."));
      }
    }

    $theme->footer();
  }
  else {
    $theme->header();
    $theme->box(t("Access denied"), message_access());
    $theme->footer();
  }
}

?>