/[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.5 - (show annotations)
Mon Sep 3 15:52:16 2001 UTC (22 years, 7 months ago) by ravilov
Branch: MAIN
Changes since 1.4: +10 -4 lines
Made the menu on the left into images. More bugfixes.

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

  ViewVC Help
Powered by ViewVC 1.1.26