[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 5 * Gestion des cles pour clients Windows (Fonctions pour registre) 6 * @Version $Id: include.inc.php 3034 2008-06-14 15:14:14Z plouf $ 7 8 9 * @Projet LCS / SambaEdu 10 11 * @auteurs Sandrine Dangreville 12 13 * @Licence Distribue selon les termes de la licence GPL 14 15 * @note 16 17 */ 18 /** 19 20 * @Repertoire: registre 21 * file: include.inc.php 22 23 */ 24 require_once ("lang.inc.php"); 25 bindtextdomain('se3-registre', "/var/www/se3/locale"); 26 textdomain('se3-registre'); 27 28 /** 29 30 * Fonctions Connexion a se3db par include de config.inc.php 31 32 * @Parametres 33 * @Return 34 35 */ 36 Function connexion() { // connexion a une base de donnees #require("conf.php"); 37 require ("config.inc.php"); 38 } 39 40 /** 41 42 * Fonctions Affiche un lien Retour au menu 43 44 * @Parametres 45 * @Return 46 47 */ 48 Function retour() { 49 echo"<a href=indexcle.php>" . gettext("Retour au menu") . "</a>"; 50 } 51 52 /** 53 54 * Fonctions traitement des URL supprime les doubles barres 55 56 * @Parametres $string url a traiter 57 * @Return $final l'url traite 58 59 */ 60 61 Function enlevedoublebarre($string) 62 { 63 $temp=rawurlencode($string); 64 $temp1=preg_replace("/%5C%5C/","%5C",$temp); 65 $final=rawurldecode($temp1); 66 return $final; 67 } 68 69 70 /** 71 72 * Fonctions Supprime le retour chariot 73 74 * @Parametres $string ce qu'il faut traiter 75 * @Return $final 76 77 */ 78 Function enleveretourchariot($string) 79 { 80 $temp=rawurlencode($string); 81 $temp1=preg_replace("/[^ \n\r\t]/","",$temp); 82 $final=rawurldecode($temp1); 83 return $final; 84 } 85 86 /** 87 88 * Fonctions Ajout une double barre 89 90 * @Parametres $string ce qu'il faut traiter 91 * @Return $final 92 93 */ 94 Function ajoutedoublebarre($string) 95 { 96 $temp=rawurlencode($string); 97 $temp1=preg_replace("/%5C/","%5C%5C",$temp); 98 $final=rawurldecode($temp1); 99 return $final; 100 } 101 102 /** 103 104 * Fonctions supprime les antislash 105 106 * @Parametres $string 107 * @Return 108 109 */ 110 Function enleveantislash($string) 111 { 112 $temp=rawurlencode($string); 113 $temp1=preg_replace("/%5C%27/","%27",$temp); 114 $temp2=preg_replace("/%5C%22/","%22",$temp1); 115 $final=rawurldecode($temp2); 116 return $final; 117 } 118 119 /** 120 121 * Fonctions supprime les doubles slash 122 123 * @Parametres $string 124 * @Return 125 126 */ 127 Function enlevedoubleslash($string) 128 { 129 //$temp=rawurlencode($string); 130 $temp1=preg_replace("////","/",$temp); 131 //$temp2=preg_replace("/%5C%22/","%22",$temp1); 132 //$final=rawurldecode($temp1); 133 $final = $temp1; 134 return $final; 135 } 136 137 /** 138 139 * Fonctions supprime les crochets 140 141 * @Parametres $string 142 * @Return 143 144 */ 145 146 Function enlevecrochets($string) 147 { 148 $temp=rawurlencode($string); 149 $temp1=preg_replace("/%5B/","",$temp); 150 $temp2=preg_replace("/%5D/","",$temp1); 151 $final=rawurldecode($temp2); 152 return $final; 153 } 154 155 /** 156 157 * Fonctions supprime les quotes 158 159 * @Parametres $string 160 * @Return 161 162 */ 163 Function enlevequotes($string) 164 { 165 $temp=rawurlencode($string); 166 $temp1=preg_replace("/%22/","",$temp); 167 $final=rawurldecode($temp1); 168 return $final; 169 } 170 171 172 /** 173 174 * Fonctions supprime les # 175 176 * @Parametres $string 177 * @Return 178 179 */ 180 Function enlevediese($string) 181 { 182 $temp=rawurlencode($string); 183 $temp1 = preg_replace("/%23/","",$temp); 184 $final=rawurldecode($temp1); 185 return $final; 186 } 187 188 /** 189 190 * Fonctions fonction permettant d'appliquer un modele a un template ( pas de refreshzrn dans cette fonction (gere a part) 191 192 * @Parametres 193 * @Return 194 195 */ 196 function applique_modele($mod, $salle, $affiche) { 197 connexion(); 198 $query = "SELECT `cle`,`etat` FROM `modele` WHERE `mod`= '$mod' ;"; 199 $resultat = mysql_query($query); 200 while ($row = mysql_fetch_row($resultat)) { 201 $cle = $row[0]; 202 $query = "SELECT cleID,Intitule,valeur,antidote,type FROM corresp WHERE cleID='$cle';"; 203 $insert = mysql_query($query); 204 $row1 = mysql_fetch_row($insert); 205 $query = "SELECT cleID,valeur FROM restrictions WHERE cleID='$cle' AND groupe='$salle';"; 206 $verif = mysql_query($query); 207 $row2 = mysql_fetch_row($verif); 208 209 if ($row[1] == "1") { 210 $row1[2] = ajoutedoublebarre($row1[2]); 211 if ($row2[0]) { 212 $query = "UPDATE `restrictions` SET `valeur` = '$row1[2]' WHERE `cleID` = '$cle' AND `groupe` = '$salle';"; 213 $insert = mysql_query($query); 214 } else { 215 $query = "INSERT INTO restrictions (resID,valeur,cleID,groupe,priorite) VALUES ('','$row1[2]','$row[0]','$salle','priorite($salle)');"; 216 $insert = mysql_query($query); 217 } 218 } else { 219 if ($row1[4] == "config") { 220 $query = "DELETE FROM restrictions where cleID='$cle' and `groupe` = '$salle';"; 221 $insert = mysql_query($query); 222 } else { 223 if ($row2[0]) { 224 $query = "UPDATE `restrictions` SET `valeur` = '$row1[3]' WHERE `cleID` = '$cle' AND `groupe` = '$salle';"; 225 $insert = mysql_query($query); 226 } else { 227 $query = "INSERT INTO restrictions (resID,valeur,cleID,groupe,priorite) VALUES ('','$row1[3]','$row[0]','$salle','priorite($salle)');"; 228 $insert = mysql_query($query); 229 } 230 } 231 } 232 } 233 } 234 235 /** 236 237 * Fonctions permettant d'afficher le choix du niveau (obsolete) 238 239 * @Parametres 240 * @Return 241 242 */ 243 function choixniveau($but, $testniveau, $affiche) { 244 if ($testniveau) { 245 if ($affiche == "oui") { 246 echo "<br>" . gettext("Actuellement , le niveau choisi est "); 247 if ($testniveau == 1) { 248 echo gettext("Débutant"); 249 } 250 if ($testniveau == 2) { 251 echo gettext("Intermédiaire"); 252 } 253 if ($testniveau == 3) { 254 echo gettext("Confirmé"); 255 } 256 } 257 } else { 258 echo gettext("Choisissez un niveau :"); 259 } 260 261 echo "<br /><div align=\"center\"> "; 262 echo "<form action=\"$but\" name=\"niv\" method=\"post\">" . gettext("Choix du niveau :") . " "; 263 echo "<select name=\"niveau\" size=\"1\">"; 264 echo "<option value=\"1\" "; 265 if ($testniveau == 1) { 266 echo "selected"; 267 } 268 echo">" . gettext("Débutant") . "</option><option value=\"2\" "; 269 if ($testniveau == 2) { 270 echo "selected"; 271 } 272 echo ">" . gettext("Intermédiaire") . "</option><option value=\"3\" "; 273 if ($testniveau == 3) { 274 echo "selected"; 275 } 276 echo ">" . gettext("Confirmé") . "</option>"; 277 echo "</select><input type=\"submit\" name=\"submit\" value=\"OK\" /></form></div><br />"; 278 } 279 280 /** 281 282 * Fonctions permettant de recuperer le niveau (obsolete) 283 284 * @Parametres 285 * @Return 286 287 */ 288 function niveau() { 289 $niveau = $_POST['niveau']; 290 $testniveau = $HTTP_COOKIE_VARS["NiveauChoisiSE3"]; 291 if ($niveau) { 292 $testniveau = $niveau; 293 setcookie("NiveauChoisiSE3", "", time() - 36000); 294 setcookie("NiveauChoisiSE3", $niveau, time() + 36000); 295 } 296 } 297 298 /** 299 300 * Fonctions retourne le niveau de l'interface 301 302 * @Parametres $testniveau permettait de modifier le comportement (en particulier, l'affichage de la categorie tout) 303 * @Return 304 305 */ 306 function afficheniveau($testniveau) { 307 if ($testniveau == 1) { 308 $afficheniveau = "Débutant"; 309 } 310 if ($testniveau == 2) { 311 $afficheniveau = "Intermédiaire"; 312 } 313 if ($testniveau == 3) { 314 $afficheniveau = "Confirmé"; 315 } 316 return $afficheniveau; 317 } 318 319 /** 320 321 * Fonctions fonction permettant d'afficher les categories et sous-categories 322 323 * @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) 324 * @Return HTML 325 326 */ 327 function affichelistecat($cible, $testniveau, $cat) { 328 //affichage des cles attribuees au groupe 329 connexion(); 330 echo "<table><tr>"; 331 $query = "Select DISTINCT categorie from corresp group by categorie;"; 332 $resultat = mysql_query($query); 333 $i = 1; 334 335 while ($row = mysql_fetch_row($resultat)) { 336 if ($row[0]) { 337 if ($row[0] == $cat) 338 echo "<td class=\"enabledheader\" width=\"130\" height=\"30\" align=\"center\">"; 339 else 340 echo "<td class=\"menuheader\" width=\"130\" height=\"30\" align=\"center\">"; 341 echo "<a href=\"$cible&cat=$row[0]\" >" . htmlentities($row[0]) . "</a></td>"; 342 if (($i % 7) == 0) { 343 echo "</tr><tr>"; 344 } 345 } 346 $i++; 347 } 348 if ($cat == "tout") 349 echo "<td class=\"enabledheader\" width=\"130\" height=\"30\" align=\"center\">"; 350 else 351 echo "<td class=\"menuheader\" width=\"130\" height=\"30\" align=\"center\">"; 352 echo "<a href=\"$cible&cat=tout\">" . gettext("Tout") . "</a></td>"; 353 echo "</tr></table><br>"; 354 355 //affichage des sous-categories (si la categorie est choisie) 356 if ($cat) { 357 $query = "Select distinct sscat from corresp where '$cat'=categorie group by sscat;"; 358 $resultat = mysql_query($query); 359 $i = 1; 360 echo "<table><tr>"; 361 while ($row = mysql_fetch_row($resultat)) { 362 if ($row[0]) { 363 echo "<td class=\"menucell\" width=\"130\" height=\"30\" align=\"center\">"; 364 echo "<a href=\"$cible&cat=$cat&sscat=$row[0]\" >" . htmlentities($row[0]) . "</a></td>"; 365 if (($i % 7) == 0) { 366 echo "</tr><tr>"; 367 } 368 } 369 $i++; 370 } 371 echo "</tr></table>"; 372 } 373 } 374 375 /** 376 377 * Fonctions fonction permettant d'afficher les cles dans affiche_cle.php 378 379 * @Parametres $cible,$getcible1,$getcible2,$query,$affichetitle,$testniveau 380 * @Return HTML 381 382 */ 383 function affichelisteget($cible, $getcible1, $getcible2, $query, $affichetitle, $testniveau) { 384 connexion(); 385 //$query="Select Intitule,cleID,valeur,genre,OS,antidote,type,chemin,categorie,sscat from corresp ".$ajout.$ajoutsscat; 386 //echo "$query"; 387 $resultat = mysql_query($query); 388 if (mysql_num_rows($resultat)) { 389 echo $affichetitle; 390 while ($row = mysql_fetch_array($resultat)) { 391 echo "<tr><td><DIV ALIGN=CENTER>"; 392 echo "<a href=\"#\" onClick=\"window.open('aide_cle.php?cle=$row[1]','aide','scrollbars=yes,width=600,height=620')\">"; 393 echo "<img src=\"/elements/images/system-help.png\" alt=\"" . gettext("Aide") . "\" title=\"$row[7]\" width=\"16\" height=\"18\" border=\"0\" /></a></td>"; 394 echo "<td>" . htmlentities($row[0]) . " </DIV></td><td><DIV ALIGN=CENTER> " . htmlentities($row[4]) . "</DIV></td>"; 395 if ($row[6] == "config") { 396 if ($testniveau > 2) { 397 echo "<a href=\"$cible&$getcible1=$row[1]\"><td>"; 398 echo "<DIV ALIGN=CENTER> " . htmlentities($row[2]) . "</DIV> </td></a><td> </td>"; 399 } else { 400 echo"<td><DIV ALIGN=CENTER> " . htmlentities($row[2]) . "</DIV><td> </td>"; 401 } 402 } 403 404 if ($row[6] == "restrict") { 405 if ($testniveau > 2) { 406 echo "<a href=\"$cible&modifkey=$row[1] \"><td BGCOLOR=\"#a5d6ff\"><DIV ALIGN=CENTER>"; 407 echo " " . htmlentities($row[2]) . "</DIV> </td></a>"; 408 echo "<a href=\"$cible&$getcible1=$row[1]\"><td BGCOLOR=\"#e0dfde\">"; 409 echo "<DIV ALIGN=CENTER>" . htmlentities($row[5]) . "</DIV></td></a>"; 410 } else { 411 echo "<td BGCOLOR=\"#FF0000\"><DIV ALIGN=CENTER>"; 412 echo " " . htmlentities($row[2]) . "</DIV> </td><td BGCOLOR=\"#e0dfde\"><DIV ALIGN=CENTER>" . htmlentities($row[5]) . "</DIV></td>"; 413 } 414 } 415 416 if ($testniveau > 2) { 417 echo "<td><DIV ALIGN=CENTER>"; 418 echo "<a href=\"$cible&$getcible1=$row[1]\">"; 419 echo "<img src=\"/elements/images/edit.png \" alt=\"" . gettext("Modifier la valeur") . "\" title=\"" . gettext("Modifier la valeur") . "\" width=\"16\" height=\"16\" border=\"0\" /></a></DIV></td><td >"; 420 echo "<a href=\"$cible&$getcible2=$row[1]&$getcible1=$row[1]\">"; 421 echo "<img src=\"/elements/images/edittrash.png\" alt=\"" . gettext("Supprimer la clé") . "\" title=\"" . gettext("Supprimer la clé") . "\" width=\"16\" height=\"16\" border=\"0\" /></a></td>"; 422 } else { 423 echo" <td><DIV ALIGN=CENTER><img src=\"/elements/images/editpale.png\" alt=\"" . gettext("Valeur non modifiable") . "\" title=\"" . gettext("Valeur non modifiable") . "\" width=\"16\" height=\"16\" border=\"0\" /></DIV></td><td >"; 424 echo "<img src=\"/elements/images/edittrash.png\" alt=\"" . gettext("Valeur non modifiable") . "\" title=\"" . gettext("Valeur non modifiable") . "\" width=\"16\" height=\"16\" border=\"0\" /></td>"; 425 } 426 } 427 echo"</tr></table> "; 428 } 429 } 430 431 function test_bdd_registre() { 432 // Controle l'installation des cles 433 connexion(); 434 $query = "select * from corresp"; 435 $resultat = mysql_query($query); 436 $ligne = mysql_num_rows($resultat); 437 if ($ligne == "0") { 438 echo "<a href=\"cle-maj.php?action=maj\">" . gettext("Effectuer la mise a jour de la base de clés ?") . "</a><br>"; 439 include ("pdp.inc.php"); 440 return false; 441 } else { 442 return true; 443 } 444 } 445 446 /** 447 448 * Fonction permettant de rafraichir les templates 449 450 * @Parametres $string 451 * @Return 452 453 */ 454 Function refreshtemplates($string) { 455 connexion(); 456 $query = "Select corresp.CleID,restrictions.valeur,corresp.chemin,corresp.OS,corresp.genre,corresp.type,corresp.valeur,corresp.antidote 457 from restrictions,corresp where restrictions.groupe='$string' and restrictions.cleID=corresp.cleID order by corresp.OS;"; 458 $resultat = mysql_query($query); 459 $prio = priorite($string); 460 //au moins un template associe on continue 461 if (mysql_num_rows($resultat)) { 462 // template vide 463 if (!isset($string)) { 464 echo gettext("groupe non inscrit"); 465 } else { 466 while ($row = mysql_fetch_array($resultat)) { 467 $deleteSQL = "delete from restrictions where cleID='row[0]' and groupe='$string'"; 468 $addSQL = "Insert into restrictions values ('', '$row[0]', '$row[1]', '$value', '$prio')"; 469 mysql_query($deleteSQL); 470 mysql_query($addSQL); 471 } 472 } 473 } 474 echo "<h3>" . gettext("Restrictions mises a jour pour ") . " $string</h3><br>"; 475 } 476 477 /** 478 479 * Fonctionrenvoyant la liste triee des templates 480 481 * @Parametres [ array $groups ] 482 * @Return $array template=>priorite 483 484 */ 485 Function gettemplates() { 486 if (func_num_args() == 1) { 487 foreach (func_get_arg(0) as $value) { 488 $groupes[] = strtolower($value); 489 } 490 } else { 491 unset($groupes); 492 } 493 $handle = opendir('/home/templates'); 494 $filesArray = array(); 495 $filesArray2 = array(); 496 while ($file = readdir($handle)) { 497 $file = strtolower($file); 498 if ($file <> '.' and $file <> '..' and $file <> 'registre.vbs' and $file <> 'skeluser') { 499 $template = explode("@@", $file); 500 $p = 0; 501 if (isset($groupes)) { 502 // construction de l'intersection templates et groupes 503 $test = 0; 504 foreach ($template as $value) { 505 if (in_array($value, $groupes)) { 506 $test++; 507 } else { 508 $test = 0; 509 continue; 510 } 511 } 512 if ($test) { 513 // echo "ajout de ".$file."<br>"; 514 $filesArray[$file] = priorite($file); 515 } 516 } else { 517 // construction de la liste des templates avec et sans cles 518 $pr = is_template($file); 519 if (isset($pr)) { 520 // template contenant des cles 521 $filesArray[$file] = $pr; 522 } else { 523 // template sans cles 524 $filesArray2[] = $file; 525 } 526 } 527 } 528 } 529 closedir($handle); 530 asort($filesArray); 531 asort($filesArray2); 532 return (array($filesArray, $filesArray2)); 533 } 534 535 Function is_template($template) { 536 // test presence de cles dans la table restrictions 537 connexion(); 538 // initialisation de la table si besoin 539 $query = "select priorite from restrictions limit 1"; 540 if (!mysql_query($query)) { 541 $query = "alter table restrictions add priorite INTEGER"; 542 mysql_query($query); 543 } 544 $query = "select groupe from restrictions where groupe = '" . $template . "' group by groupe"; 545 if (!mysql_num_rows(mysql_query($query))) { 546 return; 547 } else { 548 return(priorite($template)); 549 } 550 } 551 552 Function update_priorite($template, $priorite) { 553 connexion(); 554 $query = "select groupe from restrictions where groupe = '" . $template . "' group by groupe"; 555 if (mysql_num_rows(mysql_query($query))) { 556 $query = "update restrictions set priorite='" . $priorite . "' where groupe = '" . $template . "'"; 557 mysql_query($query); 558 } 559 echo "mise a jour de la priorite pour le template : ".$template." priorite : ".$priorite."<br>"; 560 return $priorite; 561 } 562 563 564 Function priorite() { 565 // retourne la priorite du groupe, et l'enregistre dans la table restriction si besoin. 566 // argument 1 : le template 567 // argument 2 : le decalage (0 = forcer la valeur ) 568 // argument 3 : la valeur 569 // groupes : p=n*8 570 // parcs : p=n*8092 571 $template = func_get_arg(0); 572 if (func_num_args() > 1) { 573 $dec = func_get_arg(1); 574 if (func_num_args() > 2) { 575 $prio = func_get_arg(2); 576 } 577 } else { 578 $dec = 0; 579 } 580 // valeurs predefinies des priorites 581 $priorite = array("base" => 0, 582 "eleves" => 1, "profs" => 2, 583 "administratifs" => 4, 584 "groupes" => 8, 585 "parcs" => 8092, 586 "machine" => 16777216, 587 "utilisateur" => 33554432, 588 "overfill" => 67108864, 589 "admin" => 134217727, 590 "imposee" => 134217728 591 ); 592 // valeurs de base des groupes 593 $grppriorite = array("groupes" => 8, 594 "parcs" => 8092, 595 ); 596 // priorite d'un template predefini 597 if (isset($priorite[$template])) { 598 return $priorite[$template]; 599 } 600 $type = group_type($template); 601 if (!isset($type)) { 602 // type de groupe inconnu : groupe compose @@ ou n'importe quoi 603 $sousgroupes = explode("@@", $template); 604 if (count($sousgroupes) > 1) { 605 // groupe avec des @@ 606 $prio = 0; 607 foreach ($sousgroupes as $sousgroupe) { 608 $prio = $prio + priorite($sousgroupe); 609 } 610 } 611 } 612 if ($dec == 0) { 613 connexion(); 614 if (isset($prio)) { 615 // on met a jour et retourne la priorite du template 616 return update_priorite($template, $prio); 617 } elseif (isset($type)) { 618 // type de groupe connu : on verifie que la priorite est dans la bonne plage, et on la retourne si oui 619 $query = "SELECT priorite from restrictions where groupe = '" . $template . "' GROUP BY priorite,groupe"; 620 $resultat = mysql_query($query); 621 if (mysql_num_rows($resultat)) { 622 $row = mysql_fetch_array($resultat); 623 if ($row[0] && (($row[0] % $priorite[$type]) == 0)) { 624 return $row[0]; 625 } 626 } 627 if (isset($grppriorite[$type])) { 628 // si groupes ou parcs on calcule la premiere valeur libre 629 $query = "SELECT priorite from restrictions GROUP BY priorite,groupe ORDER BY priorite ASC "; 630 $resultat = mysql_query($query); 631 if (mysql_num_rows($resultat)) { 632 $p = 20; 633 $test = 0; 634 $newprio = $p * $grppriorite[$type]; 635 foreach(mysql_fetch_array($resultat) as $row) { 636 if ($row[0] == $newprio) { 637 $newprio = $p++ * $grppriorite[$type]; 638 $test = 1; 639 } elseif ($test) { 640 break; 641 } 642 } 643 return update_priorite($template, $newprio); 644 } 645 } else { 646 // autre template : on retourne la valeur predefinie 647 return update_priorite($template, $priorite[$type]); 648 } 649 } 650 } else { 651 $oldprio = priorite($template); 652 $newprio = $oldprio + $dec * $priorite[$type]; 653 connexion(); 654 $query = "update restrictions set priorite='" . $newprio . "' where groupe = '" . $template . "'"; 655 mysql_query($query); 656 $query = "update restrictions set priorite='" . $oldprio . "' where groupe <> '" . $template . "' and priorite = '" . $newprio . "'"; 657 mysql_query($query); 658 return $newprio; 659 } 660 } 661 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |