This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
0 ignored issues
–
show
|
|||
2 | // $Id: index.php,v 1.22 2007/03/24 17:50:52 marcellobrandao Exp $ |
||
3 | // ------------------------------------------------------------------------ // |
||
4 | // XOOPS - PHP Content Management System // |
||
5 | // Copyright (c) 2000 XOOPS.org // |
||
6 | // <http://www.xoops.org/> // |
||
7 | // ------------------------------------------------------------------------ // |
||
8 | // This program is free software; you can redistribute it and/or modify // |
||
9 | // it under the terms of the GNU General Public License as published by // |
||
10 | // the Free Software Foundation; either version 2 of the License, or // |
||
11 | // (at your option) any later version. // |
||
12 | // // |
||
13 | // You may not change or alter any portion of this comment or credits // |
||
14 | // of supporting developers from this source code or any supporting // |
||
15 | // source code which is considered copyrighted (c) material of the // |
||
16 | // original comment or credit authors. // |
||
17 | // // |
||
18 | // This program is distributed in the hope that it will be useful, // |
||
19 | // but WITHOUT ANY WARRANTY; without even the implied warranty of // |
||
20 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // |
||
21 | // GNU General Public License for more details. // |
||
22 | // // |
||
23 | // You should have received a copy of the GNU General Public License // |
||
24 | // along with this program; if not, write to the Free Software // |
||
25 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // |
||
26 | // ------------------------------------------------------------------------ // |
||
27 | /** |
||
28 | * index.php, Principal arquivo da administração |
||
29 | * |
||
30 | * Este arquivo foi implementado da seguinte forma |
||
31 | * Primeiro você tem várias funções |
||
32 | * Depois você tem um case que vai chamar algumas destas funções de acordo com |
||
33 | * o paramentro $op |
||
34 | * |
||
35 | * @author Marcello Brandão <[email protected]> |
||
36 | * @version 1.0 |
||
37 | * @package assessment |
||
38 | */ |
||
39 | /** |
||
40 | * Arquivo de cabeçalho da administração do Xoops |
||
41 | */ |
||
42 | |||
43 | $currentFile = basename(__FILE__); |
||
44 | |||
45 | include_once __DIR__ . '/admin_header.php'; |
||
46 | include dirname(dirname(dirname(__DIR__))) . '/include/cp_header.php'; |
||
47 | |||
48 | /** |
||
49 | * Função que desenha o cabeçalho da administração do Xoops |
||
50 | */ |
||
51 | xoops_cp_header(); |
||
52 | |||
53 | /** |
||
54 | * Arquivo que contém várias funções interessantes , principalmente a de |
||
55 | * criar o cabeçalho do menu com as abinhas |
||
56 | * Verificando Versão do xoops Editor e do Frameworks, |
||
57 | * não estando corretas mensagem com links para baixar |
||
58 | * falta: colocando tb o link para o mastop editor |
||
59 | */ |
||
60 | |||
61 | //if ((!@file_exists(XOOPS_ROOT_PATH."/Frameworks/art/functions.admin.php"))||(!@file_exists(XOOPS_ROOT_PATH."/class/xoopseditor/xoops_version.php"))) { |
||
62 | // echo _AM_ASSESSMENT_REQUERIMENTOS; |
||
63 | // |
||
64 | //} else { |
||
65 | include_once XOOPS_ROOT_PATH . '/Frameworks/art/functions.admin.php'; |
||
66 | // include_once(XOOPS_ROOT_PATH."/Frameworks/xoops_version.php"); |
||
67 | // include_once(XOOPS_ROOT_PATH."/class/xoopseditor/xoops_version.php"); |
||
68 | // if ((XOOPS_FRAMEWORKS_VERSION<floatval(1.10))||(XOOPS_FRAMEWORKS_XOOPSEDITOR_VERSION<floatval(1.10))) { |
||
69 | // echo _AM_ASSESSMENT_REQUERIMENTOS; |
||
70 | // } else { |
||
71 | |||
72 | /** |
||
73 | * Criação das Fábricas de objetos que vamos precisar |
||
74 | */ |
||
75 | include dirname(__DIR__) . '/class/assessment_perguntas.php'; |
||
76 | include dirname(__DIR__) . '/class/assessment_provas.php'; |
||
77 | include dirname(__DIR__) . '/class/assessment_respostas.php'; |
||
78 | include dirname(__DIR__) . '/class/assessment_resultados.php'; |
||
79 | include dirname(__DIR__) . '/class/assessment_documentos.php'; |
||
80 | include_once dirname(dirname(dirname(__DIR__))) . '/class/pagenav.php'; |
||
81 | |||
82 | //$myts = MyTextSanitizer::getInstance(); |
||
83 | |||
84 | /** |
||
85 | * Verificações de segurança e atribuição de variáveis recebidas por get |
||
86 | */ |
||
87 | $op = isset($_GET['op']) ? $_GET['op'] : ''; |
||
88 | $start = isset($_GET['start']) ? $_GET['start'] : ''; |
||
89 | $startper = isset($_GET['startper']) ? $_GET['startper'] : ''; |
||
90 | $startdoc = isset($_GET['startdoc']) ? $_GET['startdoc'] : ''; |
||
91 | |||
92 | /** |
||
93 | * Para termos as configs dentro da parte de admin |
||
94 | */ |
||
95 | global $xoopsModuleConfig; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
96 | |||
97 | /** |
||
98 | * Essa função lista na tabela dentro de uma tabela os titulos das |
||
99 | * provas com botões para editar a prova, excluir a prova ou ver as |
||
100 | * respostas dos alunos às provas |
||
101 | */ |
||
102 | function listarprovas() |
||
103 | { |
||
104 | /** |
||
105 | * Declaração de variáveis globais |
||
106 | */ |
||
107 | global $xoopsDB, $start, $xoopsModuleConfig, $pathIcon16; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
108 | |||
109 | /** |
||
110 | * Criação da fábrica de provas |
||
111 | */ |
||
112 | $fabrica_de_provas = new Xoopsassessment_provasHandler($xoopsDB); |
||
113 | |||
114 | /** |
||
115 | * Criação dos objetos critérios para repassar para a fábrica de provas |
||
116 | */ |
||
117 | $criteria = new Criteria('cod_prova'); |
||
118 | $criteria->setLimit($xoopsModuleConfig['qtditens']); |
||
119 | $criteria->setStart($start); |
||
120 | |||
121 | /** |
||
122 | * Contamos quantas provas existem e se nenhuma existir informamos |
||
123 | */ |
||
124 | $total_items = $fabrica_de_provas->getCount(); |
||
125 | if ($total_items == 0) { |
||
126 | echo _AM_ASSESSMENT_SEMPROVAS; |
||
127 | } else { |
||
128 | /** |
||
129 | * Caso exista ao menos uma prova então buscamos esta(s) prova(s) |
||
130 | * na fábrica |
||
131 | */ |
||
132 | $vetor_provas = $fabrica_de_provas->getObjects($criteria); |
||
133 | /** |
||
134 | * Abre-se a tabela |
||
135 | */ |
||
136 | echo "<table class='outer' width='100%'><tr><th colspan='5'>" . _AM_ASSESSMENT_LISTAPROVAS . '</th></tr>'; |
||
137 | /** |
||
138 | * Loop nas provas montando as linhas das tabelas com os botões |
||
139 | */ |
||
140 | foreach ($vetor_provas as $prova) { |
||
141 | $x = '<tr><td>' . $prova->getVar('titulo', 's') . "</td><td width='50'>"; |
||
142 | |||
143 | $x .= '<a href="main.php?op=editar_prova&cod_prova=' . $prova->getVar('cod_prova', 's'); |
||
144 | $x .= '"><img src="' . $pathIcon16 . '/edit.png" alt="' . _AM_ASSESSMENT_EDITARPROVAS . '" title="' . _AM_ASSESSMENT_EDITARPROVAS . '"></a><br /></td>'; |
||
145 | $x .= '<td width="50"> <form action="clonar.php" method="post"> |
||
146 | <input type="hidden" value="' . $prova->getVar('cod_prova', 's') . '" name="cod_prova" id="cod_prova"> |
||
147 | <input type="image" src="' . $pathIcon16 . '/editcopy.png" alt="' . _AM_ASSESSMENT_CLONE . '" title="' . _AM_ASSESSMENT_CLONE . '"> |
||
148 | </form></td>'; |
||
149 | $x .= '<td width="50"><a href="main.php?op=resultados_prova&cod_prova=' |
||
150 | . $prova->getVar('cod_prova', 's') |
||
151 | . '"><img src="' |
||
152 | . $pathIcon16 |
||
153 | . '/view.png" alt="' |
||
154 | . _AM_ASSESSMENT_VERRESULT |
||
155 | . '" title="' |
||
156 | . _AM_ASSESSMENT_VERRESULT |
||
157 | . '"style="border-color:#E6E6E6"></a></td>'; |
||
158 | $x .= '<td width="50"><form action="excluirprova.php" method="post">' |
||
159 | . $GLOBALS['xoopsSecurity']->getTokenHTML() |
||
160 | . '<input type="image" src="' |
||
161 | . $pathIcon16 |
||
162 | . '/delete.png" alt="' |
||
163 | . _AM_ASSESSMENT_EXCLUIRPROVAS |
||
164 | . '" title="' |
||
165 | . _AM_ASSESSMENT_EXCLUIRPROVAS |
||
166 | . '" /><input type="hidden" value="' |
||
167 | . $prova->getVar('cod_prova', 's') |
||
168 | . '" name="cod_prova" id="cod_prova"></form></td></tr>'; |
||
169 | echo $x; |
||
170 | } |
||
171 | /** |
||
172 | * Fecha-se a tabela |
||
173 | */ |
||
174 | echo '</table>'; |
||
175 | /** |
||
176 | * Criando a barra de navegação caso tenha muitas provas |
||
177 | */ |
||
178 | $barra_navegacao = new XoopsPageNav($total_items, $xoopsModuleConfig['qtditens'], $start); |
||
179 | echo $barra_navegacao->renderImageNav(2); |
||
180 | } |
||
181 | } |
||
182 | |||
183 | /** |
||
184 | * Função que exibe uma pergunta com suas respostas e destaca a resposta |
||
185 | * certa e a resposta que o usuário deu. Ela é acionada de dentro da função |
||
186 | * editar resultado |
||
187 | * @param $cod_pergunta |
||
188 | * @param $cod_resposta |
||
189 | */ |
||
190 | function verDetalhePergunta($cod_pergunta, $cod_resposta) |
||
191 | { |
||
192 | /** |
||
193 | * Declaração de variáveis globais |
||
194 | */ |
||
195 | global $xoopsDB, $xoopsUser; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
196 | |||
197 | /** |
||
198 | * Criação da fábrica de provas |
||
199 | */ |
||
200 | $fabrica_de_respostas = new Xoopsassessment_respostasHandler($xoopsDB); |
||
201 | $fabrica_de_perguntas = new Xoopsassessment_perguntasHandler($xoopsDB); |
||
202 | |||
203 | /** |
||
204 | * Criação dos objetos critérios para repassar para a fábrica de provas |
||
205 | */ |
||
206 | $criteria = new Criteria('cod_pergunta', $cod_pergunta); |
||
207 | |||
208 | /** |
||
209 | * Buscando na fábrica as respostas e a pergunta |
||
210 | */ |
||
211 | $respostas = $fabrica_de_respostas->getObjects($criteria); |
||
212 | $pergunta = $fabrica_de_perguntas->get($cod_pergunta); |
||
213 | |||
214 | /** |
||
215 | * Montando a apresentação da pergunta e das respostas |
||
216 | */ |
||
217 | echo "<div class='odd outer'><h3>" . _AM_ASSESSMENT_PERGUNTA . ' ' . $pergunta->getVar('titulo') . '</h3><p><ul>'; |
||
218 | foreach ($respostas as $resposta) { |
||
219 | echo '<li>' . $resposta->getVar('titulo'); |
||
220 | if ($resposta->getVar('iscerta') == 1) { // se for a resposta certa |
||
221 | echo '<span style="color:#009900;font-weight:bold"> <- ' . _AM_ASSESSMENT_RESPCERTA . ' </span>'; |
||
222 | } |
||
223 | if ($resposta->getVar('cod_resposta') == $cod_resposta) { //se for a resposta do usuário |
||
224 | echo ' <span style="font-weight:bold"> <- ' . _AM_ASSESSMENT_RESPUSR . ' </span> '; |
||
225 | } |
||
226 | echo '</li>'; |
||
227 | } |
||
228 | echo '</ul></div>'; |
||
229 | } |
||
230 | |||
231 | /** |
||
232 | * Função que monta o formulário de edição do resultado(prova feita pelo aluno) |
||
233 | * tem que arrumar ela para que tenha um parametro $cod_resultado |
||
234 | */ |
||
235 | function editarResultado() |
||
236 | { |
||
237 | /** |
||
238 | * Declaração de variáveis globais |
||
239 | */ |
||
240 | global $xoopsDB, $xoopsUser; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
241 | |||
242 | /** |
||
243 | * Buscando os dados passados via GET |
||
244 | */ |
||
245 | $cod_resultado = $_GET['cod_resultado']; |
||
246 | |||
247 | /** |
||
248 | * Criação das fábricas dos objetos que vamos precisar |
||
249 | */ |
||
250 | $fabrica_de_resultados = new Xoopsassessment_resultadosHandler($xoopsDB); |
||
251 | $fabrica_de_provas = new Xoopsassessment_provasHandler($xoopsDB); |
||
252 | $fabrica_de_perguntas = new Xoopsassessment_perguntasHandler($xoopsDB); |
||
253 | |||
254 | /** |
||
255 | * Buscando na fábrica o resultado a ser editado |
||
256 | */ |
||
257 | $resultado = $fabrica_de_resultados->get($cod_resultado); |
||
258 | $cod_prova = $resultado->getVar('cod_prova', 's'); |
||
259 | $uid_aluno = $resultado->getVar('uid_aluno', 's'); |
||
260 | |||
261 | /** |
||
262 | * Criação dos objetos critéria para repassar para a fábrica de provas |
||
263 | */ |
||
264 | $criteria_prova = new Criteria('cod_prova', $cod_prova); |
||
265 | $criteria_aluno = new Criteria('uid_aluno', $uid_aluno); |
||
266 | $criteria = new criteriaCompo($criteria_prova); |
||
267 | $criteria->add($criteria_aluno); |
||
268 | |||
269 | /** |
||
270 | * Buscando nas fábricas a prova a ser editada e a qtd de perguntas |
||
271 | */ |
||
272 | $prova = $fabrica_de_provas->get($cod_prova); |
||
273 | $qtd = $fabrica_de_perguntas->getCount($criteria_prova); |
||
274 | |||
275 | /** |
||
276 | * Mandando a Fabrica gerar um formulário de edição |
||
277 | */ |
||
278 | $fabrica_de_resultados->renderFormEditar($resultado, $prova, $qtd, 'editar_resultado.php'); |
||
279 | } |
||
280 | |||
281 | /** |
||
282 | * Função que lista os resultados e permite que se vá para a edição de recultados |
||
283 | * tem que arrumar ela para que tenha um parametro $cod_prova |
||
284 | */ |
||
285 | function listarResultados() |
||
286 | { |
||
287 | /** |
||
288 | * Declaração de variáveis globais |
||
289 | */ |
||
290 | global $xoopsDB, $xoopsUser, $start, $xoopsModuleConfig, $pathIcon16; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
291 | |||
292 | /** |
||
293 | * Buscando os dados passados via GET |
||
294 | */ |
||
295 | $cod_prova = isset($_GET['$cod_prova']) ? $_GET['$cod_prova'] : ''; |
||
296 | |||
297 | /** |
||
298 | * Criação das fábricas dos objetos que vamos precisar |
||
299 | */ |
||
300 | $fabrica_de_provas = new Xoopsassessment_provasHandler($xoopsDB); |
||
301 | $fabrica_de_resultados = new Xoopsassessment_resultadosHandler($xoopsDB); |
||
302 | |||
303 | /** |
||
304 | * Criação dos objetos critéria para repassar para a fábrica de provas |
||
305 | * Vamos limitar para começar do start e buscar 5 na prova de cod_prova |
||
306 | */ |
||
307 | $criteria_prova = new Criteria('cod_prova', $cod_prova); |
||
308 | $criteria_prova->setLimit($xoopsModuleConfig['qtditens']); |
||
309 | if (isset($_GET['start'])) { |
||
310 | $criteria_prova->setStart($_GET['start']); |
||
311 | } |
||
312 | |||
313 | /** |
||
314 | * Buscando na fabrica os resultados (só os 5 que serão mostrados) |
||
315 | */ |
||
316 | $vetor_resultados = $fabrica_de_resultados->getObjects($criteria_prova); |
||
317 | |||
318 | /** |
||
319 | * Mudança nos critérios para agora tirar o limiote de começo e de 5 |
||
320 | * assim podemos buscar a quantidade total de resultados para a prova |
||
321 | * para poder passar para o a barra de navegação |
||
322 | */ |
||
323 | $criteria_prova->setLimit(''); |
||
324 | $criteria_prova->setStart(0); |
||
325 | $total_items = $fabrica_de_resultados->getCount($criteria_prova); |
||
326 | |||
327 | if ($total_items == 0) { // teste para ver se tem provas se não tiver faz |
||
328 | echo _AM_ASSESSMENT_SEMRESULT; |
||
329 | } else { |
||
330 | $estatisticas = $fabrica_de_resultados->stats($cod_prova); |
||
331 | |||
332 | echo "<table class='outer' width='100%'><tr><th colspan='2'>" . _AM_ASSESSMENT_STATS . ' </th></tr>'; |
||
333 | echo '<tr><td class="odd"><img src="../assets/images/stats.png" title="' |
||
334 | . _AM_ASSESSMENT_STATS |
||
335 | . '" alt="' |
||
336 | . _AM_ASSESSMENT_STATS |
||
337 | . '">' |
||
338 | . '</td<td class="odd">' |
||
339 | . _AM_ASSESSMENT_QTDRESULT |
||
340 | . ':' |
||
341 | . $estatisticas['qtd'] |
||
342 | . _AM_ASSESSMENT_NOTAMAX |
||
343 | . $estatisticas['max'] |
||
344 | . _AM_ASSESSMENT_NOTAMIN |
||
345 | . $estatisticas['min'] |
||
346 | . _AM_ASSESSMENT_MEDIA |
||
347 | . $estatisticas['media'] |
||
348 | . ' </td></tr>'; |
||
349 | echo '</table>'; |
||
350 | |||
351 | $barra_navegacao = new XoopsPageNav($total_items, $xoopsModuleConfig['qtditens'], $start, 'start', 'op=' . $_GET['op']); |
||
352 | $prova = $fabrica_de_provas->getObjects($criteria_prova); |
||
353 | $titulo = $prova[0]->getVar('titulo'); |
||
354 | echo "<table class='outer' width='100%'><tr><th colspan='2'>" . _AM_ASSESSMENT_LISTARESULTADOS . '</th></tr>'; |
||
355 | foreach ($vetor_resultados as $resultado) { |
||
356 | $uid = $resultado->getVar('uid_aluno', 's'); |
||
357 | $cod_resultado = $resultado->getVar('cod_resultado', 's'); |
||
358 | $data_fim = $resultado->getVar('data_fim', 's'); |
||
359 | $uname = $xoopsUser->getUnameFromId($uid); |
||
360 | $cod_prova_atual = $resultado->getVar('cod_prova', 's'); |
||
361 | $terminoutexto = _AM_ASSESSMENT_PROVAANDAMENTO; |
||
362 | if ($resultado->getVar('terminou') == 1) { |
||
363 | $terminoutexto = _AM_ASSESSMENT_TERMINADA; |
||
364 | } |
||
365 | $x = '<tr><td> ' |
||
366 | . _AM_ASSESSMENT_NOMEALUNO |
||
367 | . ' ' |
||
368 | . $uname |
||
369 | . '<br /> ' |
||
370 | . _AM_ASSESSMENT_DATA |
||
371 | . ' <strong>' |
||
372 | . $data_fim |
||
373 | . '</strong><br />' |
||
374 | . _AM_ASSESSMENT_CODPROVA |
||
375 | . '<a href="main.php?op=editar_prova&cod_prova=' |
||
376 | . $cod_prova_atual |
||
377 | . '">' |
||
378 | . $cod_prova_atual |
||
379 | . '</a> ' |
||
380 | . $terminoutexto |
||
381 | . '</td>'; |
||
382 | $x .= '<td width="50"><a href="main.php?op=editar_resultado&cod_resultado=' . $cod_resultado . '"><img src="' . $pathIcon16 . '/view.png" alt=""></a></td>'; |
||
383 | $x .= '</tr>'; |
||
384 | echo $x; |
||
385 | } |
||
386 | echo '</table>'; |
||
387 | echo $barra_navegacao->renderImageNav(2); |
||
388 | } |
||
389 | } |
||
390 | |||
391 | function listarperguntas() |
||
392 | { |
||
393 | global $xoopsDB, $startper, $xoopsModuleConfig, $pathIcon16; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
394 | $fabrica_de_perguntas = new Xoopsassessment_perguntasHandler($xoopsDB); |
||
395 | $cod_prova = $_GET['cod_prova']; |
||
396 | $criteria = new Criteria('cod_prova', $cod_prova); |
||
397 | $criteria->setSort('ordem'); |
||
398 | $criteria->setOrder('ASC'); |
||
399 | $criteria->setLimit($xoopsModuleConfig['qtditens']); |
||
400 | $criteria->setStart($startper); |
||
401 | $vetor_perguntas = $fabrica_de_perguntas->getObjects($criteria); |
||
402 | $criteria->setLimit(''); |
||
403 | $criteria->setStart(0); |
||
404 | $total_items = $fabrica_de_perguntas->getCount($criteria); |
||
405 | $barra_navegacao = new XoopsPageNav($total_items, $xoopsModuleConfig['qtditens'], $startper, 'startper', 'op=' . $_GET['op'] . '&' . 'cod_prova=' . $_GET['cod_prova']); |
||
406 | |||
407 | echo "<table class='outer' width='100%'><tr><th colspan=3>" . _AM_ASSESSMENT_LISTAPERGASSOC . '</th></tr>'; |
||
408 | if ($vetor_perguntas == null) { |
||
409 | echo "<tr><td class='odd'>" . _AM_ASSESSMENT_SEMPERGUNTA . '</td></tr>'; |
||
410 | } |
||
411 | foreach ($vetor_perguntas as $pergunta) { |
||
412 | $x = "<tr><td class='odd'>" . $pergunta->getVar('titulo', 's'); |
||
413 | $x .= '</td><td width="50" class="odd"><a href="main.php?op=editar_pergunta&cod_pergunta=' . $pergunta->getVar('cod_pergunta', 's'); |
||
414 | $x .= '"><img src="' . $pathIcon16 . '/edit.png" alt="' . _AM_ASSESSMENT_EDITARPERGUNTAS . '" title="' . _AM_ASSESSMENT_EDITARPERGUNTAS . '"></a></td>'; |
||
415 | $x .= '<td class="odd" width="50"><form action="excluirpergunta.php" method="post">' |
||
416 | . $GLOBALS['xoopsSecurity']->getTokenHTML() |
||
417 | . '<input type="image" src="' |
||
418 | . $pathIcon16 |
||
419 | . '/delete.png" alt="' |
||
420 | . _AM_ASSESSMENT_EXCLUIRPERGUNTAS |
||
421 | . '" title="' |
||
422 | . _AM_ASSESSMENT_EXCLUIRPERGUNTAS |
||
423 | . '" /><input type="hidden" value="' |
||
424 | . $pergunta->getVar('cod_pergunta', 's') |
||
425 | . '" name="cod_pergunta" id="cod_pergunta"></form></td></tr>'; |
||
426 | echo $x; |
||
427 | } |
||
428 | echo '</table>'; |
||
429 | echo $barra_navegacao->renderImageNav(2); |
||
430 | } |
||
431 | |||
432 | function cadastrarpergunta() |
||
433 | { |
||
434 | global $xoopsDB; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
435 | $cod_prova = $_GET['cod_prova']; |
||
436 | $fabrica_de_provas = new Xoopsassessment_provasHandler($xoopsDB); |
||
437 | $prova = $fabrica_de_provas->get($cod_prova); |
||
438 | |||
439 | $fabrica_de_perguntas = new Xoopsassessment_perguntasHandler($xoopsDB); |
||
440 | $fabrica_de_perguntas->renderFormCadastrar('cadastropergunta.php', $prova); |
||
441 | } |
||
442 | |||
443 | function cadastrarprova() |
||
444 | { |
||
445 | global $xoopsDB; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
446 | $fabrica_de_provas = new Xoopsassessment_provasHandler($xoopsDB); |
||
447 | $fabrica_de_provas->renderFormCadastrar('cadastroprova.php'); |
||
448 | } |
||
449 | |||
450 | function editarprova() |
||
451 | { |
||
452 | global $xoopsDB; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
453 | $cod_prova = $_GET['cod_prova']; |
||
454 | |||
455 | $fabrica_de_provas = new Xoopsassessment_provasHandler($xoopsDB); |
||
456 | $prova = $fabrica_de_provas->get($cod_prova); |
||
457 | $fabrica_de_provas->renderFormEditar('editarprova.php', $prova); |
||
458 | } |
||
459 | |||
460 | function editarpergunta() |
||
461 | { |
||
462 | global $xoopsDB; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
463 | $cod_pergunta = $_GET['cod_pergunta']; |
||
464 | // loadModuleAdminMenu(1,"migalhas3"); |
||
465 | $mainAdmin = new ModuleAdmin(); |
||
466 | echo $mainAdmin->addNavigation('main.php?op=editar_pergunta'); |
||
467 | $criteria = new Criteria('cod_pergunta', $cod_pergunta); |
||
468 | $criteria->setSort('cod_resposta'); |
||
469 | $criteria->setOrder('ASC'); |
||
470 | $fabrica_de_respostas = new Xoopsassessment_respostasHandler($xoopsDB); |
||
471 | $respostas = $fabrica_de_respostas->getObjects($criteria); |
||
472 | $fabrica_de_perguntas = new Xoopsassessment_perguntasHandler($xoopsDB); |
||
473 | $pergunta = $fabrica_de_perguntas->get($cod_pergunta); |
||
474 | $fabrica_de_perguntas->renderFormEditar('editarpergunta.php', $pergunta, $respostas); |
||
475 | } |
||
476 | |||
477 | function listarDocumentos() |
||
478 | { |
||
479 | /** |
||
480 | * Listar variáveis globais |
||
481 | */ |
||
482 | global $xoopsDB, $start, $startdoc, $xoopsModuleConfig, $pathIcon16; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
483 | |||
484 | /** |
||
485 | * Buscando os dados passados via GET |
||
486 | */ |
||
487 | $cod_prova = isset($_GET['cod_prova']) ? $_GET['cod_prova'] : ''; |
||
488 | |||
489 | /** |
||
490 | * Montando os criterios para buscar o total de documentos para montar a barra de navegacao |
||
491 | */ |
||
492 | $criteria = new Criteria('cod_prova', $cod_prova); |
||
493 | $criteria->setLimit(''); |
||
494 | $criteria->setStart(0); |
||
495 | $fabrica_de_documentos = new Xoopsassessment_documentosHandler($xoopsDB); |
||
496 | $total_items = $fabrica_de_documentos->getCount($criteria); |
||
497 | if ($total_items == 0) { |
||
498 | echo _AM_ASSESSMENT_SEMDOCUMENTO; |
||
499 | } else { |
||
500 | /** |
||
501 | * Montando os criterios para buscar somente os documentos desta página |
||
502 | */ |
||
503 | $criteria->setLimit($xoopsModuleConfig['qtditens']); |
||
504 | $criteria->setStart($startdoc); |
||
505 | |||
506 | $vetor_documentos = $fabrica_de_documentos->getObjects($criteria); |
||
507 | |||
508 | $barra_navegacao = new XoopsPageNav($total_items, $xoopsModuleConfig['qtditens'], $startdoc, 'startdoc', 'op=' . $_GET['op'] . '&' . 'cod_prova=' . $cod_prova); |
||
509 | |||
510 | echo "<table class='outer' width='100%'><tr><th colspan='3'>" . _AM_ASSESSMENT_LISTADOC . '</th></tr>'; |
||
511 | foreach ($vetor_documentos as $documento) { |
||
512 | $x = "<tr><td class='odd'>" . $documento->getVar('titulo', 's') . "</td><td class='odd' width='50'>"; |
||
513 | |||
514 | $x .= '<a href="main.php?op=editar_documento&cod_documento=' . $documento->getVar('cod_documento', 's'); |
||
515 | $x .= '"><img src="' . $pathIcon16 . '/edit.png" alt="' . _AM_ASSESSMENT_EDITARDOC . '" title="' . _AM_ASSESSMENT_EDITARDOC . '"></a><br /></td>'; |
||
516 | //$x.= '<td class="odd" width="50"><a href="main.php?op=resultados_prova&cod_documento='.$documento->getVar("cod_documento", "s").'"><img src="../assets/images/detalhe.gif" alt="Ver Resultados" style="border-color:#E6E6E6"></a></td>'; |
||
517 | $x .= '<td class="odd" width="50"><form action="excluirdocumento.php" method="post">' |
||
518 | . $GLOBALS['xoopsSecurity']->getTokenHTML() |
||
519 | . '<input type="image" src="' |
||
520 | . $pathIcon16 |
||
521 | . '/delete.png" alt="' |
||
522 | . _AM_ASSESSMENT_EXCLUIRDOC |
||
523 | . '" title="' |
||
524 | . _AM_ASSESSMENT_EXCLUIRDOC |
||
525 | . '"/><input type="hidden" value="' |
||
526 | . $documento->getVar('cod_documento', 's') |
||
527 | . '" name="cod_documento" id="cod_documento"><input type="hidden" value="' |
||
528 | . $documento->getVar('cod_prova', 's') |
||
529 | . '" name="cod_prova" id="cod_prova"></form></td></tr>'; |
||
530 | echo $x; |
||
531 | } |
||
532 | echo '</table>'; |
||
533 | echo $barra_navegacao->renderImageNav(2); |
||
534 | } |
||
535 | } |
||
536 | |||
537 | function cadastrarDocumento() |
||
538 | { |
||
539 | /** |
||
540 | * Buscando os dados passados via GET |
||
541 | */ |
||
542 | global $xoopsDB; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
543 | $cod_prova = isset($_GET['cod_prova']) ? $_GET['cod_prova'] : ''; |
||
544 | |||
545 | if ($cod_prova == '') { |
||
546 | echo _AM_ASSESSMENT_INSTRUCOESNOVODOC; |
||
547 | } else { |
||
548 | $fabrica_de_documentos = new Xoopsassessment_documentosHandler($xoopsDB); |
||
549 | $fabrica_de_documentos->renderFormCadastrar('cadastrardocumento.php', $cod_prova); |
||
550 | } |
||
551 | } |
||
552 | |||
553 | function editarDocumento() |
||
554 | { |
||
555 | global $xoopsDB; |
||
0 ignored issues
–
show
Compatibility
Best Practice
introduced
by
Use of
global functionality is not recommended; it makes your code harder to test, and less reusable.
Instead of relying on 1. Pass all data via parametersfunction myFunction($a, $b) {
// Do something
}
2. Create a class that maintains your stateclass MyClass {
private $a;
private $b;
public function __construct($a, $b) {
$this->a = $a;
$this->b = $b;
}
public function myFunction() {
// Do something
}
}
![]() |
|||
556 | $cod_documento = $_GET['cod_documento']; |
||
557 | |||
558 | $fabrica_de_documentos = new Xoopsassessment_documentosHandler($xoopsDB); |
||
559 | $fabrica_de_documentos->renderFormEditar('editar_documento.php', $cod_documento); |
||
560 | } |
||
561 | |||
562 | function seloqualidade() |
||
563 | { |
||
564 | echo '<img align="right" src="../assets/images/mlogo.png" id="marcello_brandao">'; |
||
565 | } |
||
566 | |||
567 | switch ($op) { |
||
568 | |||
569 | case 'manter_documentos': |
||
570 | // loadModuleAdminMenu(3,"-> "._AM_ASSESSMENT_DOCUMENTO); |
||
571 | $mainAdmin = new ModuleAdmin(); |
||
572 | echo $mainAdmin->addNavigation('main.php?op=manter_documentos'); |
||
573 | listarDocumentos(); |
||
574 | cadastrarDocumento(); |
||
575 | seloqualidade(); |
||
576 | break; |
||
577 | |||
578 | View Code Duplication | case 'manter_provas': |
|
579 | // loadModuleAdminMenu(1,"-> "._AM_ASSESSMENT_PROVA); |
||
580 | $mainAdmin = new ModuleAdmin(); |
||
581 | echo $mainAdmin->addNavigation('main.php?op=manter_provas'); |
||
582 | |||
583 | // $mainAdmin = new ModuleAdmin(); |
||
584 | // echo $mainAdmin->addNavigation('main.php?op=manter_provas'); |
||
585 | // $mainAdmin->addItemButton(_AM_ASSESSMENT_CADASTRAR . " " . _AM_ASSESSMENT_PERGUNTA, '#cadastrar_pergunta', 'add'); |
||
586 | // $mainAdmin->addItemButton(_AM_ASSESSMENT_CADASTRAR . " " . _AM_ASSESSMENT_DOCUMENTO, '#cadastrar_documento', 'add'); |
||
587 | // $mainAdmin->addItemButton(_MI_ASSESSMENT_ADMENU1, "{$currentFile}?op==manter_provas", 'list'); |
||
588 | // echo $mainAdmin->renderButton('left'); |
||
589 | |||
590 | listarprovas(); |
||
591 | cadastrarprova(); |
||
592 | seloqualidade(); |
||
593 | break; |
||
594 | |||
595 | case 'manter_resultados': |
||
596 | // loadModuleAdminMenu(2,"-> "._AM_ASSESSMENT_RESULTADO); |
||
597 | $mainAdmin = new ModuleAdmin(); |
||
598 | echo $mainAdmin->addNavigation('main.php?op=manter_resultados'); |
||
599 | listarResultados(); |
||
600 | seloqualidade(); |
||
601 | break; |
||
602 | |||
603 | case 'resultados_prova': |
||
604 | // loadModuleAdminMenu(2,"-> "._AM_ASSESSMENT_RESULTPROVA); |
||
605 | $mainAdmin = new ModuleAdmin(); |
||
606 | echo $mainAdmin->addNavigation('main.php?op=manter_prova'); |
||
607 | listarResultados(); |
||
608 | seloqualidade(); |
||
609 | break; |
||
610 | |||
611 | case 'ver_detalhe_pergunta': |
||
612 | // loadModuleAdminMenu(2,_AM_ASSESSMENT_RESPALUNO); |
||
613 | $mainAdmin = new ModuleAdmin(); |
||
614 | echo $mainAdmin->addNavigation('main.php?op=ver_detalhe_pergunta'); |
||
615 | verDetalhePergunta($_GET['cod_pergunta'], $_GET['cod_resposta']); |
||
616 | seloqualidade(); |
||
617 | break; |
||
618 | |||
619 | case 'editar_prova': |
||
620 | // loadModuleAdminMenu(1,"-> "._AM_ASSESSMENT_PROVA." - "._AM_ASSESSMENT_EDITAR); |
||
621 | $mainAdmin = new ModuleAdmin(); |
||
622 | echo $mainAdmin->addNavigation('main.php?op=manter_provas'); |
||
623 | $mainAdmin->addItemButton(_AM_ASSESSMENT_CADASTRAR . ' ' . _AM_ASSESSMENT_PERGUNTA, '#cadastrar_pergunta', 'add'); |
||
624 | $mainAdmin->addItemButton(_AM_ASSESSMENT_CADASTRAR . ' ' . _AM_ASSESSMENT_DOCUMENTO, '#cadastrar_documento', 'add'); |
||
625 | $mainAdmin->addItemButton(_MI_ASSESSMENT_ADMENU1, "{$currentFile}?op==manter_provas", 'list'); |
||
626 | |||
627 | echo $mainAdmin->renderButton('left'); |
||
628 | |||
629 | // echo "<a href=#cadastrar_pergunta>" . _AM_ASSESSMENT_CADASTRAR . " " . _AM_ASSESSMENT_PERGUNTA . "</a> | <a href=#cadastrar_documento>" . _AM_ASSESSMENT_CADASTRAR |
||
630 | // . " " . _AM_ASSESSMENT_DOCUMENTO . "</a>"; |
||
631 | editarprova(); |
||
632 | echo "<table class='outer' width='100%'><tr><td valign=top width='50%'>"; |
||
633 | listarperguntas(); |
||
634 | echo "</td><td valign=top width='50%'>"; |
||
635 | listarDocumentos(); |
||
636 | echo "</td></tr><tr><td colspan='2'>"; |
||
637 | echo '<br /><br /><a name="cadastrar_pergunta">'; |
||
638 | cadastrarpergunta(); |
||
639 | echo "</td></tr><tr><td colspan='2'>"; |
||
640 | echo '<br /><br /><a name="cadastrar_documento">'; |
||
641 | cadastrarDocumento(); |
||
642 | echo '</td></tr></table>'; |
||
643 | seloqualidade(); |
||
644 | break; |
||
645 | |||
646 | case 'editar_resultado': |
||
647 | // loadModuleAdminMenu(2,"-> "._AM_ASSESSMENT_PROVA." "._AM_ASSESSMENT_EDITAR); |
||
648 | $mainAdmin = new ModuleAdmin(); |
||
649 | echo $mainAdmin->addNavigation('main.php'); |
||
650 | editarResultado(); |
||
651 | seloqualidade(); |
||
652 | break; |
||
653 | |||
654 | case 'editar_documento': |
||
655 | // loadModuleAdminMenu(3,"-> "._AM_ASSESSMENT_DOCUMENTO." "._AM_ASSESSMENT_EDITAR); |
||
656 | $mainAdmin = new ModuleAdmin(); |
||
657 | echo $mainAdmin->addNavigation('main.php'); |
||
658 | editarDocumento(); |
||
659 | seloqualidade(); |
||
660 | break; |
||
661 | |||
662 | case 'editar_pergunta': |
||
663 | $mainAdmin = new ModuleAdmin(); |
||
664 | echo $mainAdmin->addNavigation('main.php'); |
||
665 | editarpergunta(); |
||
666 | seloqualidade(); |
||
667 | break; |
||
668 | |||
669 | case 'default': |
||
670 | |||
671 | View Code Duplication | default: |
|
672 | // loadModuleAdminMenu(1,"-> "._AM_ASSESSMENT_PROVA); |
||
673 | $mainAdmin = new ModuleAdmin(); |
||
674 | echo $mainAdmin->addNavigation('main.php'); |
||
675 | listarprovas(); |
||
676 | cadastrarprova(); |
||
677 | seloqualidade(); |
||
678 | break; |
||
679 | } |
||
680 | |||
681 | // } |
||
682 | //} |
||
683 | |||
684 | //fechamento das tags de if lá de cimão verificação se os arquivos do phppp existem |
||
685 | include_once __DIR__ . '/admin_footer.php'; |
||
686 |
The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.
The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.
To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.