/[health_html]/inc/search.php
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /inc/search.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations)
Mon Aug 27 09:17:40 2001 UTC (22 years, 7 months ago) by ravilov
Branch: MAIN
Changes since 1.2: +8 -6 lines
Minor bug fixes. Started the Symptom Sorter.

1 <?php
2 $basic_logic = "AND";
3 function myCmp($a, $b) {
4 if ($a["caption"] == $b["caption"]) return 0;
5 return ($a["caption"] < $b["caption"]) ? -1 : 1;
6 }
7 function Search($fields, $q1_fields, $q2_fields) {
8 global $go;
9 $tp = new Smarty();
10 $qry_1 = "";
11 $qry_2 = "";
12 $form = "";
13 global $stype;
14 if ($stype) {
15 $search = array();
16 $i = 1;
17 while (true) {
18 global ${"search_".$i};
19 if (!${"search_".$i}) break;
20 global ${"delete_".$i}, ${"and_".$i}, ${"or_".$i},
21 ${"field_".$i}, ${"not_".$i},
22 ${"query_".$i}, ${"logic_".$i},
23 ${"concat_".$i}, ${"case_".$i};
24 if (${"delete_".$i}) { $go = false; $i++; continue; }
25 if (${"and_".$i}) { $go = false; ${"logic_".$i} = "AND"; }
26 if (${"or_".$i}) { $go = false; ${"logic_".$i} = "OR"; }
27 array_push($search, array(
28 "field" => ${"field_".$i},
29 "not" => ${"not_".$i},
30 "query" => MyEscape(${"query_".$i}),
31 "logic" => ${"logic_".$i},
32 "concat" => ${"concat_".$i},
33 "case" => ${"case_".$i}
34 ));
35 $i++;
36 }
37 global ${"and_".($i - 1)}, ${"or_".($i - 1)};
38 if (count($search) == 0 || ${"and_".($i - 1)} || ${"or_".($i - 1)}) {
39 $go = false;
40 $log = "";
41 if (${"and_".($i - 1)}) $log = "AND";
42 if (${"or_".($i - 1)}) $log = "OR";
43 if (count($search) > 0) $search[count($search) - 1]["logic"] = $log;
44 array_push($search, array(
45 "field" => "",
46 "not" => "",
47 "query" => "",
48 "logic" => "",
49 "concat" => "OR",
50 "case" => ""
51 ));
52 }
53 $search[count($search) - 1]["logic"] = "";
54 $tp->assign("search", $search);
55 } else {
56 global $field, $query;
57 $tp->assign("field", $field);
58 $tp->assign("query", MyEscape($query));
59 }
60 if (!$stype) $stype = 0;
61 $tp->assign("stype", $stype);
62 if ($go) {
63 if ($stype) {
64 $qry = "";
65 $logic = "";
66 $i = 1;
67 while (${"search_".$i}) {
68 $field = ${"field_".$i};
69 $not = ${"not_".$i} ? "NOT" : "";
70 $qry1 = preg_split('/\s+/', ${"query_".$i});
71 $qry2 = array();
72 $qry3 = array();
73 while (list($k, $v) = each($qry1)) {
74 if (!$qry1[$k]) continue;
75 if (${"case_".$i})
76 $qq = "(".$fields[$field]["dbname"]." $not LIKE '%".$qry1[$k]."%')";
77 else
78 $qq = "(UPPER(".$fields[$field]["dbname"].") $not LIKE UPPER('%".$qry1[$k]."%'))";
79 $is_q1 = false;
80 for ($i = 0; $i < count($q1_fields); $i++)
81 if ($q1_fields[$i] == $field) $is_q1 = true;
82 $is_q2 = false;
83 for ($i = 0; $i < count($q2_fields); $i++)
84 if ($q2_fields[$i] == $field) $is_q2 = true;
85 if ($is_q1) $qry2[$k] = $qq;
86 if ($is_q2) $qry3[$k] = $qq;
87 }
88 $qry1 = implode(" ".${"concat_".$i}." ", $qry2);
89 if ($qry1) {
90 if ($logic) $qry .= " $logic ";
91 $qry_1 .= "($qry1)";
92 $logic = ${"logic_".$i};
93 }
94 $qry1 = implode(" ".${"concat_".$i}." ", $qry3);
95 if ($qry1) {
96 if ($logic) $qry_2 .= " $logic ";
97 $qry_2 .= "($qry1)";
98 $logic = ${"logic_".$i};
99 }
100 $i++;
101 }
102 } else {
103 $q = preg_split('/\s+/', $query);
104 $q2 = array();
105 $q3 = array();
106 while (list($k, $v) = each($q)) {
107 if (!$q[$k]) continue;
108 $qq = "(UPPER(".$fields[$field]["dbname"].") LIKE UPPER('%".$q[$k]."%'))";
109 $is_q1 = false;
110 for ($i = 0; $i < count($q1_fields); $i++)
111 if ($q1_fields[$i] == $field) $is_q1 = true;
112 $is_q2 = false;
113 for ($i = 0; $i < count($q2_fields); $i++)
114 if ($q2_fields[$i] == $field) $is_q2 = true;
115 if ($is_q1) $q2[$k] = $qq;
116 if ($is_q2) $q3[$k] = $qq;
117 }
118 global $basic_logic;
119 $qry_1 = implode(" ".$basic_logic." ", $q2);
120 $qry_2 = implode(" ".$basic_logic." ", $q3);
121 }
122 }
123 uasort($fields, "myCmp");
124 $flds = array();
125 while (list($k, $v) = each($fields)) {
126 array_push($flds, array(
127 "name" => MyEscape($k),
128 "caption" => MyEscape($v["caption"])
129 ));
130 }
131 $tp->assign("fields", $flds);
132 global $PHP_SELF, $section, $section_menu;
133 $tp->assign("section", $section);
134 $tp->assign("section_menu", $section_menu);
135 $tp->assign("FORM_ACTION", $PHP_SELF.HTMLSpecialChars("?section=$section&section_menu={$section_menu}&stype=$stype"));
136 $form = $tp->fetch("search.tpl");
137 return array($form, $qry_1, $qry_2);
138 }
139 ?>

  ViewVC Help
Powered by ViewVC 1.1.26