Initial import.
[siap.git] / _config / classes / Helper.php
CommitLineData
696f20d5
MS
1<?\r
2class 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?>