<?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>";
}
?>