/[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

Diff of /inc/search.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.26