/[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.8 - (show annotations)
Fri Oct 5 15:10:53 2001 UTC (22 years, 6 months ago) by ravilov
Branch: MAIN
Changes since 1.7: +3 -3 lines
Enhanced Linkovi on PLIVAmed.net and Arhiva. More bugfixes.

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

  ViewVC Help
Powered by ViewVC 1.1.26