Commit | Line | Data |
---|---|---|
696f20d5 MS |
1 | <?\r |
2 | class Helper{\r | |
3 | function hasFilter($tmp_letra = true){\r | |
4 | global $input;\r | |
5 | \r | |
6 | if(($input->get('palavrachave') != '')\r | |
7 | || ($input->get('grupoorgao') != '')\r | |
8 | || ($input->get('procedencia') != '')\r | |
9 | || ($input->get('sistema') != '')\r | |
10 | || ($input->get('patologia') != '')\r | |
11 | || ($input->get('especialidade') != '')\r | |
12 | || ($input->get('professor') != '')\r | |
13 | || ($input->get('boneco') != '')\r | |
14 | || ($input->get('codigo') != '')\r | |
15 | || (($input->get('letra') != '') && ($tmp_letra))){\r | |
16 | return true;\r | |
17 | } else {\r | |
18 | return false;\r | |
19 | }\r | |
20 | }\r | |
21 | function findTopografiaById($tmp_id){\r | |
22 | if($tmp_id != ''){\r | |
23 | global $db;\r | |
24 | \r | |
25 | $sql = "SELECT id,nome FROM sis_grupoorgao WHERE id = ".$tmp_id." ORDER BY nome ASC LIMIT 1";\r | |
26 | $row = $db->execute($sql);\r | |
27 | if($row->EOF){\r | |
28 | return '';\r | |
29 | } else {\r | |
30 | return $row->fields('nome');\r | |
31 | }\r | |
32 | }\r | |
33 | }\r | |
34 | function findEspecialidade($tmp_asArray = false){\r | |
35 | global $db;\r | |
36 | \r | |
37 | $sql = "SELECT id,nome FROM sis_especialidade ORDER BY nome ASC";\r | |
38 | if($tmp_asArray){\r | |
39 | return $this->rowsIdNomeToArray($db->execute($sql));\r | |
40 | } else {\r | |
41 | return $db->execute($sql);\r | |
42 | }\r | |
43 | }\r | |
44 | function findGrupoOrgao($tmp_asArray = false){\r | |
45 | global $db;\r | |
46 | \r | |
47 | $sql = "SELECT id,nome FROM sis_grupoorgao ORDER BY nome ASC";\r | |
48 | if($tmp_asArray){\r | |
49 | return $this->rowsIdNomeToArray($db->execute($sql));\r | |
50 | } else {\r | |
51 | return $db->execute($sql);\r | |
52 | }\r | |
53 | }\r | |
54 | function findProfesores($tmp_asArray = false){\r | |
55 | global $db;\r | |
56 | \r | |
57 | $sql = "SELECT u.id,u.nome FROM admin_usuario u \r | |
58 | INNER JOIN sis_casoestudo ce ON ce.id_usuario = u.id \r | |
59 | GROUP BY u.id ORDER BY u.nome ASC";\r | |
60 | if($tmp_asArray){\r | |
61 | return $this->rowsIdNomeToArray($db->execute($sql));\r | |
62 | } else {\r | |
63 | return $db->execute($sql);\r | |
64 | }\r | |
65 | }\r | |
66 | function findProcedencias($tmp_asArray = false){\r | |
67 | global $db;\r | |
68 | \r | |
69 | $sql = "SELECT id,nome FROM sis_procedencia ORDER BY nome ASC";\r | |
70 | if($tmp_asArray){\r | |
71 | return $this->rowsIdNomeToArray($db->execute($sql));\r | |
72 | } else {\r | |
73 | return $db->execute($sql);\r | |
74 | }\r | |
75 | }\r | |
76 | function findSistemas($tmp_asArray = false){\r | |
77 | global $db;\r | |
78 | \r | |
79 | $sql = "SELECT id,nome FROM sis_sistema ORDER BY nome ASC";\r | |
80 | if($tmp_asArray){\r | |
81 | return $this->rowsIdNomeToArray($db->execute($sql));\r | |
82 | } else {\r | |
83 | return $db->execute($sql);\r | |
84 | }\r | |
85 | }\r | |
86 | function findPatologias($tmp_asArray = false){\r | |
87 | global $db;\r | |
88 | \r | |
89 | $sql = "SELECT id,nome FROM sis_patologia ORDER BY nome ASC";\r | |
90 | if($tmp_asArray){\r | |
91 | return $this->rowsIdNomeToArray($db->execute($sql));\r | |
92 | } else {\r | |
93 | return $db->execute($sql);\r | |
94 | }\r | |
95 | }\r | |
96 | function rowsIdNomeToArray($tmp_rows){\r | |
97 | $arr = Array();\r | |
98 | \r | |
99 | while(!$tmp_rows->EOF){\r | |
100 | $arr[$tmp_rows->fields("id")] = $tmp_rows->fields("nome");\r | |
101 | $tmp_rows->moveNext();\r | |
102 | }\r | |
103 | return $arr;\r | |
104 | }\r | |
105 | function somaBusca($tmp_palavraChave){\r | |
106 | global $db;\r | |
107 | \r | |
108 | if($tmp_palavraChave != ''){\r | |
109 | $sql = "SELECT * FROM sis_palavrabusca WHERE palavra = '".$tmp_palavraChave."'";\r | |
110 | $rowPalavra = $db->execute($sql);\r | |
111 | if($rowPalavra->EOF){\r | |
112 | $sql = "INSERT INTO sis_palavrabusca (palavra,quantidade) VALUES('".$tmp_palavraChave."',1)";\r | |
113 | $db->execute($sql);\r | |
114 | } else {\r | |
115 | $sql = "UPDATE sis_palavrabusca SET quantidade = quantidade+1 WHERE palavra ='".$tmp_palavraChave."'";\r | |
116 | $db->execute($sql);\r | |
117 | }\r | |
118 | }\r | |
119 | }\r | |
120 | function findPalavraAproximada($palavra, $sql = ""){\r | |
121 | global $db;\r | |
122 | global $load;\r | |
123 | \r | |
124 | $load->system("functions/text.php");\r | |
125 | \r | |
126 | $min = 55;\r | |
127 | $mid = 80;\r | |
128 | \r | |
129 | $arr_busca = explode(' ',$palavra);\r | |
130 | $arr_palavras = array();\r | |
131 | if($sql == "")\r | |
132 | $sql = "SELECT palavra FROM sis_palavra WHERE status = 1";\r | |
133 | $rs = $db->execute($sql);\r | |
134 | while(!$rs->EOF){\r | |
135 | $arr_now = explode(" ",$rs->fields("palavra"));\r | |
136 | if(is_array($arr_now)) {\r | |
137 | for($x=0,$total=sizeof($arr_now);$x<$total;$x++){\r | |
138 | $arr_palavras[] = formatNameFile($arr_now[$x]);\r | |
139 | }\r | |
140 | } else {\r | |
141 | $arr_palavras[] = formatNameFile($arr_now);\r | |
142 | }\r | |
143 | $rs->moveNext();\r | |
144 | }\r | |
145 | $arr_palavras = array_values(array_unique($arr_palavras));\r | |
146 | $arr = array(array());\r | |
147 | \r | |
148 | $porcentagem = 0;\r | |
149 | \r | |
150 | // BUSCA TODA A PALAVRA\r | |
151 | for($x=0,$total=sizeof($arr_palavras);$x<$total;$x++){\r | |
152 | similar_text($palavra,$arr_palavras[$x],$r);\r | |
153 | if ($r > $min) {\r | |
154 | if ($r >= $mid) {\r | |
155 | if ($porcentagem < $mid) {\r | |
156 | $arr[0] = array();\r | |
157 | }\r | |
158 | }\r | |
159 | \r | |
160 | if ($porcentagem < $r) {\r | |
161 | $porcentagem = $r;\r | |
162 | $arr[0][] = $arr_palavras[$x];\r | |
163 | }\r | |
164 | }\r | |
165 | }\r | |
166 | \r | |
167 | if (sizeof($arr_busca) > 1) {\r | |
168 | $indice = 1;\r | |
169 | //echo sizeof($arr_busca);\r | |
170 | for ($x=0,$total=sizeof($arr_busca);$x<=$total;$x++) {\r | |
171 | $porcentagem = 0;\r | |
172 | //echo $x." - ".$total."<br>";\r | |
173 | if(isset($arr_busca[$x])){\r | |
174 | if (strlen($arr_busca[$x]) > 2) {\r | |
175 | for($z=0,$total=sizeof($arr_palavras);$z<$total;$z++){\r | |
176 | similar_text($arr_busca[$x],$arr_palavras[$z],$r);\r | |
177 | if ($r > $min) {\r | |
178 | if ($r >= $mid) {\r | |
179 | if ($porcentagem < $mid) {\r | |
180 | $arr[$indice] = array();\r | |
181 | }\r | |
182 | }\r | |
183 | \r | |
184 | if ($porcentagem < $r) {\r | |
185 | $porcentagem = $r;\r | |
186 | $arr[$indice][] = $arr_palavras[$z];\r | |
187 | }\r | |
188 | }\r | |
189 | }\r | |
190 | $indice++;\r | |
191 | }\r | |
192 | }\r | |
193 | }\r | |
194 | }\r | |
195 | \r | |
196 | return $arr; \r | |
197 | }\r | |
198 | function makeSql($arrPalavra,$baseSql,$arrWherePalavra,$fixedWhere = ""){\r | |
199 | //arrPalavra:\r | |
200 | //Array com as palavras aproximadas. Lembrando, posição 0, array de palavras completas (frases, titulos), posição 1, todas as palavras 'quebradas'.\r | |
201 | \r | |
202 | //baseSql:\r | |
203 | //Sql contendo todo o conteudo necessario para fazer a busca naquela tabela, no lugar da sentença WHERE, subtituir por #WHERE#, como no exemplo:\r | |
204 | //SELECT id,nome,titulo,descricao,data FROM site_redacao r INNER JOIN site_teste t ON t.id = r.id_teste #WHERE# ORDER BY data DESC\r | |
205 | \r | |
206 | //arrWherePalavra:\r | |
207 | //array com as condições, sem o where, e substituindo a palavra de busca por #PALAVRA#, como no exemplo:\r | |
208 | //p.descricao LIKE '%#PALAVRA#%'\r | |
209 | \r | |
210 | //$fixedWhere:\r | |
211 | //condições fixas a serem concatenadas com a query, como no exemplo:\r | |
212 | //status = 1 AND data = '2009-10-20'\r | |
213 | //note que não existe operador em nenhum dos lados (AND, OR, ou qualquer outro)\r | |
214 | \r | |
215 | if (isset($arrPalavra[0])) {\r | |
216 | if ($arrPalavra[0] != '') {\r | |
217 | $where = " AND (1=2 ";\r | |
218 | for($x=0,$total=sizeof($arrPalavra[0]);$x<$total;$x++) {\r | |
219 | $where .= " OR (";\r | |
220 | for($w=0,$totalW=sizeof($arrWherePalavra);$w<$totalW;$w++){\r | |
221 | if($w == 0){\r | |
222 | $where .= " ".str_replace("#PALAVRA#",$arrPalavra[0][$x],$arrWherePalavra[$w])." ";\r | |
223 | } else {\r | |
224 | $where .= " OR ".str_replace("#PALAVRA#",$arrPalavra[0][$x],$arrWherePalavra[$w])." ";\r | |
225 | }\r | |
226 | }\r | |
227 | $where .= " )";\r | |
228 | }\r | |
229 | $where .= ") ";\r | |
230 | } else {\r | |
231 | $where = 'AND 1=2';\r | |
232 | }\r | |
233 | } elseif(isset($arrPalavra[1])) {\r | |
234 | $where = '';\r | |
235 | for($i=1,$total=sizeof($arrPalavra);$i<=$total;$i++) {\r | |
236 | $where .= " AND ((1=2) ";\r | |
237 | for($x=0,$total=sizeof($arrPalavra[$i]);$x<=$total;$x++) {\r | |
238 | if ($arrPalavra[$i][$x] != '') {\r | |
239 | $where .= " OR (";\r | |
240 | for($w=0,$totalW=sizeof($arrWherePalavra);$w<$totalW;$w++){\r | |
241 | if($w == 0){\r | |
242 | $where .= " ".str_replace("#PALAVRA#",$arrPalavra[$i][$x],$arrWherePalavra[$w])." ";\r | |
243 | } else {\r | |
244 | $where .= " OR ".str_replace("#PALAVRA#",$arrPalavra[$i][$x],$arrWherePalavra[$w])." ";\r | |
245 | }\r | |
246 | }\r | |
247 | $where .= " )";\r | |
248 | }\r | |
249 | }\r | |
250 | }\r | |
251 | $where .= ") ";\r | |
252 | }\r | |
253 | if($fixedWhere == ""){\r | |
254 | $fixedWhere = " 1 = 1 ";\r | |
255 | } else {\r | |
256 | $fixedWhere = " ".$fixedWhere." ";\r | |
257 | }\r | |
258 | $sql = str_replace("#WHERE#"," WHERE ".$fixedWhere.$where,$baseSql);\r | |
259 | return $sql;\r | |
260 | }\r | |
261 | }\r | |
262 | ?> |