<?php
include("../config.php3");
include($BIB."bib_generic.php3");
include($BIB."bib_constants.php3");

#################################
#         functions             #
#################################

# constants
$ADD_CATEGORIES_PAGE = $ADMIN_URL. "add_categories.php3";
$GERER_QUESTIONS_PAGE = $ADMIN_URL. "gerer_questions.php3";
$CHECK_QUESTIONS_PAGE = $ADMIN_URL. "check_questions.php3";


function emptyLine($line)
{
	$line = trim($line);
	return (ereg("[^ \r\n\t]",$line))?false:true;
}


function checkQuestions($fileName, $nb_lignes=0)
{
	global $NB_QUESTIONS_FIRST_TYPE;
	global $NB_QUESTIONS_SECOND_TYPE;
	global $NB_QUESTIONS_SUBSIDIAIRE_TYPE;
	
	$BONNE_REPONSE_TAG = "\*";
	$THEME_TAG = "\-";
	$NB_REPONSES = 3;
	$NB_REPONSES_SUBSIDIAIRES = 6;

	$nb_erreurs = 0;
	// ouverture du fichier
	//$lignes = file (stripslashes($fileName));
//	$lignes = file ($fileName);
//	$nb_lignes = sizeof ($nignes);
	$Sourced = fopen ($fileName, "r");

	$nb_questions = 0;
	$nb_reponses = 0;
	$bonne_reponse_existe = false;
	$question_en_cours = false;
	
	echo "<div><font color=#FF0000>";
	$NbLignesMin = ((2+$NB_REPONSES)*($NB_QUESTIONS_FIRST_TYPE+$NB_QUESTIONS_SECOND_TYPE)+(2+$NB_REPONSES_SUBSIDIAIRES)*$NB_QUESTIONS_SUBSIDIAIRE_TYPE-1);
	if ($nb_lignes < $NbLignesMin)
	{
		echo "Erreur : Le fichier ne contient que ".$nb_lignes." lignes. Il devrait y en avoir au moins ".$NbLignesMin.".<br>";
		$nb_erreurs++;
		echo "</font></div>";
		return $nb_erreurs; 
	}

/*
	if (($lignes[0] == "") || ($lignes[0] == "\r\n") || ($lignes[0] == "\n") || ($lignes[0] == "\n"))
	{
		echo "Erreur : la première ligne est vide.<br>";
	}
*/
	for ($i=0;$i<$nb_lignes;$i++)
	{
		$lignes[$i] = fgets($Sourced, 4096);
		flush();

		$IsLineEmpty = emptyLine($lignes[$i]);
		
			if ($i > ($nb_lignes-3))
			{
/*				if ($IsLineEmpty == false)
				{
						echo "Erreur ligne ".($i+1)." : Les 2 dernières lignes doivent exister, mais être vides.<br>";
						$nb_erreurs++;
				}
*/
			}

		
		if ($question_en_cours == false)
		{
			if ($IsLineEmpty == true)
			{
				if ($i < ($nb_lignes-2))
				{
					echo "Erreur ligne ".($i+1)." : Cette ligne ne devrait pas être vide mais devrait contenir une question.<br>";
					$nb_erreurs++;
				}
			}
			else
			{
				// on n'est pas dans une question, c'est qu'il faut en commencer une
				if (!(ereg($THEME_TAG,$lignes[$i])))
				{
					echo "Erreur ligne ".($i+1)." : la question n'a pas de thème.<br>";
					$nb_erreurs++;
				}
				
				$question_en_cours = true;
				$nb_questions++;
				$nb_reponses = 0;
				$bonne_reponse_existe = false;
			}
		}
		else
		{
			if ($IsLineEmpty == true)
			{
				// c'est une ligne vide dans le cours d'une question
				// On vérifie qu'il a a assez de réponses
				if ($bonne_reponse_existe == false)
				{
					echo "Erreur ligne ".($i+1)." : vous n'avez pas indiqué la bonne réponse à la question.<br>";
					$nb_erreurs++;
				}
				
				if ($nb_reponses < $NB_REPONSES)
				{
					echo "Erreur ligne ".($i+1)." : Il manque ".($NB_REPONSES-$nb_reponses)." réponses à la question.<br>";
					$nb_erreurs++;
				}
				// dans tous les cas on dit que c'est la fin du bloc question
				$question_en_cours = false;
				$nb_reponses = 0;
				$bonne_reponse_existe = false;
			}
			else
			{
				// on teste si il s'agit de la bonne réponse à la question
				if (ereg($BONNE_REPONSE_TAG, $lignes[$i]))
				{
					if ($bonne_reponse_existe == true)
					{
						echo "Erreur ligne ".($i+1)." : Il y a plus d'une bonne réponse.<br>";
						$nb_erreurs++;
					}
					else
					{
						$bonne_reponse_existe = true;
					}
				}
			
				$nb_reponses++;
				if (($nb_reponses > $NB_REPONSES) && ($i < ($nb_lignes-2- $NB_REPONSES_SUBSIDIAIRES) ) )
				{
						echo "Erreur ligne ".($i+1)." : Il y a trop de réponses (Nombre normal : ".$NB_REPONSES.").<br>";
						$nb_erreurs++;
				}
			}
		}
	}
	// fin de la boucle for, on check l'état du dernier bloc
	if ($question_en_cours == true)
	{
		if ($bonne_reponse_existe == false)
		{
			echo "Dernière question : vous n'avez pas indiqué la bonne réponse à la question.<br>";
			$nb_erreurs++;
	}
		
		if ($nb_reponses < $NB_REPONSES_SUBSIDIAIRES)
		{
			echo "Dernière question : Il manque ".($NB_REPONSES_SUBSIDIAIRES-$nb_reponses)." réponses à la question bonus.<br>";
			$nb_erreurs++;
		}
	}
	
	echo "</font></div>";
	fclose($Sourced);
	return $nb_erreurs; 
}


