" . gettext("Retour au menu") . "";
}
/**
* Fonctions traitement des URL supprime les doubles barres
* @Parametres $string url a traiter
* @Return $final l'url traite
*/
Function enlevedoublebarre($string)
{
$temp=rawurlencode($string);
$temp1=preg_replace("/%5C%5C/","%5C",$temp);
$final=rawurldecode($temp1);
return $final;
}
/**
* Fonctions Supprime le retour chariot
* @Parametres $string ce qu'il faut traiter
* @Return $final
*/
Function enleveretourchariot($string)
{
$temp=rawurlencode($string);
$temp1=preg_replace("/[^ \n\r\t]/","",$temp);
$final=rawurldecode($temp1);
return $final;
}
/**
* Fonctions Ajout une double barre
* @Parametres $string ce qu'il faut traiter
* @Return $final
*/
Function ajoutedoublebarre($string)
{
$temp=rawurlencode($string);
$temp1=preg_replace("/%5C/","%5C%5C",$temp);
$final=rawurldecode($temp1);
return $final;
}
/**
* Fonctions supprime les antislash
* @Parametres $string
* @Return
*/
Function enleveantislash($string)
{
$temp=rawurlencode($string);
$temp1=preg_replace("/%5C%27/","%27",$temp);
$temp2=preg_replace("/%5C%22/","%22",$temp1);
$final=rawurldecode($temp2);
return $final;
}
/**
* Fonctions supprime les doubles slash
* @Parametres $string
* @Return
*/
Function enlevedoubleslash($string)
{
//$temp=rawurlencode($string);
$temp1=preg_replace("////","/",$temp);
//$temp2=preg_replace("/%5C%22/","%22",$temp1);
//$final=rawurldecode($temp1);
$final = $temp1;
return $final;
}
/**
* Fonctions supprime les crochets
* @Parametres $string
* @Return
*/
Function enlevecrochets($string)
{
$temp=rawurlencode($string);
$temp1=preg_replace("/%5B/","",$temp);
$temp2=preg_replace("/%5D/","",$temp1);
$final=rawurldecode($temp2);
return $final;
}
/**
* Fonctions supprime les quotes
* @Parametres $string
* @Return
*/
Function enlevequotes($string)
{
$temp=rawurlencode($string);
$temp1=preg_replace("/%22/","",$temp);
$final=rawurldecode($temp1);
return $final;
}
/**
* Fonctions supprime les #
* @Parametres $string
* @Return
*/
Function enlevediese($string)
{
$temp=rawurlencode($string);
$temp1 = preg_replace("/%23/","",$temp);
$final=rawurldecode($temp1);
return $final;
}
/**
* Fonctions fonction permettant d'appliquer un modele a un template ( pas de refreshzrn dans cette fonction (gere a part)
* @Parametres
* @Return
*/
function applique_modele($mod, $salle, $affiche) {
connexion();
$query = "SELECT `cle`,`etat` FROM `modele` WHERE `mod`= '$mod' ;";
$resultat = mysql_query($query);
while ($row = mysql_fetch_row($resultat)) {
$cle = $row[0];
$query = "SELECT cleID,Intitule,valeur,antidote,type FROM corresp WHERE cleID='$cle';";
$insert = mysql_query($query);
$row1 = mysql_fetch_row($insert);
$query = "SELECT cleID,valeur FROM restrictions WHERE cleID='$cle' AND groupe='$salle';";
$verif = mysql_query($query);
$row2 = mysql_fetch_row($verif);
if ($row[1] == "1") {
$row1[2] = ajoutedoublebarre($row1[2]);
if ($row2[0]) {
$query = "UPDATE `restrictions` SET `valeur` = '$row1[2]' WHERE `cleID` = '$cle' AND `groupe` = '$salle';";
$insert = mysql_query($query);
} else {
$query = "INSERT INTO restrictions (resID,valeur,cleID,groupe,priorite) VALUES ('','$row1[2]','$row[0]','$salle','priorite($salle)');";
$insert = mysql_query($query);
}
} else {
if ($row1[4] == "config") {
$query = "DELETE FROM restrictions where cleID='$cle' and `groupe` = '$salle';";
$insert = mysql_query($query);
} else {
if ($row2[0]) {
$query = "UPDATE `restrictions` SET `valeur` = '$row1[3]' WHERE `cleID` = '$cle' AND `groupe` = '$salle';";
$insert = mysql_query($query);
} else {
$query = "INSERT INTO restrictions (resID,valeur,cleID,groupe,priorite) VALUES ('','$row1[3]','$row[0]','$salle','priorite($salle)');";
$insert = mysql_query($query);
}
}
}
}
}
/**
* Fonctions permettant d'afficher le choix du niveau (obsolete)
* @Parametres
* @Return
*/
function choixniveau($but, $testniveau, $affiche) {
if ($testniveau) {
if ($affiche == "oui") {
echo "
" . gettext("Actuellement , le niveau choisi est ");
if ($testniveau == 1) {
echo gettext("Débutant");
}
if ($testniveau == 2) {
echo gettext("Intermédiaire");
}
if ($testniveau == 3) {
echo gettext("Confirmé");
}
}
} else {
echo gettext("Choisissez un niveau :");
}
echo "
";
echo "
";
}
/**
* Fonctions permettant de recuperer le niveau (obsolete)
* @Parametres
* @Return
*/
function niveau() {
$niveau = $_POST['niveau'];
$testniveau = $HTTP_COOKIE_VARS["NiveauChoisiSE3"];
if ($niveau) {
$testniveau = $niveau;
setcookie("NiveauChoisiSE3", "", time() - 36000);
setcookie("NiveauChoisiSE3", $niveau, time() + 36000);
}
}
/**
* Fonctions retourne le niveau de l'interface
* @Parametres $testniveau permettait de modifier le comportement (en particulier, l'affichage de la categorie tout)
* @Return
*/
function afficheniveau($testniveau) {
if ($testniveau == 1) {
$afficheniveau = "Débutant";
}
if ($testniveau == 2) {
$afficheniveau = "Intermédiaire";
}
if ($testniveau == 3) {
$afficheniveau = "Confirmé";
}
return $afficheniveau;
}
/**
* Fonctions fonction permettant d'afficher les categories et sous-categories
* @Parametres $cible permet de renvoyer vers la bonne page (affiche_cle, affiche_restrictions,....) - $testniveau permettait de modifier le comportement (en particulier, l'affichage de la categorie tout) (obsolete)
* @Return HTML
*/
function affichelistecat($cible, $testniveau, $cat) {
//affichage des cles attribuees au groupe
connexion();
echo "";
$query = "Select DISTINCT categorie from corresp group by categorie;";
$resultat = mysql_query($query);
$i = 1;
while ($row = mysql_fetch_row($resultat)) {
if ($row[0]) {
if ($row[0] == $cat)
echo "";
if (($i % 7) == 0) {
echo "
";
}
}
$i++;
}
if ($cat == "tout")
echo "";
echo "
";
//affichage des sous-categories (si la categorie est choisie)
if ($cat) {
$query = "Select distinct sscat from corresp where '$cat'=categorie group by sscat;";
$resultat = mysql_query($query);
$i = 1;
echo "";
while ($row = mysql_fetch_row($resultat)) {
if ($row[0]) {
echo "";
if (($i % 7) == 0) {
echo "
";
}
}
$i++;
}
echo "
";
}
}
/**
* Fonctions fonction permettant d'afficher les cles dans affiche_cle.php
* @Parametres $cible,$getcible1,$getcible2,$query,$affichetitle,$testniveau
* @Return HTML
*/
function affichelisteget($cible, $getcible1, $getcible2, $query, $affichetitle, $testniveau) {
connexion();
//$query="Select Intitule,cleID,valeur,genre,OS,antidote,type,chemin,categorie,sscat from corresp ".$ajout.$ajoutsscat;
//echo "$query";
$resultat = mysql_query($query);
if (mysql_num_rows($resultat)) {
echo $affichetitle;
while ($row = mysql_fetch_array($resultat)) {
echo " | ";
echo "" . htmlentities($row[0]) . " | " . htmlentities($row[4]) . " | ";
if ($row[6] == "config") {
if ($testniveau > 2) {
echo "";
echo " " . htmlentities($row[2]) . " | | ";
} else {
echo" " . htmlentities($row[2]) . " | | ";
}
}
if ($row[6] == "restrict") {
if ($testniveau > 2) {
echo "";
echo " " . htmlentities($row[2]) . " | ";
echo "";
echo " " . htmlentities($row[5]) . " | ";
} else {
echo "";
echo " " . htmlentities($row[2]) . " | " . htmlentities($row[5]) . " | ";
}
}
if ($testniveau > 2) {
echo " | ";
echo "";
echo " | ";
} else {
echo" | ";
echo " | ";
}
}
echo"
";
}
}
function test_bdd_registre() {
// Controle l'installation des cles
connexion();
$query = "select * from corresp";
$resultat = mysql_query($query);
$ligne = mysql_num_rows($resultat);
if ($ligne == "0") {
echo "" . gettext("Effectuer la mise a jour de la base de clés ?") . "
";
include ("pdp.inc.php");
return false;
} else {
return true;
}
}
/**
* Fonction permettant de rafraichir les templates
* @Parametres $string
* @Return
*/
Function refreshtemplates($string) {
connexion();
$query = "Select corresp.CleID,restrictions.valeur,corresp.chemin,corresp.OS,corresp.genre,corresp.type,corresp.valeur,corresp.antidote
from restrictions,corresp where restrictions.groupe='$string' and restrictions.cleID=corresp.cleID order by corresp.OS;";
$resultat = mysql_query($query);
$prio = priorite($string);
//au moins un template associe on continue
if (mysql_num_rows($resultat)) {
// template vide
if (!isset($string)) {
echo gettext("groupe non inscrit");
} else {
while ($row = mysql_fetch_array($resultat)) {
$deleteSQL = "delete from restrictions where cleID='row[0]' and groupe='$string'";
$addSQL = "Insert into restrictions values ('', '$row[0]', '$row[1]', '$value', '$prio')";
mysql_query($deleteSQL);
mysql_query($addSQL);
}
}
}
echo "" . gettext("Restrictions mises a jour pour ") . " $string
";
}
/**
* Fonctionrenvoyant la liste triee des templates
* @Parametres [ array $groups ]
* @Return $array template=>priorite
*/
Function gettemplates() {
if (func_num_args() == 1) {
foreach (func_get_arg(0) as $value) {
$groupes[] = strtolower($value);
}
} else {
unset($groupes);
}
$handle = opendir('/home/templates');
$filesArray = array();
$filesArray2 = array();
while ($file = readdir($handle)) {
$file = strtolower($file);
if ($file <> '.' and $file <> '..' and $file <> 'registre.vbs' and $file <> 'skeluser') {
$template = explode("@@", $file);
$p = 0;
if (isset($groupes)) {
// construction de l'intersection templates et groupes
$test = 0;
foreach ($template as $value) {
if (in_array($value, $groupes)) {
$test++;
} else {
$test = 0;
continue;
}
}
if ($test) {
// echo "ajout de ".$file."
";
$filesArray[$file] = priorite($file);
}
} else {
// construction de la liste des templates avec et sans cles
$pr = is_template($file);
if (isset($pr)) {
// template contenant des cles
$filesArray[$file] = $pr;
} else {
// template sans cles
$filesArray2[] = $file;
}
}
}
}
closedir($handle);
asort($filesArray);
asort($filesArray2);
return (array($filesArray, $filesArray2));
}
Function is_template($template) {
// test presence de cles dans la table restrictions
connexion();
// initialisation de la table si besoin
$query = "select priorite from restrictions limit 1";
if (!mysql_query($query)) {
$query = "alter table restrictions add priorite INTEGER";
mysql_query($query);
}
$query = "select groupe from restrictions where groupe = '" . $template . "' group by groupe";
if (!mysql_num_rows(mysql_query($query))) {
return;
} else {
return(priorite($template));
}
}
Function update_priorite($template, $priorite) {
connexion();
$query = "select groupe from restrictions where groupe = '" . $template . "' group by groupe";
if (mysql_num_rows(mysql_query($query))) {
$query = "update restrictions set priorite='" . $priorite . "' where groupe = '" . $template . "'";
mysql_query($query);
}
echo "mise a jour de la priorite pour le template : ".$template." priorite : ".$priorite."
";
return $priorite;
}
Function priorite() {
// retourne la priorite du groupe, et l'enregistre dans la table restriction si besoin.
// argument 1 : le template
// argument 2 : le decalage (0 = forcer la valeur )
// argument 3 : la valeur
// groupes : p=n*8
// parcs : p=n*8092
$template = func_get_arg(0);
if (func_num_args() > 1) {
$dec = func_get_arg(1);
if (func_num_args() > 2) {
$prio = func_get_arg(2);
}
} else {
$dec = 0;
}
// valeurs predefinies des priorites
$priorite = array("base" => 0,
"eleves" => 1, "profs" => 2,
"administratifs" => 4,
"groupes" => 8,
"parcs" => 8092,
"machine" => 16777216,
"utilisateur" => 33554432,
"overfill" => 67108864,
"admin" => 134217727,
"imposee" => 134217728
);
// valeurs de base des groupes
$grppriorite = array("groupes" => 8,
"parcs" => 8092,
);
// priorite d'un template predefini
if (isset($priorite[$template])) {
return $priorite[$template];
}
$type = group_type($template);
if (!isset($type)) {
// type de groupe inconnu : groupe compose @@ ou n'importe quoi
$sousgroupes = explode("@@", $template);
if (count($sousgroupes) > 1) {
// groupe avec des @@
$prio = 0;
foreach ($sousgroupes as $sousgroupe) {
$prio = $prio + priorite($sousgroupe);
}
}
}
if ($dec == 0) {
connexion();
if (isset($prio)) {
// on met a jour et retourne la priorite du template
return update_priorite($template, $prio);
} elseif (isset($type)) {
// type de groupe connu : on verifie que la priorite est dans la bonne plage, et on la retourne si oui
$query = "SELECT priorite from restrictions where groupe = '" . $template . "' GROUP BY priorite,groupe";
$resultat = mysql_query($query);
if (mysql_num_rows($resultat)) {
$row = mysql_fetch_array($resultat);
if ($row[0] && (($row[0] % $priorite[$type]) == 0)) {
return $row[0];
}
}
if (isset($grppriorite[$type])) {
// si groupes ou parcs on calcule la premiere valeur libre
$query = "SELECT priorite from restrictions GROUP BY priorite,groupe ORDER BY priorite ASC ";
$resultat = mysql_query($query);
if (mysql_num_rows($resultat)) {
$p = 20;
$test = 0;
$newprio = $p * $grppriorite[$type];
foreach(mysql_fetch_array($resultat) as $row) {
if ($row[0] == $newprio) {
$newprio = $p++ * $grppriorite[$type];
$test = 1;
} elseif ($test) {
break;
}
}
return update_priorite($template, $newprio);
}
} else {
// autre template : on retourne la valeur predefinie
return update_priorite($template, $priorite[$type]);
}
}
} else {
$oldprio = priorite($template);
$newprio = $oldprio + $dec * $priorite[$type];
connexion();
$query = "update restrictions set priorite='" . $newprio . "' where groupe = '" . $template . "'";
mysql_query($query);
$query = "update restrictions set priorite='" . $oldprio . "' where groupe <> '" . $template . "' and priorite = '" . $newprio . "'";
mysql_query($query);
return $newprio;
}
}
?>