Browse Source

Fixed listing students and exercises in the new file format

Igor 3 years ago
parent
commit
3e13f253fa
4 changed files with 120 additions and 108 deletions
  1. 6 4
      curso.php
  2. 101 90
      functions.php
  3. 8 8
      relatorio_aluno_exercicio.php
  4. 5 6
      relatorio_exercicio.php

+ 6 - 4
curso.php

@@ -64,8 +64,8 @@ $exercicios = listarExercicios($_GET['curso']);
               <select class="form-control" id="inputaluno" name="aluno">
                 <option>Todos</option>
                 <?php
-                  for ($i = 0; $i < count($alunos); $i++) {
-                    echo "<option value='$alunos[$i]'>" . str_replace('_', ' ', $alunos[$i]) . "</option>";
+                  foreach ($alunos as $aluno) {
+                    echo "<option value='$aluno'>$aluno</option>";
                   }
                 ?>
               </select>
@@ -78,9 +78,11 @@ $exercicios = listarExercicios($_GET['curso']);
               <select class="form-control" id="inputexercicio" name="exercicio">
                 <option value="Todos">Todos</option>
                 <?php
-                  for ($i = 0; $i < count($exercicios); $i++) {
-                    echo "<option value='$exercicios[$i]'>" . str_replace('_', ' ', $exercicios[$i]) . "</option>";
+
+                  foreach ($exercicios as $exercicio) {
+                    echo "<option value='$exercicio'>$exercicio</option>";
                   }
+                  
                 ?>
               </select>
             </div>

+ 101 - 90
functions.php

@@ -36,6 +36,17 @@ function qualVersaoDoIVProg ($arquivo) {
 	}
 }
 
+// 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;
@@ -94,70 +105,51 @@ function pegarLogsDoAluno ($curso, $aluno, $exercicio) {
   	return $arquivo;
 }
 
-function pegarLogsDoAlunoComoString ($arquivo) {
-	
-	$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;
+function pegarLogsDoAlunoComoString ($curso, $aluno, $exercicio) {
 
-	return $string_final;
-}
+	$registros = abrirArquivoCSV($_GET['curso'], false);
 
-function listarAlunos ($curso) {
+	$aluno_raw = str_replace(" ", "_", $aluno);
+	$exercicio_raw = str_replace("_", " ", $curso);
 
-	$dir    = 'cursos/' . $curso;
-  	$files1 = scandir($dir);
-  	$nomes  = array();
-  	
-  	if (count($files1) < 3) {
-  		return null;
-  	}
+	foreach ($registros as $registro) {
 
-  	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 (str_contains($registro))
 
-  		if (!$ja_existe) {
-  			array_push($nomes, $ex);
-  		}
-  	}
+	}
 
-  	return $nomes;
+	// $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 listarExercicios ($curso) {
+
+function abrirArquivoCSV ($curso, $delete_temp = true) {
 	$zip = new ZipArchive;
 
 	$dir    = 'cursos/' . $curso;
@@ -168,49 +160,68 @@ function listarExercicios ($curso) {
   		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/');
+		  $zip->extractTo($temp_folder);
 		  $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;
+	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);
 
-	  	$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] == $fi) {
-	  			$ja_existe = true;
-	  			break;
-	  		}
-	  	}
-
-	  	if (!$ja_existe) {
-	  		array_push($exercicios, $fi);
-	  	}
-
-	  	unlink($dir . '/' . $files1[$i]);
-  	}
-  	return $exercicios;
+	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 () {

+ 8 - 8
relatorio_aluno_exercicio.php

@@ -14,11 +14,9 @@ $curso_selecionado = $_GET['curso'];
 $aluno_selecionado = $_GET['aluno'];
 $exercicio_selecionado = $_GET['exercicio'];
 
-$arquivoLogsAluno = pegarLogsDoAluno($curso_selecionado, $aluno_selecionado, $exercicio_selecionado);
+$logsAlunoString = pegarLogsDoAlunoComoString($curso_selecionado, $aluno_selecionado, $exercicio_selecionado);
 
-$logsAlunoString = pegarLogsDoAlunoComoString($arquivoLogsAluno);
-
-$qualVersao = qualVersaoDoIVProg($arquivoLogsAluno);
+//$qualVersao = qualVersaoDoIVProg($arquivoLogsAluno);
 
 ?>
 
@@ -88,8 +86,8 @@ $qualVersao = qualVersaoDoIVProg($arquivoLogsAluno);
               <select class="form-control" id="inputaluno" name="aluno">
                 <option>Todos</option>
                 <?php
-                  for ($i = 0; $i < count($alunos); $i++) {
-                    echo "<option value='$alunos[$i]'" . ($alunos[$i] == $_GET['aluno']?" selected":"") . ">" . str_replace('_', ' ', $alunos[$i]) . "</option>";
+                  foreach ($alunos as $aluno) {
+                    echo "<option value='$aluno' ". ($aluno == $_GET['aluno']?" selected":"") .">$aluno</option>";
                   }
                 ?>
               </select>
@@ -101,9 +99,11 @@ $qualVersao = qualVersaoDoIVProg($arquivoLogsAluno);
             <div class="col-sm-10">
               <select class="form-control" id="inputexercicio" name="exercicio">
                 <?php
-                  for ($i = 0; $i < count($exercicios); $i++) {
-                    echo "<option value='$exercicios[$i]'" . ($exercicios[$i] == $_GET['exercicio']?" selected":"") . ">" . str_replace('_', ' ', $exercicios[$i]) . "</option>";
+
+                  foreach ($exercicios as $exercicio) {
+                    echo "<option value='$exercicio' " . ($exercicio == $_GET['exercicio']?" selected":"") . ">$exercicio</option>";
                   }
+
                 ?>
               </select>
             </div>

+ 5 - 6
relatorio_exercicio.php

@@ -78,8 +78,8 @@ $exercicio_selecionado = $_GET['exercicio'];
               <select class="form-control" id="inputaluno" name="aluno">
                 <option>Todos</option>
                 <?php
-                  for ($i = 0; $i < count($alunos); $i++) {
-                    echo "<option value='$alunos[$i]'" . ($alunos[$i] == $_GET['aluno']?" selected":"") . ">" . str_replace('_', ' ', $alunos[$i]) . "</option>";
+                  foreach ($alunos as $aluno) {
+                    echo "<option value='$aluno' ". ($aluno == $_GET['aluno']?" selected":"") .">$aluno</option>";
                   }
                 ?>
               </select>
@@ -91,8 +91,8 @@ $exercicio_selecionado = $_GET['exercicio'];
             <div class="col-sm-10">
               <select class="form-control" id="inputexercicio" name="exercicio">
                 <?php
-                  for ($i = 0; $i < count($exercicios); $i++) {
-                    echo "<option value='$exercicios[$i]'" . ($exercicios[$i] == $_GET['exercicio']?" selected":"") . ">" . str_replace('_', ' ', $exercicios[$i]) . "</option>";
+                  foreach ($exercicios as $exercicio) {
+                    echo "<option value='$exercicio' " . ($exercicio == $_GET['exercicio']?" selected":"") . ">$exercicio</option>";
                   }
                 ?>
               </select>
@@ -132,8 +132,7 @@ $exercicio_selecionado = $_GET['exercicio'];
       $logsTodosAlunos = "";
       for ($i=0; $i < count($alunos); ++$i) { 
         $tempAluno = $alunos[$i];
-        $tempArquivoLogsAluno = pegarLogsDoAluno($curso_selecionado, $tempAluno, $exercicio_selecionado);
-        $logAluno = pegarLogsDoAlunoComoString($tempArquivoLogsAluno);
+        $logAluno = pegarLogsDoAlunoComoString($curso_selecionado, $aluno_selecionado, $exercicio_selecionado);
         if(!empty($logAluno) && is_null($arquivoLogsAluno)) {
           $arquivoLogsAluno = $tempArquivoLogsAluno;
         }