#################################
#        end functions          #
#################################

?>

<html>
<head></head>
<link rel="stylesheet" href="admin.css">
<body rightmargin=0>
<div align=center class=trTitle>Vérification des Questions</div>
<br>

<?php
if ($submit == "Verifier")
{
	echo "Vérification du repertoire : ".$DirectoryName."<br>";


$handle=opendir($DirectoryName);
if (!empty($handle))
{
echo "Directory handle: $handle\n";
echo "Parcours des fichiers :\n";

$fichier_index = 1;
while ((($fileName = readdir($handle))!==false)  && ($fichier_index < 200))
{
   if ($fileName == "." || $fileName == "..")
   	continue;

	echo "<br>";
    echo ($fichier_index++).". $fileName<br>";
	flush();
	
	if ($fileName != "")
	{
		$nblignes = 0;
		$CurFile = $DirectoryName."/".$fileName;
//		echo "open : ".$CurFile."<br>";
		flush();
		$Sourced = fopen($CurFile, "r");
		 while (!feof($Sourced)) 
		 {
  			$buffer = fgets($Sourced, 1096);
			$nblignes++;
    	  }
//          echo "Nombre de lignes : ".$nblignes."<br>";
   		fclose($Sourced);
		$nb_erreurs = checkQuestions($CurFile, $nblignes);
		if ($nb_erreurs>0)
			$color = "#FF0000";
		else
			$color = "#11bb11";
			
		echo "<font color=".$color."><b>Vérification terminée, ".$nb_erreurs." erreurs.</b></font><br>";
		if ($nb_erreurs > 0)
			echo "<font color=".$color."><b>!!! FICHIER INVALIDE !!!</b></font><br>";
		else
			echo "<font color=".$color.">Fichier valide</font><br>";
		
	}
	else
	{
		echo "Vérification impossible : il manque le nom du fichier<br>";
	}
}
closedir($handle); 
}
else
{
	echo "Erreur sur le répertoire<br>";
}

}

if (empty($DirectoryName))
{					 
	$DirectoryName = "/home/samba/wwwdev/M6/m6_quiz/questions/questions3";
}
?>
<div class=universBold>Vérifier le répertoire :</div>
	<form method="post" ENCTYPE="multipart/form-data">
	Nom du répertoire : <input type="text" name="DirectoryName" size="50" value="<?php echo $DirectoryName?>"><br><br>
<div align=left><input type=submit name=submit value="Verifier" ></div>	
	</form>
<hr>

<?php
/*
$handle=opendir('/home/samba/wwwdev/M6/m6_quiz/questions/questions3');
echo "Directory handle: $handle\n";
echo "Files:\n";
while (($file = readdir($handle))!==false) {
    echo "$file\n";
}
closedir($handle); 
*/
$fd = fopen("/home/samba/wwwdev/M6/m6_quiz/questions/questions3_nom/10_cinema.txt", "r");
$buffer = fgets($fd, 1096);
echo $buffer."<br>";

?>

</body>
</html>