[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/includes/ -> ihm.inc.php (source)

   1  <?php
   2  
   3  
   4     /**
   5     * Librairie de fonctions pour controler diverses entrees
   6    
   7     * @Version $Id: ihm.inc.php 8485 2015-02-22 20:49:54Z keyser $
   8     
   9     * @Projet LCS / SambaEdu 
  10     
  11     * @Auteurs Equipe Tice academie de Caen
  12     * @Auteurs oluve olivier.le_monnier@crdp.ac-caen.fr
  13     * @Auteurs « jLCF >:> » jean-luc.chretien@tice.ac-caen.fr
  14     * @Auteurs « wawa »  olivier.lecluse@crdp.ac-caen.fr
  15  
  16     * @Note: Ce fichier de fonction doit etre appele par un include
  17  
  18     * @Licence Distribue sous la licence GPL
  19     */
  20  
  21     /**
  22  
  23     * file: functions.inc.php
  24     * @Repertoire: includes/ 
  25     */  
  26    
  27  
  28  //=================================================
  29  /**
  30  * Fonction qui test si la chaine est encode en UTF8
  31  * @Parametres $chaine la chaine a tester
  32  * @Return
  33  */
  34    
  35  function convertUTF8_to_8859($str){
  36      if(is_utf8($str) == 1){
  37          // fonction qui test si la chaine encode en UTF8 contient des caractere francais: Cette fonction ne traite que des chaines en UTF8
  38          if(content8859_in_UTF8($str)=="TRUE"){
  39              // On convertit la chaine de UTF8 en ISO8859-1
  40              $str = utf8_decode($str);
  41              // retourner la chaine converti
  42              return($str);
  43          }else{ // cas ou la chaine en UTF-8 mais ne contient pas des accents francais : exemple les caracetres chinois encode en UTF8
  44              // retourner la chaine non convertit
  45              return($str);
  46          }
  47      }else{ // cas ou la chaine n'est pas encode en UTF8
  48          return($str);
  49      }
  50  } 
  51  
  52  
  53  //=================================================
  54  /**
  55  * Test si la chaine est en UTF-8 ou pas 
  56  * @Parametres $chaine la chaine a tester
  57  * @Returns true if $string is valid UTF-8 and false otherwise.
  58  */
  59  
  60  function is_utf8($string) {
  61  
  62  return preg_match('%^(?:
  63  [\x09\x0A\x0D\x20-\x7E] # ASCII
  64  | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
  65  | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
  66  | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
  67  | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
  68  | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
  69  | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
  70  | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
  71  )*$%xs', $string);
  72  } // function is_utf8
  73  
  74  
  75  //=================================================
  76  
  77  /**
  78  * fonction qui cherche s'il ya des caractres accentues francais dans une chaine en UTF8
  79  * @Parametres $str chaine a tester
  80  * @Return true ou false
  81  */
  82  
  83  function content8859_in_UTF8($str){
  84  
  85      if ( strlen($str) == 0 ) { return; }
  86          // cette fonction ne retourne de valeur si la chaine est en UTF8
  87          // cette fonction retourne un tableau contenant les chaines accentuees
  88          preg_match_all('/.{1}|[^\x00]{1,1}$/us', $str, $ar);
  89          $chars = $ar[0];
  90          $str_fr = 0;
  91          foreach ( $chars as $i => $c ){
  92              $ud = 0;
  93              // Calcul les codes ASCII des chaines en UTF8
  94              if (ord($c{0})>=0 && ord($c{0})<=127) { continue; } // ASCII - next please
  95              if (ord($c{0})>=192 && ord($c{0})<=223) { $ord = (ord($c{0})-192)*64 + (ord($c{1})-128); }
  96              if (ord($c{0})>=224 && ord($c{0})<=239) { $ord = (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128); }
  97              if (ord($c{0})>=240 && ord($c{0})<=247) { $ord = (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128); }
  98              if (ord($c{0})>=248 && ord($c{0})<=251) { $ord = (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128); }
  99              if (ord($c{0})>=252 && ord($c{0})<=253) { $ord = (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128); }
 100              if (ord($c{0})>=254 && ord($c{0})<=255) { $chars{$i} = $unknown; continue; } //error
 101              //Test si les caracteres contient les accents 
 102              if(($ord == 224) || ($ord == 226) || ($ord == 235) || ($ord == 249) || ($ord == 250) || ($ord == 252) || ($ord == 251) || ($ord == 233) || ($ord == 234) || ($ord == 232) || ($ord == 231) || ($ord == 228) || ($ord == 256) || ($ord == 128) || ($ord == 156) || ($ord == 230) || ($ord == 231) || ($ord == 244) || ($ord == 225) || ($ord == 236) || ($ord == 227) || ($ord == 237) || ($ord == 238) || ($ord == 249) || ($ord == 239) || ($ord == 257)){
 103                  $str_fr =1;
 104              }
 105          }
 106      if($str_fr == 1){
 107          return "TRUE";
 108      }else{
 109          return "FALSE";
 110      }
 111  }
 112  
 113  
 114  //=================================================
 115  /**
 116  * Remplace les caracteres accentues par leurs equivalents  et l'espace par underscore (modifie pour utf-8)
 117  
 118  * @Parametres $chaine a traiter
 119  * @Return chaine sans accent
 120  */
 121  
 122  // Remplace les caracteres accentues par leurs equivalents, et les majuscules
 123  // et l'espace par underscore (modifie pour utf-8)
 124  function enleveaccents($chaine){
 125      
 126      $chaine=convertUTF8_to_8859($chaine);
 127      $chaine = str_replace(
 128          array(
 129          'à', 'â', 'ä', 'á', 'ã', 'å',
 130          'î', 'ï', 'ì', 'í',
 131          'ô', 'ö', 'ò', 'ó', 'õ', 'ø',
 132          'ù', 'û', 'ü', 'ú',
 133          'é', 'è', 'ê', 'ë',
 134          'ç', 'ÿ', 'ñ',
 135          'À', 'Â', 'Ä', 'Á', 'Ã', 'Å',
 136          'Î', 'Ï', 'Ì', 'Í',
 137          'Ô', 'Ö', 'Ò', 'Ó', 'Õ', 'Ø',
 138          'Ù', 'Û', 'Ü', 'Ú',
 139          'É', 'È', 'Ê', 'Ë',
 140          'Ç', '¾', 'Ñ',
 141          ' '
 142          ),
 143          array(
 144          'a', 'a', 'a', 'a', 'a', 'a',
 145          'i', 'i', 'i', 'i',
 146          'o', 'o', 'o', 'o', 'o', 'o',
 147          'u', 'u', 'u', 'u',
 148          'e', 'e', 'e', 'e',
 149          'c', 'y', 'n',
 150          'a', 'a', 'a', 'a', 'a', 'a',
 151          'i', 'i', 'i', 'i',
 152          'o', 'o', 'o', 'o', 'o', 'o',
 153          'u', 'u', 'u', 'u',
 154          'e', 'e', 'e', 'e',
 155          'c', 'y', 'n',
 156          '_'
 157      ),$chaine);
 158      
 159    return $chaine;
 160  }
 161  
 162  
 163  
 164  //=================================================
 165  
 166  /**
 167  * Verification de l'intitule d'un groupe 
 168  * L'intitule d'un groupe ne doit pas commencer et finir par les mots : Classe, Cours, Equipe, Matiere
 169  
 170  * @Parametres
 171  * @Return
 172  */
 173  
 174  
 175  function verifIntituleGrp ($intitule) {
 176    $motif1 = "#^Classe$#";
 177    $motif2 = "#^Cours$#";
 178    $motif3 = "#^Equipe$#";
 179    $motif4 = "#^Matiere$#";
 180    if ( preg_match($motif1,$intitule)||preg_match($motif2,$intitule)||preg_match($motif3,$intitule)||preg_match($motif4,$intitule) ) {
 181      $ret = false;
 182    } else $ret = true;
 183    return $ret;
 184  }
 185  
 186  
 187  //=================================================
 188  
 189  /**
 190  * Verification de la validite d'un mot de passe 
 191  * longueur de 4 a 20 caracteres
 192  * compose de lettre et d'au moins un chiffre ou des caracteres speciaux suivants : _@£%§!?*:
 193  
 194  * @Parametres password a tester
 195  * @Return true si Ok false sinon 
 196  */
 197  
 198  function verifPwd ($password) {
 199    global $char_spec;
 200  
 201    if ( preg_match("/(^[a-zA-Z]*$)|(^[0-9]*$)/", $password) )
 202        return false;
 203    elseif ( preg_match("/^[[:alnum:]$char_spec]{4,20}$/", $password) )
 204          return true; else return false;
 205  }
 206  
 207  
 208  //=================================================
 209  
 210  /**
 211  * Verification format date de naissance
 212  
 213  * @Parametres date a verifier
 214  * @Return true si ok false sinon
 215  */
 216  
 217  function verifDateNaissance ($date) {
 218  $motif = "^[0-9]{8}$";
 219  
 220   if ( preg_match("/$motif/", $date) ) {
 221     // Verification de l'annee
 222     if ( (date(Y) - substr ($date,0,4) < 75) && (date(Y) - substr ($date,0,4) > 4) ) {
 223       // Verification du mois
 224       if ( (substr ($date,4,2) > 0) && (substr ($date,4,2) <= 12 ) ) {
 225         if ( (substr ($date,6,2) > 0) && (substr ($date,6,2) <= 31) ) {
 226           $ret = true;
 227         }
 228       }
 229     }
 230   } else {
 231    $ret = false;
 232   }
 233   return $ret;
 234  }
 235  
 236  
 237  
 238  //=================================================
 239  
 240  /**
 241  * Verification d'une entree de type Nom ou Prenom si on a des caracteres etranges
 242  
 243  * @Parametres $entree
 244  * @Return true si Ok false sinon.
 245  */
 246  
 247  function verifEntree($entree) {
 248    $motif = "#^[_0-9a-zA-Z \'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]{2,20}$#";
 249  
 250    if ( preg_match($motif, $entree) ) {
 251       $ret= true;
 252    } else {
 253      $ret= false;
 254    }
 255    return $ret;
 256  }
 257  
 258  
 259  
 260  //=================================================
 261  
 262  /**
 263  * Verification du format du pseudo
 264  
 265  * @Parametres
 266  * @Return
 267  */
 268  
 269  function verifPseudo($pseudo) {
 270    $motif = "#\|,/ #";
 271  
 272    if ( preg_match($motif, $pseudo) || strlen ($pseudo) > 20 || strlen ($pseudo) == 0 ) {
 273      $ret = false;
 274    } else {
 275      $ret = true;
 276    }
 277    return $ret;
 278  }
 279  
 280  
 281  
 282  //=================================================
 283  
 284  /**
 285  * Verification du champ description
 286  
 287  * @Parametres
 288  * @Return
 289  */
 290  
 291  function verifDescription($entree) {
 292    $motif = "/^[a-zA-Z0-9\s,.;\"\'\/:&ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ-]{0,80}$/";
 293    if ( preg_match($motif, stripslashes($entree)) ) {
 294       $ret= true;
 295    } else {
 296      $ret= false;
 297    }
 298    return $ret;
 299  }
 300  
 301  
 302  //=================================================
 303  
 304  /**
 305  * Verification numero de telephone
 306  
 307  * @Parametres
 308  * @Return
 309  */
 310  
 311  function verifTel ($tel) {
 312    $motif ="#^[0-9]{10}$#";
 313  
 314    if ( preg_match($motif, $tel) || strlen ($tel) == 0 ) {
 315      $ret = true;
 316    } else {
 317      $ret = false;
 318    }
 319    return $ret;
 320  }
 321  
 322  
 323  
 324  //=================================================
 325  
 326  /**
 327  * Affiche le haut des pages avec le login
 328  
 329  * @Parametres
 330  * @Return
 331  */
 332  
 333  function header_html()
 334  {
 335  global $login;
 336  ?>
 337  <html>
 338  <head>
 339  <style type='text/css'>
 340  body{
 341      background: url(/elements/images/fond_SE3.png) ghostwhite bottom right no-repeat fixed;
 342  }
 343  </style>
 344  <title>Interface d'administration de SambaEdu</title>
 345  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 346  <link type='text/css' rel="stylesheet" href="/elements/style_sheets/sambaedu.css" />
 347  </head>
 348  <body>
 349  <?php
 350  print "<h3 align='right'>".gettext("Bonjour")." $login</h3>";
 351  }
 352  
 353  
 354  //=================================================
 355  
 356  /**
 357  * Test si $login a le droit $droit
 358  
 359  * @Parametres $droit droit a tester - $login login a tester
 360  * @Return Y si il a le droit, N sinon.
 361  */
 362  
 363  function is_admin ($droit,$login)
 364  {
 365     if ((ldap_get_right("se3_is_admin",$login)=="Y")||(ldap_get_right($droit,$login)=="Y"))
 366      $srch="Y";
 367    else
 368      $srch="N";
 369    return $srch;
 370  }
 371  
 372  
 373  //=================================================
 374  
 375  /**
 376  * Affiche le menu de recherche dans la partie LDAP
 377  
 378  * @Parametres
 379  * @Return
 380  */
 381  
 382  function  aff_mnu_search($user_type)
 383  {
 384    if ($user_type=="Y") {
 385  
 386  
 387      // keyser modif MC marques 02/06
 388         // Affichage menu admin
 389      echo"
 390  
 391       <ul>
 392         <li><b>".gettext("Rechercher :")."</b>
 393              <ul>
 394                  <li><a href=\"search.php\">".gettext("Effectuer une recherche...")."</a>(".gettext("pour d'eventuelles modifications").")</li>
 395              </ul>
 396              <br />
 397          </li>
 398  
 399         <li><b>".gettext("Ajouter")." :</b>
 400           <ul>
 401             <li><a href=\"add_user.php\">".gettext("un utilisateur...")."</a></li>
 402             <li><a href=\"add_group.php\">".gettext("un groupe...")."</a></li>
 403             <li><a href=\"groupetpe.php\">".gettext("un regroupement...")."</a></li>
 404             </ul>
 405             <br />
 406          </li>
 407          <li><b>".gettext("Import / Export")." :</b>
 408            <ul>
 409              <li><a href=\"../gepcgi/index.php\">".gettext("Importer les comptes en masse...")."</a></li>
 410              <li><a href=\"export_csv.php\">".gettext("Exporter les comptes en format CSV...")." </a></li>
 411            </ul>
 412          </li>
 413       </ul>\n";
 414  
 415  
 416    } else {
 417      // Affichage menu user
 418      echo "
 419       <ul>
 420         <li><a href=\"search.php\">".gettext("Effectuer une recherche...")."</a></li>
 421       </ul>\n";
 422    }
 423  }
 424  
 425  
 426  
 427  //=================================================
 428  
 429  /**
 430  * Affichage de la barre remorquee de haut de page
 431  
 432  * mode 1  : lien Annuaire
 433  * mode 2  : lien Annuaire -> Recherche
 434  * mode 3  : lien Annuaire -> Lien Recherche
 435  * mode 31 : lien Annuaire -> Modification
 436  * mode 4  : lien Annuaire -> lien Modification pseudo
 437  * mode 5  : lien Annuaire -> lien Modification pwd
 438  * mode 6  : lien Annuaire -> lien Ajout groupe
 439  * mode 7  : lien Annuaire -> lien Ajout utilisateur
 440  
 441  * @Parametres
 442  * @Return
 443  */
 444  
 445  function aff_trailer ($mode)
 446  {
 447    global $imagespath;
 448      echo"<h2><a href=\"annu.php\">".gettext("Annuaire")."</a>&nbsp;";
 449      if ($mode == 1 ) {
 450        echo "</h2>";
 451      } elseif ($mode == 2) {
 452        echo "-> ".gettext("Recherche")."</h2>";
 453      } elseif ($mode == 3 ) {
 454        echo "-> <a href=\"search.php\">".gettext("Recherche")."</a></h2>";
 455      } elseif ($mode == 31 ) {
 456        echo "-> <a href=\"search.php\">".gettext("Recherche")."</a> ->".gettext(" Modification")."</h2>";
 457      } elseif ($mode == 4 ) {
 458        echo "-> <a href=\"mod_entry.php\">".gettext("Modification")."</a></h2>";
 459      } elseif ($mode == 5 ) {
 460        echo "-> <a href=\"mod_pwd.php\">".gettext("Modification")."</a></h2>";
 461      } elseif ($mode == 6 ) {
 462        echo "-> <a href=\"add_group.php\">".gettext("Ajout d'un groupe")."</a></h2>";
 463      } elseif ($mode == 7 ) {
 464        echo "-> <a href=\"add_user.php\">".gettext("Ajout d'un utilisateur")."</a></h2>";
 465      } elseif ($mode != "") {
 466      list($valeur, $filtre) = preg_split ("#_#", $mode); 
 467            if ($valeur == 8 ) {
 468              $mode=preg_replace("#8_#","",$mode);
 469          echo "-> <a href=\"search.php\">".gettext("Recherche")."</a> -><a href=\"group.php?filter=$mode\">".gettext(" Modification")."</a> -> $mode</h2>";
 470          }
 471            if ($valeur == 9 ) {
 472          $mode=preg_replace("#9_#","",$mode);
 473          echo "-> <a href=\"search.php\">".gettext("Recherche")."</a> -><a href=\"people.php?uid=$mode\">".gettext(" Modification")."</a> -> $mode</h2>";
 474          }
 475      } else {
 476        echo "</h2>";
 477      }
 478      echo "<hr />\n";
 479  }
 480  
 481  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1