<?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 pegarLogsDoAlunoComoString ($curso, $aluno, $exercicio) {

	$registros = abrirArquivoCSV($_GET['curso'], false);

	$aluno_raw = str_replace(" ", "_", $aluno);
	$exercicio_raw = str_replace("_", " ", $curso);

	foreach ($registros as $registro) {

		//if (str_contains($registro))

	}

	// $handle = fopen("temp/" . $arquivo, "r");
	// $inicio = false;
	// $string_final = "";
	// if ($handle) {		
		
	//     while (($line = fgets($handle)) !== false) {
			
	//         if ( strpos($line, "::logs::") !== false) {
  	// 			$inicio = true;
	// 			print $line;
	// 			break;
  	// 		}
  	// 		if ($inicio) {
  	// 			$ex = explode(",", $line);
  	// 			if (count($ex) > 3) {
  	// 				$string_final .= $ex[1] . "," . $ex[2] . ",1,0\\n";
  	// 			}
  	// 		}
	//     }
	//     fclose($handle);
	// } else {
	//     echo "ERRO AO LER O ARQUIVO";
	// }
	// print 'a'. $string_final;
	
	// exit;

	// 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 = 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 = str_replace("_", " ", explode("/", $registro[1])[0]);

		array_push($exercicios, $nome);
	}

  	return array_unique($exercicios);
}

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

?>