<?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) {
<<<<<<< HEAD

=======
	echo $curso . ' ' . $aluno  . ' ' . $exercicio . ' ';
>>>>>>> master
	$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;
}

<<<<<<< HEAD

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 ($arquivo) {
	$handle = fopen("temp/" . $arquivo, "r");
	$inicio = false;
	$string_final = "";
	if ($handle) {
	    while (($line = fgets($handle)) !== false) {
			// Linhas comentadas, pq o formato dos logs foi alterado!
			// if (strpos($line, "::logs::") !== false) {
  			// 	$inicio = true;
  			// 	continue;
  			// }
  			// if ($inicio) {
  			// 	$ex = explode(",", $line);
  			// 	if (count($ex) > 3) {
  			// 		$string_final .= $ex[1] . "," . $ex[2] . ",1,0\\n";
  			// 	}
			  // }
			if (strpos($line, "::logs::") !== false) {
				$string_final = explode("::logs::", $line)[1];
				break;
			}
	    }
	    fclose($handle);
	} else {
	    echo "ERRO AO LER O ARQUIVO";
	}

	$logs_array = explode("[", $string_final);
	$string_final = "";
	foreach ($logs_array as $item) {
		$mins = explode(",", $item);
		if ($mins[0] && is_numeric($mins[0])) {
			$string_final .= $mins[0] . "," . $mins[1] . ",1,0\\n";
		}
	}

	return $string_final;
>>>>>>> master
}

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);

<<<<<<< HEAD
	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;
=======
	  	$exp = explode("-", $files1[$i]);
	  	$fi = "";
	  	for ($j = 0; $j < count($exp) - 1; $j++) {
	  		$fi .= $exp[$j];
	  		if ($j < (count($exp) - 3)) {
	  			$fi .= "-";
	  		}
		  }

	  	$ja_existe = false;
	  	for ($j = 0; $j < count($exercicios); $j++) {
	  		if ($exercicios[$j][0] == $fi) {
	  			$ja_existe = true;
	  			break;
	  		}
		  }		  

	  	if (!$ja_existe) {
			$temp = explode("202", $files1[$i])[0];
			$ft = [$fi, $temp];

	  		array_push($exercicios, $ft);
	  	}

	  	unlink($dir . '/' . $files1[$i]);
	  }
	  
  	return $exercicios;
>>>>>>> master
}

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

?>