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 "

Instruções para inserir novos logs para análise:

  1. Em primeiro lugar, crie uma nova pasta no diretório cursos/, com o nome do curso que você pretende analisar.
  2. Agora, navegue pelo iTarefa até a área do gerenciador de todas as submissões (bloco itarefa -> relatório -> gerenciar todas as submissões).
  3. No gerenciador de submissões, utilize o exportador geral, que está disponível no botão de 'download' mais acima na tela.
  4. Por fim, insira na pasta criada no primeiro passo o arquivo .zip que fori gerado pelo iTarefa com os dados dos alunos.

Atenção! Não altere nem o nome do arquivo gerado pelo iTarefa, pois o sistema segue o mesmo padrão.

Essa versão é incompatível com arquivos gerados pelo iTarefa antes de 2020.

"; } ?>