//Filtre ACDC pour SPIP fait par Laurent Giboulot (Gib)avec l' aide plus que précieuse du Doc. et inspiré par le logiciel GenexiAC de J.J. Hochart
//Le but de cette fonction est de generer automatiquement une dictée autocorrigee à partir d'une phrase mise entre ¤ et ¤ dans un article .
// remplacer [(#TEXTE)] par [(#TEXTE|acdc)] dans le squelette de l' article .html .
//Passer le temps de recalcul des pages articles ou du squelette souhaité à quelques secondes, par ex. 2s. au lieu de 24 h. ( 1*2 au lieu de 24*3600 dans le php correspondant )
function acdc ($texte) {
while(ereg("¤",$texte)){
list($avant,$solutio,$apres)=explode("¤",$texte);//si le texte de l'article contient acdc, on isole la solution de la dictee
$solution=trim($solutio);// doublage de la variable voulu pou reprendre un contenu propre
$codehtml = "";
$codehtml.= "
PROPOSER :
";
$codehtml.= " Difficile ";
$teteFormulaire="
";
if (!isset($GLOBALS["correction"])){//si le bouton difficile est coché, on tient compte de la casse, et de la ponctuation
}else{//sinon on enleve tous les caractères indésirables
$propose=trim($GLOBALS[propose]);
$solution=str_replace(" ","",$solution);
$propose=str_replace(" ","",$propose);
if($GLOBALS["dur"]==tic){
}else{
$solution=strtolower($solution);
$pasbonchar=array (",",";",".",":","!","?"," ");
$goodchar=array("","","","","",""," ");
$propose=strtolower($propose);
$solution=str_replace($pasbonchar,$goodchar,$solution);
$propose=str_replace($pasbonchar,$goodchar,$propose);
}
$motsolu = split(" ",$solution);
$motprop = split(" ",$propose);
$nbmotsolu = count($motsolu);
$nbmotprop = count($motprop);
$codehtml.= "
RESULTAT: ";
for ($j = 0 ; $j<$nbmotsolu ; $j++) { // pour chaque mot
if ($motsolu[$j] == $motprop[$j]) {
$codehtml.=""; // le mot est juste et bien placé
} else {
for ($k = 0 ; $k<$nbmotsolu ; $k++) {
if ($motprop[$j] == $motsolu[$k]) {
$codehtml.=""; // le mot est juste mais mal placé
} else {
if ($k == "0") $codehtml.=""; // le mot n'existe pas dans la solution
}
}
}
$codehtml.= " $motprop[$j]";
$codehtml.= " "; // espace entre les mots
}
$codehtml.= " ";
$prop=trim($propose);
$solu=trim($solution);
if ($prop==$solu){//si la phrase proposée correspond à la solution un autre message apparait
$codehtml.= "
BRAVO !!! Passez à l'item suivant
";
}
$codehtml.= ""; // prevoir duplications indéterminées du font
$codehtml.= " Legende : ";//affichage de la legende
$codehtml.= "| Faute orthographe ou ponctuation voisine, ou mot inconnu ";
$codehtml.= " | correct mais mal placé ou précédé d'un probleme; ";
$codehtml.= " | correct et bien placé ";
$codehtml.= " | ";
}
$codehtml="".$codehtml."";
$texte =$avant.$apres.$codehtml;
}
$texte=$teteFormulaire.$texte.$piedFormulaire;
return $texte;
}
?>