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

function pegarLogsDoAluno ($curso, $aluno, $exercicio) {
	echo $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;
  		if ( strpos($files1[$i], $exercicio) !== false) {
  			$arquivo = $files1[$i];
  		} else {
  			//unlink($dir . '/' . $files1[$i]);
  		}
  	}

  	return $arquivo;
}

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

function listarAlunos ($curso) {

	$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;
  		$ex = explode("_iassign_", $files1[$i])[1];
      $ex = explode("-", $ex)[0];
  		
  		$ja_existe = false;
  		for ($j = 0; $j < count($nomes); $j ++) {
  			if ($nomes[$j] == $ex) {
  				$ja_existe = true;
  				break;
  			}
  		}

  		if (!$ja_existe) {
  			array_push($nomes, $ex);
  		}
  	}

  	return $nomes;
}

function listarExercicios ($curso) {
	$zip = new ZipArchive;

	$dir    = 'cursos/' . $curso;
  	$files1 = scandir($dir);
  	$exercicios  = array();
  	
  	if (count($files1) < 3) {
  		return null;
  	}

  	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/');
		  $zip->close();
		}
  	}

  	$dir    = 'temp';
  	$files1 = scandir($dir);
  	
  	if (count($files1) < 3) {
  		return null;
  	}

  	for ($i = 0; $i < count($files1); $i++) {
  		if ($files1[$i] == "." || $files1[$i] == "..") continue;

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

function instrucoes () {

	return "<p class='text-reduced'>
            <b>Instruções para inserir novos logs para análise:</b> 
            <p>Em primeiro lugar, crie uma nova pasta no diretório cursos/, com o nome do curso que você pretende analisar.
                Em seguida, insira nessa pasta recém-criada todos os arquivos .zip que foram gerados pelo iTarefa com os dados dos alunos.</p>
            <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>";
}

?>