123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <?php
- function listarCursos () {
- $dir = 'cursos';
- $files1 = scandir($dir);
- $cursos = array();
- for ($i = 0; $i < count($files1); $i++) {
- if ($files1[$i] == "." || $files1[$i] == "..") continue;
- array_push($cursos, $files1[$i]);
- }
- return $cursos;
- }
- function qualVersaoDoIVProg ($arquivo) {
- $handle = fopen("temp/" . $arquivo, "r");
- $menu = false;
- if ($handle) {
- while (($line = fgets($handle)) !== false) {
- if ( strpos($line, "fluid") !== false) {
- $menu = true;
- break;
- }
- }
- fclose($handle);
- } else {
- echo "ERRO AO LER O ARQUIVO";
- }
- if ($menu) {
- return "menu";
- } else {
- return "contexto";
- }
- }
- // delete all files and sub-folders from a folder
- function deleteFolderAndFiles($dir) {
- foreach(glob($dir . '/*') as $file) {
- if(is_dir($file))
- deleteFolderAndFiles($file);
- else
- unlink($file);
- }
- rmdir($dir);
- }
- function pegarLogsDoAluno ($curso, $aluno, $exercicio) {
- $zip = new ZipArchive;
- $dir = 'cursos/' . $curso;
- $files1 = scandir($dir);
- $nomes = array();
- if (count($files1) < 3) {
- return null;
- }
-
- for ($i = 0; $i < count($files1); $i++) {
- if ($files1[$i] == "." || $files1[$i] == "..") continue;
- if ( strpos($files1[$i], $aluno) !== false ) {
- array_push($nomes, $files1[$i]);
- }
- }
-
- for ($i = 0; $i < count($nomes); $i++) {
- if ($nomes[$i] == "." || $nomes[$i] == "..") continue;
- $res = $zip->open($dir . '/' . $nomes[$i]);
- if ($res === TRUE) {
- $zip->extractTo('temp/');
- $zip->close();
- }
- }
- $dir = 'temp';
- $files1 = scandir($dir);
-
- if (count($files1) < 3) {
- return null;
- }
- $arquivo = "";
-
- for ($i = 0; $i < count($files1); $i++) {
- if ($files1[$i] == "." || $files1[$i] == "..") continue;
- $exp = explode("-", $files1[4]);
- $fi = "";
- for ($j = 0; $j < count($exp) - 1; $j++) {
- $fi .= $exp[$j];
- if ($j < (count($exp) - 3)) {
- $fi .= "-";
- }
- }
- if (strpos($fi, $exercicio) !== false) {
- $arquivo = $files1[$i];
- } else {
- //unlink($dir . '/' . $files1[$i]);
- }
- }
- return $arquivo;
- }
- function pegarArquivoMaisRecente ($curso, $aluno, $exercicio) {
- $registros = abrirArquivoCSV($_GET['curso'], false);
- $reg_aluno_exercicio = array();
- foreach ($registros as $registro) {
- $reg_proc = clean(str_replace("_", " ", $registro[1]));
-
- if (strpos($reg_proc, $aluno) !== false
- && strpos($reg_proc, $exercicio) !== false) {
-
- array_push($reg_aluno_exercicio, $registro);
- }
- }
- $highest = 0;
- $registro_mais_atual = null;
- foreach ($reg_aluno_exercicio as $item) {
- if ($item[0] > $highest) {
- $highest = $item[0];
- $registro_mais_atual = $item;
- }
- }
- return $registro_mais_atual[1];
-
- }
- function pegarLogsDoAlunoComoString ($curso, $aluno, $exercicio) {
- $file = pegarArquivoMaisRecente($curso, $aluno, $exercicio);
- $handle = fopen("temp/" . $curso . "/" . $file, "r");
- $string_final = "";
- if ($handle) {
-
- while (($line = fgets($handle)) !== false) {
-
- if (strpos($line, "::logs::") !== false) {
-
- $exploded = explode("],[", $line);
- foreach ($exploded as $log) {
- $temp = explode(',', $log);
- if (count($temp) == 4)
- $string_final .= $temp[0] . "," . $temp[1] . ",1,0\\n";
- }
- break;
- }
- }
- fclose($handle);
- return $string_final;
- }
- }
- function abrirArquivoCSV ($curso, $delete_temp = true) {
- $zip = new ZipArchive;
- $dir = 'cursos/' . $curso;
- $files1 = scandir($dir);
- $exercicios = array();
-
- if (count($files1) < 3) {
- return null;
- }
- $temp_folder = 'temp/' . $curso;
- for ($i = 0; $i < count($files1); $i++) {
- if ($files1[$i] == "." || $files1[$i] == "..") continue;
- $res = $zip->open($dir . '/' . $files1[$i]);
- if ($res === TRUE) {
- $zip->extractTo($temp_folder);
- $zip->close();
- }
- }
- if (!file_exists($temp_folder . '/index.csv')) {
- return null;
- }
-
- $final_array = array();
- $file = fopen($temp_folder . '/index.csv', 'r');
- while (($line = fgetcsv($file)) !== FALSE) {
- array_push($final_array, $line);
- }
- fclose($file);
- if ($delete_temp)
- deleteFolderAndFiles($temp_folder);
- return $final_array;
- }
- function listarAlunos ($curso) {
-
- $registros = abrirArquivoCSV($curso);
- $nomes = array();
- foreach ($registros as $registro) {
- if ($registro[0] == 'submissionid') continue;
- $nome = clean(str_replace("_", " ", explode("/", $registro[1])[1]));
- array_push($nomes, $nome);
- }
- $nomes = array_unique($nomes);
- asort($nomes);
- return $nomes;
- }
- function listarExercicios ($curso) {
-
- $registros = abrirArquivoCSV($curso);
- $exercicios = array();
- foreach ($registros as $registro) {
- if ($registro[0] == 'submissionid') continue;
- $nome = clean(str_replace("_", " ", explode("/", $registro[1])[0]));
- array_push($exercicios, $nome);
- }
- return array_unique($exercicios);
- }
- function clean($string) {
- $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
-
- return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
- }
-
- function instrucoes () {
- return "<p class='text-reduced'>
- <b>Instruções para inserir novos logs para análise:</b>
- <ol>
- <li>Em primeiro lugar, crie uma nova pasta no diretório cursos/, com o nome do curso que você pretende analisar.</li>
- <li>Agora, navegue pelo iTarefa até a área do gerenciador de todas as submissões (bloco itarefa -> relatório -> gerenciar todas as submissões).</li>
- <li>No gerenciador de submissões, utilize o exportador geral, que está disponível no botão de 'download' mais acima na tela.</li>
- <li>Por fim, insira na pasta criada no primeiro passo o arquivo .zip que fori gerado pelo iTarefa com os dados dos alunos.</li>
- </ol>
- <p><b>Atenção!</b> Não altere nem o nome do arquivo gerado pelo iTarefa, pois o sistema segue o mesmo padrão.</p>
- <p style='color: red;'>Essa versão é incompatível com arquivos gerados pelo iTarefa antes de 2020.</p>
- </p>";
- }
- ?>
|