[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/usr/bin/perl -w 2 3 use Se; 4 5 # Algorythme global 6 # ================= 7 if (!defined ($pid = fork)) { 8 die "Impossible de « forker » : $!\n"; 9 } elsif (! $pid) { 10 &traitement_fond; 11 exit(0); 12 } else { 13 &traitement; 14 exit(0); 15 } 16 17 sub traitement { 18 19 open ENCOURS, '>/tmp/EnCours.temp'; 20 print ENCOURS '1'; 21 close ENCOURS; 22 23 # Initialisation des variables 24 # ---------------------------- 25 # Uid de départ 26 $uidNumber = getFirstFreeUid(1001); 27 # Gid de départ 28 $gidNumber = getFirstFreeGid(2000); 29 30 &entete(STDOUT); 31 32 if (isAdmin() ne 'Y') { 33 print 34 "<p><strong>Erreur :</strong> vous n'avez pas les droits nécessaires", 35 " pour effectuer l'importation !</p>"; 36 &pdp(STDOUT); 37 exit(0); 38 } 39 40 # Récupération, Capitalisation et modification du préfixe 41 $prefix = param('prefix') or $prefix = ''; 42 $prefix =~ tr/a-z/A-Z/; 43 $prefix .= '_' unless ($prefix eq ''); 44 # Récupération de la valeur du flag ANNUELLE 45 $annuelle = param('annuelle'); 46 47 open INT, '>/tmp/gepInterface.temp' or warn 'Impossible d\'écrire dans /tmp !'; 48 print INT "$prefix:$annuelle"; 49 close INT; 50 51 # Écriture des fichiers dans /tmp 52 # =============================== 53 foreach $fichier (keys(%formatTxt)) { 54 # Vérification du passage d'un fichier 55 # ------------------------------------ 56 $nom = param("$fichier"); 57 if ($nom eq '') { 58 print STDOUT "Pas de fichier fourni pour ", 59 "<span class=\"filename\">$fichier</span> !<br>\n" if ($debug > 1); 60 $atLeastOneNotOk = 1; 61 } else { 62 $fileHandle = upload("$fichier"); 63 open ( FICHTMP ,">/tmp/ApacheCgi.temp"); 64 while (<$fileHandle>) { 65 print FICHTMP; 66 } 67 close FICHTMP; 68 # Appel de la fonction d'ecriture du fichier vérifié et nettoyé (utf8) 69 # -------------------------------------------------------------------- 70 $res = txtVerif($fichier); 71 $atLeastOneNotOk = 1 if $res; 72 print "Format du fichier <span class=\"filename\">$fichier</span> erroné<br>\n" if $res; 73 unless ($res) { 74 $ok{$fichier} = 1; 75 $atLeastOneOk = 1; 76 } 77 } 78 } 79 80 # Rapport concernant la validité des fichiers 81 # =========================================== 82 unless ($atLeastOneOk) { 83 print "<strong>Aucun fichier valide n'a été fourni !</strong>\n"; 84 pdp(STDOUT); 85 exit 0; 86 } 87 88 if ($debug > 1 && $atLeastOneOk) { 89 print 90 "<h2>Fichiers fournis et valides</h2>\n", 91 "<ul style=\"color: green\">\n"; 92 foreach $fichier (keys(%formatTxt)) { 93 print "<li><span class=\"filename\" style=\"color: #404044\">$fichier</span></li>\n" if $ok{$fichier}; 94 } 95 print "</ul>\n"; 96 } 97 if ($debug > 1 && $atLeastOneNotOk) { 98 print 99 "<h2>Fichiers non fournis ou invalides</h2>\n", 100 "<ul style=\"color: red\">\n"; 101 foreach $fichier (keys(%formatTxt)) { 102 print 103 "<li><span class=\"filename\" style=\"color: #404044\">", 104 "$fichier</span></li>\n" unless $ok{$fichier}; 105 } 106 print "</ul>\n"; 107 } 108 109 # Suppression des pages html résultats antérieures 110 # ------------------------------------------------ 111 unlink <$documentRoot/$webDir/result*> 112 or warn "Le serveur Web n'a pas les droits suffisants", 113 "sur le répertoire '$documentRoot/$webDir/result*'."; 114 115 # Écriture du fichier html provisoire de résultat final 116 # ----------------------------------------------------- 117 open (RES, ">$documentRoot/$webDir/result.$pid.html") 118 or die "Le serveur Web n'a pas les droits suffisants sur le répertoire '$documentRoot/$webDir/result*'."; 119 &entete(RES); 120 print RES 121 p('<span style="text-align: center; font-weight: bold">Traitement en cours...</span>'); 122 &pdp(RES); 123 close RES; 124 125 print "<h2>Création des entrées <span class=\"abbrev\">ldap</span> suivantes</h2>\n" if $debug; 126 if ($ok{'f_ele'} or $ok{'f_wind'}) { 127 print 128 "<strong>Comptes utilisateur :</strong>\n", 129 "<ul style=\"color: green\">\n" if $debug; 130 if ($ok{'f_ele'}) { 131 print "<li><span class=\"filename\" style=\"color: #404044\">Élèves</span></li>\n" if $debug; 132 $createEleves = 1; 133 } 134 if ($ok{'f_wind'}) { 135 print "<li><span class=\"filename\" style=\"color: #404044\">Profs</span></li>\n" if $debug; 136 $createProfs = 1; 137 } 138 print "</ul>\n"; 139 } 140 if ($ok{'f_div'} or $ok{'f_ele'} or $ok{'f_men'}) { 141 print 142 "<strong>Groupes :</strong>\n", 143 "<ul style=\"color: green\">\n" if $debug; 144 if ($ok{'f_div'} or $ok{'f_ele'}) { 145 print "<li><span class=\"filename\" style=\"color: #404044\">Classes</span></li>\n" if $debug; 146 print "<li><span class=\"filename\" style=\"color: #404044\">Équipes</span></li>\n" if $debug; 147 $createClasses = 1; $createEquipes = 1; 148 } 149 if ($ok{'f_men'}) { 150 print 151 "<li><span class=\"filename\" style=\"color: #404044\">Cours</span></li>\n", 152 "<li><span class=\"filename\" style=\"color: #404044\">Matières</span></li>\n" if $debug; 153 $createCours = 1; $createMatieres = 1; 154 } 155 print "</ul>\n"; 156 } 157 158 if ($atLeastOneNotOk) { 159 print "<h2>Problèmes liés à l'absence ou à l'invalidité de certains fichiers</h2>\n" if $debug; 160 if (! $ok{'f_ele'} or ! $ok{'f_wind'}) { 161 print 162 "<strong>Pas de création des comptes utilisateur :</strong>\n", 163 "<ul style=\"color: red\">\n" if $debug; 164 print "<li><span class=\"filename\" style=\"color: #404044\">Élèves</span></li>\n" 165 if (! $ok{'f_ele'} and $debug); 166 print "<li><span class=\"filename\" style=\"color: #404044\">Profs</span></li>\n" 167 if (! $ok{'f_wind'} and $debug); 168 print "</ul>\n"; 169 } 170 if (! $ok{'f_div'} or ! $ok{'f_ele'} or ! $ok{'f_men'}) { 171 print 172 "<strong>Pas de création des groupes :</strong>\n", 173 "<ul style=\"color: red\">\n" if $debug; 174 print "<li><span class=\"filename\" style=\"color: #404044\">Classes</span></li>\n", 175 "<li><span class=\"filename\" style=\"color: #404044\">Équipes</span></li>\n" 176 if (! $ok{'f_div'} and ! $ok{'f_ele'} and $debug); 177 print 178 "<li><span class=\"filename\" style=\"color: #404044\">Cours</span></li>\n", 179 "<li><span class=\"filename\" style=\"color: #404044\">Matières</span></li>\n" 180 if (! $ok{'f_men'} and $debug); 181 print "</ul>\n"; 182 } 183 if ((! $ok{'f_div'} and ($createClasses or $createEquipes))) 184 # or (! $ok{'f_tmt'} and $createMatieres) 185 # or (! $ok{'f_gro'} and $createCours)) 186 { 187 print 188 "<strong>Pas de description disponible pour les groupes ", 189 "(utilisation du mnémonique) :</strong>\n", 190 "<ul style=\"color: red\">\n" if $debug; 191 if (! $ok{'f_div'}) { 192 print "<li><span class=\"filename\" style=\"color: #404044\">Classes</span></li>\n" 193 if ($createClasses and $debug); 194 print "<li><span class=\"filename\" style=\"color: #404044\">Équipes</span></li>\n" 195 if ($createEquipes and $debug); 196 } 197 print 198 "<li><span class=\"filename\" style=\"color: #404044\">Matières</span></li>\n", 199 " (limitation due à l'importation texte)." 200 if ($createMatieres and $debug); 201 print 202 "<li><span class=\"filename\" style=\"color: #404044\">Cours</span></li>\n", 203 " (limitation due à l'importation texte)." 204 if ($createCours and $debug); 205 print "</ul>\n"; 206 } 207 if (($createCours and ! $ok{'f_ele'}) or ($createClasses and ! $ok{'f_ele'})) { 208 print 209 "<strong>Pas de membres pour les groupes :</strong>\n", 210 "<ul style=\"color: red\">\n" if $debug; 211 print 212 "<li><span class=\"filename\" style=\"color: #404044\">Cours</span></li>\n" 213 if ($createCours and $ok{'f_ele'} and $debug); 214 print 215 "<li><span class=\"filename\" style=\"color: #404044\">Équipes</span></li>\n" 216 if ($createEquipes and ! $ok{'f_wind'} and $debug); 217 print "</ul>\n"; 218 } 219 } 220 221 print 222 "<div style=\"font-size: large; text-align: left; padding: 1em;", 223 " background-color: lightgrey\">Le traitement pouvant être particulièrement long,", 224 " il va maintenant continuer en tâche de fond.<br>\n", 225 'Le rapport final d\'importation sera accessible à l\'adresse :<br>', 226 "<div style=\"text-align: center; font-family: monospace\">", 227 "<a href=\"$hostname/$webDir/result.$pid.html\">", 228 "$hostname/$webDir/result.$pid.html</a></div>\n", 229 "Une fois le traitement terminé, utilisez l'annuaire pour vérifier la validité des résultats.", 230 "</div>\n"; 231 232 &pdp(STDOUT); 233 234 unlink('/tmp/EnCours.temp'); 235 236 } 237 238 sub traitement_fond { 239 240 # Attente de fin du traitement préparatoire 241 sleep(3); 242 $inc=0; 243 while (1) { 244 sleep 1; 245 $inc++; 246 if ($inc == 30) { 247 # Fermeture des entrées/sorties standard 248 close(STDIN); close(STDOUT); 249 open RES, ">$documentRoot/$webDir/result.$$.html"; 250 &entete(RES); 251 print RES 252 "<strong>Le traitement préparatoire des fichiers texte semble avoir été interrompu.<br>", 253 "Le traitement des fichiers prêts va tout de même se poursuivre.<br>", 254 "ATTENTION : votre importation risque de ne pas être complète...<br></strong>"; 255 last; 256 } 257 if (! -f '/tmp/EnCours.temp') { 258 # Fermeture des entrées/sorties standard 259 close(STDIN); close(STDOUT); 260 open RES, ">$documentRoot/$webDir/result.$$.html"; 261 &entete(RES); 262 print RES 263 "<strong>Le traitement préparatoire s'est terminé avec succès.</strong><br>"; 264 last; 265 } 266 } 267 268 open INT, '</tmp/gepInterface.temp'; 269 $ligne = <INT>; 270 ($prefix, $annuelle) = split /:/, $ligne; 271 close INT; 272 $prefix = '' unless $prefix; 273 274 annuelle() if ($annuelle); 275 276 # Création des entrées 277 # ==================== 278 279 # Initialisation des variables 280 # ---------------------------- 281 # Uid de départ 282 $uidNumber = getFirstFreeUid(1001); 283 # Gid de départ 284 $gidNumber = getFirstFreeGid(2000); 285 # Gid des utilisateurs LCS/SE3 286 $gid = $defaultgid; 287 unless 288 (-f '/tmp/f_ele.temp' 289 or -f '/tmp/f_wind.temp' 290 or -f '/tmp/f_men.temp' 291 or -f '/tmp/f_div.temp') { 292 exit 0; 293 } 294 # Connexion LDAP 295 # ============== 296 $lcs_ldap = Net::LDAP->new("$slapdIp"); 297 $lcs_ldap->bind( 298 dn => $adminDn, 299 password => $adminPw, 300 version => '3' 301 ); 302 303 # Profs 304 # ----- 305 if (-f '/tmp/f_wind.temp') { 306 print RES "<h2>Création des comptes 'Profs'</h2>\n<table>\n"; 307 open PROFS, '</tmp/f_wind.temp'; 308 while (<PROFS>) { 309 chomp($ligne = $_); 310 ($numind, $nom, $prenom, $date, $sexe) = (split /\|/, $ligne); 311 $uniqueNumber = $numind; 312 $res = processGepUser( $uniqueNumber, $nom, $prenom, $date, $sexe, 'undef' ); 313 print RES $res if ($res =~ /Cr/ or ($debug > 1 and $res !~ /Cr/)); 314 unless ($res =~ /conflits/) { 315 # Ajoût de l'uid au groupe Profs 316 $res = $lcs_ldap->search(base => "$profsDn", 317 scope => 'base', 318 filter => "memberUid=$uid"); 319 unless (($res->entries)[0]) { 320 $res = $lcs_ldap->modify( $profsDn, 321 add => { 'memberUid' => $uid } ); 322 warn $res->error if $res->code; 323 } 324 } 325 } 326 print RES "</table>\n"; 327 close PROFS; 328 } 329 330 # Classes 331 # ------- 332 if (-f '/tmp/f_div.temp') { 333 print RES "<h2>Création des groupes 'Classe' et 'Equipe'</h2>\n<table>\n"; 334 open DIV, '</tmp/f_div.temp'; 335 while (<DIV>) { 336 chomp($ligne = $_); 337 ($divcod, $divlib, $profUniqueNumber) = (split/\|/, $ligne); 338 $divcod =~ s/\s/_/; 339 $divlib = normalize($divlib,4); 340 $libelle{$divcod} = $divlib; 341 $res = $lcs_ldap->search(base => "$peopleDn", 342 scope => 'one', 343 filter => "employeeNumber=$profUniqueNumber"); 344 $profPrincUid = ''; 345 if (($res->entries)[0]) { 346 $profPrincUid = (($res->entries)[0])->get_value('uid'); 347 } 348 # Recherche de l'existence de la classe 349 $res = $lcs_ldap->search(base => "cn=Classe_$prefix$divcod,$groupsDn", 350 scope => 'base', 351 filter => "cn=*"); 352 if (($res->entries)[0]) { 353 if (! (($res->entries)[0])->get_value('description') and $divlib) { 354 print RES "<tr><td><strong><tt>$divcod</tt> :</strong></td><td>Mise à jour de la description du groupe 'Classe' : <em>$divlib</em></td></tr>\n" if $debug > 1; 355 $res2 = $lcs_ldap->modify( "cn=Classe_$prefix$divcod,$groupsDn", 356 add => { description => $divlib } ); 357 warn $res2->error if $res2->code; 358 } 359 } else { 360 $gidNumber = getFirstFreeGid($gidNumber); 361 @classEntry = ( 362 'cn', "Classe_$prefix$divcod", 363 'objectClass', 'top', 364 'objectClass', 'posixGroup', 365 'gidNumber', $gidNumber, 366 ); 367 push @classEntry, ('description', $divlib) if $divlib; 368 $res = $lcs_ldap->add( "cn=Classe_$prefix$divcod,$groupsDn", 369 attrs => \@classEntry ); 370 warn $res->error if $res->code; 371 print RES "<tr><td><strong><tt>$divcod</tt> :</strong></td><td>Création du groupe 'Classe' <em>$divlib</em></td></tr>\n" if $debug; 372 } 373 # Recherche de l'existence de l'équipe 374 $res = $lcs_ldap->search(base => "cn=Equipe_$prefix$divcod,$groupsDn", 375 scope => 'base', 376 filter => "cn=*"); 377 if (($res->entries)[0]) { 378 if (! (($res->entries)[0])->get_value('description') and $divlib) { 379 print RES "<tr><td><strong><tt>$divcod</tt> :</strong></td><td>Mise à jour de la description du groupe 'Equipe' : <em>$divlib</em></td></tr>\n" if $debug > 1; 380 $res2 = $lcs_ldap->modify( "cn=Equipe_$prefix$divcod,$groupsDn", 381 add => { description => $divlib } ); 382 warn $res2->error if $res2->code; 383 } 384 if (! (($res->entries)[0])->get_value('owner') and $profPrincUid) { 385 print RES "<tr><td><strong><tt>$divcod</tt> :</strong></td><td>Mise à jour du propriétaire du groupe 'Equipe' : <em>$divlib</em></td></tr>\n" if $debug > 1; 386 $res2 = $lcs_ldap->modify( "cn=Equipe_$prefix$divcod,$groupsDn", 387 add => { owner => "uid=$profPrincUid,$peopleDn" } ); 388 warn $res2->error if $res2->code; 389 } 390 next; 391 } else { 392 $gidNumber = getFirstFreeGid($gidNumber); 393 @equipeEntry = ( 394 'cn', "Equipe_$prefix$divcod", 395 'objectClass', 'top', 396 'objectClass', 'posixGroup', 397 'gidNumber', $gidNumber, 398 ); 399 400 push @equipeEntry, ('description', $divlib) if $divlib; 401 #push @equipeEntry, ('owner', "uid=$profPrincUid,$peopleDn") if $profPrincUid; 402 $res = $lcs_ldap->add( "cn=Equipe_$prefix$divcod,$groupsDn", 403 attrs => \@equipeEntry ); 404 warn $res->error if $res->code; 405 print RES "<tr><td><strong><tt>$divcod</tt> :</strong></td><td>Création du groupe 'Equipe' <em>$divlib</em></td></tr>\n" if $debug > 1; 406 } 407 } 408 print RES "</table>\n"; 409 } 410 411 # Eleves 412 # ----- 413 if (-f '/tmp/f_ele.temp') { 414 print RES "<h2>Création des comptes 'Eleves'"; 415 print RES " <span style=\"font-size: small\">(et des groupes 'Classes' et 'Equipes' associés)</span>" 416 unless (-f '/tmp/f_div.temp'); 417 print RES "</h2>\n<table>\n"; 418 open ELEVES, '</tmp/f_ele.temp'; 419 while (<ELEVES>) { 420 chomp($ligne = $_); 421 ($uniqueNumber, $nom, $prenom, $date, $sexe, $divcod) = (split /\|/, $ligne); 422 $divcod =~ s/\s/_/g; 423 next if $divcod eq ''; 424 unless (-f '/tmp/f_div.temp') { 425 # Création des classes 426 $res = $lcs_ldap->search(base => "cn=Classe_$prefix$divcod,$groupsDn", 427 scope => 'base', 428 filter => "cn=*"); 429 unless (($res->entries)[0]) { 430 $gidNumber = getFirstFreeGid($gidNumber); 431 @classEntry = ( 432 'cn', "Classe_$prefix$divcod", 433 'objectClass', 'top', 434 'objectClass', 'posixGroup', 435 'gidNumber', $gidNumber, 436 ); 437 $res = $lcs_ldap->add( "cn=Classe_$prefix$divcod,$groupsDn", 438 attrs => \@classEntry ); 439 warn $res->error if $res->code; 440 } 441 # Création des Équipes 442 $res = $lcs_ldap->search(base => "cn=Equipe_$prefix$divcod,$groupsDn", 443 scope => 'base', 444 filter => "cn=*"); 445 unless (($res->entries)[0]) { 446 @equipeEntry = ( 447 'cn', "Equipe_$prefix$divcod", 448 'objectClass', 'top', 449 'objectClass', 'PosixGroup', ); 450 # 'objectClass', 'groupOfNames', ); 451 #leb 'member', '' ); 452 $res = $lcs_ldap->add( "cn=Equipe_$prefix$divcod,$groupsDn", 453 attrs => \@equipeEntry ); 454 warn $res->error if $res->code; 455 } 456 } 457 $res = processGepUser($uniqueNumber, $nom, $prenom, $date, $sexe, 'undef'); 458 print RES $res if ($res =~ /Cr/ or ($debug > 1 and $res !~ /Cr/)); 459 unless ($res =~ /conflits/) { 460 # Ajoût de l'uid au groupe Eleves 461 $res = $lcs_ldap->search(base => "$elevesDn", 462 scope => 'base', 463 filter => "memberUid=$uid"); 464 unless (($res->entries)[0]) { 465 $res = $lcs_ldap->modify( 466 $elevesDn, 467 add => { 'memberUid' => $uid } 468 ); 469 warn $res->error if $res->code; 470 } 471 # Remplissage des classes 472 $res = $lcs_ldap->search(base => "cn=Classe_$prefix$divcod,$groupsDn", 473 scope => 'base', 474 filter => "memberUid=$uid"); 475 unless (($res->entries)[0]) { 476 $res = $lcs_ldap->modify( 477 "cn=Classe_$prefix$divcod,$groupsDn", 478 add => { 'memberUid' => $uid } 479 ); 480 warn $res->error if $res->code; 481 } 482 } 483 } 484 print RES "</table>"; 485 close ELEVES; 486 } 487 488 # Analyse du fichier F_MEN 489 # ------------------------ 490 if (-f '/tmp/f_men.temp') { 491 open F_MEN, "</tmp/f_men.temp"; 492 print RES "<h2>Création des groupes 'Cours' et 'Matiere'</h2>\n<table>\n"; 493 while (<F_MEN>) { 494 chomp ($ligne = $_); 495 ($matimn, $elstco, $uniqueNumber) = (split/\|/, $ligne); 496 $matimn =~ s/\s/_/g; 497 $elstco =~ s/\s/_/g; 498 # Génération du nom du cours (mnémoniqueMatière_codeGroupe) 499 $cours = $matimn . '_' . $elstco; 500 if ($uniqueNumber) { 501 $res = $lcs_ldap->search(base => "$peopleDn", 502 scope => 'one', 503 filter => "employeeNumber=$uniqueNumber"); 504 if (($res->entries)[0]) { 505 $profUid = (($res->entries)[0])->get_value('uid'); 506 } else { 507 $profUid = ''; 508 } 509 } else { 510 $profUid = ''; 511 } 512 $description = $matimn; 513 if ($libelle{$elstco}) { 514 $description .= " / " . $libelle{$elstco}; 515 } else { 516 $description .= " / " . $elstco; 517 } 518 $res = $lcs_ldap->search(base => "cn=Cours_$prefix$cours,$groupsDn", 519 scope => 'base', 520 filter => "objectClass=*"); 521 if (($res->entries)[0]) { 522 # Mise à jour le cas échéant de la description 523 if (($res->entries)[0]->get_value('description') =~ /$elstco/ and $description !~ /$elstco/) { 524 $res2 = $lcs_ldap->modify( "cn=Cours_$prefix$cours,$groupsDn", 525 replace => { description => $description } ); 526 warn $res2->error if $res2->code; 527 print RES "<tr><td>Cours <span class=\"abbrev\">gep</span> <strong>$cours</strong> : </td><td>Mise à jour de la description du groupe 'Cours'</td></tr>\n" if $debug > 1; 528 } 529 } else { 530 $gidNumber = getFirstFreeGid($gidNumber); 531 @coursEntry = ( 532 'cn', "Cours_$prefix$cours", 533 'objectClass', 'top', 534 'objectClass', 'posixGroup', 535 'gidNumber', $gidNumber, 536 'description', $description, 537 ); 538 push @coursEntry, ('memberUid', $profUid) if $profUid; 539 $res = $lcs_ldap->add( "cn=Cours_$prefix$cours,$groupsDn", 540 attrs => \@coursEntry ); 541 warn $res->error if $res->code; 542 print RES "<tr><td>Cours <strong>$cours</strong> : </td><td>Création du groupe 'Cours'</td></tr>\n" if $debug; 543 } 544 # Ajout du prof le cas échéant 545 if ($profUid) { 546 $res = $lcs_ldap->search(base => "cn=Cours_$prefix$cours,$groupsDn", 547 scope => 'base', 548 filter => "memberUid=$profUid"); 549 if (! ($res->entries)[0]) { 550 $res = $lcs_ldap->modify( "cn=Cours_$prefix$cours,$groupsDn", 551 add => { memberUid => $profUid } ); 552 warn $res->error if $res->code; 553 } 554 } 555 # Ajout des autres membres du cours 556 #leb $res = $lcs_ldap->search(base => "cn=Classe_$prefix$elstco,$groupsDn", 557 #leb scope => 'base', 558 #leb filter => "cn=*"); 559 #leb if ($member{$elstco}) { 560 #leb # Cas d'un groupe 561 #leb chop($members = $member{$elstco}); 562 #leb foreach $member (split / /, $members) { 563 #leb $res = $lcs_ldap->search(base => "cn=Cours_$prefix$cours,$groupsDn", 564 #leb scope => 'base', 565 #leb filter => "memberUid=$member"); 566 #leb if (! ($res->entries)[0]) { 567 #leb $res = $lcs_ldap->modify( "cn=Cours_$prefix$cours,$groupsDn", 568 #leb add => { memberUid => $member } ); 569 #leb warn $res->error if $res->code; 570 #leb } 571 #leb print RES "<tr><td>Cours <strong>$cours</strong> : </td><td>Ajoût des élèves du groupe</td></tr>\n" if $debug > 1; 572 #leb } 573 #leb } else { 574 #leb # cas d'une classe. C'EST TOUJOURS LE CAS D'UNE CLASSE ! 575 $res = $lcs_ldap->search(base => "cn=Classe_$prefix$elstco,$groupsDn", 576 scope => 'base', 577 filter => "objectClass=posixGroup"); #leb à la place de : filter => "objectClass=*"); 578 if (($res->entries)[0]) { 579 @members = ($res->entries)[0]->get_value('memberUid'); 580 foreach $member (@members) { 581 $res = $lcs_ldap->search(base => "cn=Cours_$prefix$cours,$groupsDn", 582 scope => 'base', 583 filter => "memberUid=$member"); 584 if (! ($res->entries)[0]) { 585 $res = $lcs_ldap->modify( "cn=Cours_$prefix$cours,$groupsDn", 586 add => { memberUid => $member } ); 587 warn $res->error if $res->code; 588 } 589 } 590 } 591 #leb } 592 593 if ($profUid) { 594 # Remplissage de l'équipe pédagogique de la classe 595 $res = $lcs_ldap->search(base => "cn=Equipe_$prefix$elstco,$groupsDn", 596 scope => 'base', 597 filter => "objectClass=posixGroup"); 598 # filter => "objectClass=*"); 599 if (($res->entries)[0]) { 600 $res = $lcs_ldap->search(base => "cn=Equipe_$prefix$elstco,$groupsDn", 601 scope => 'base', 602 filter => "memberUid=$profUid"); 603 # filter => "member=uid=$profUid,$peopleDn"); 604 unless (($res->entries)[0]) { 605 $res = $lcs_ldap->modify( "cn=Equipe_$prefix$elstco,$groupsDn", 606 add => { memberUid => $profUid } ); 607 # add => { member => "uid=$profUid,$peopleDn" } ); 608 warn $res->error if $res->code; 609 } 610 } 611 # Remplissage et/ou création du GroupOfNames Matiere 612 # Si la matière n'existe pas encore 613 $res = $lcs_ldap->search(base => "cn=Matiere_$prefix$matimn,$groupsDn", 614 scope => 'base', 615 filter => "objectClass=posixGroup"); 616 # filter => "objectClass=*"); 617 if (! ($res->entries)[0]) { 618 $gidNumber = getFirstFreeGid($gidNumber); 619 @matiereEntry = ( 620 'cn', "Matiere_$prefix$matimn", 621 'objectClass', 'top', 622 'objectClass', 'posixGroup', 623 'gidNumber', $gidNumber); 624 # 'objectClass', 'groupOfNames' ); 625 #leb 'member', '', ); 626 $res = $lcs_ldap->add( "cn=Matiere_$prefix$matimn,$groupsDn", 627 attrs => \@matiereEntry ); 628 } 629 # Avec ses membres 630 $res = $lcs_ldap->search(base => "cn=Matiere_$prefix$elstco,$groupsDn", 631 scope => 'base', 632 filter => "memberUid=$profUid"); 633 # filter => "member=uid=$profUid,$peopleDn"); 634 unless (($res->entries)[0]) { 635 $res = $lcs_ldap->modify( "cn=Matiere_$prefix$matimn,$groupsDn", 636 add => { memberUid => $profUid } ); 637 # add => { member => "uid=$profUid,$peopleDn" } ); 638 } 639 } 640 } 641 print RES "</table>\n"; 642 close F_MEN; 643 } 644 645 unlink </tmp/*.temp>; 646 $lcs_ldap->unbind; 647 &pdp(RES); 648 close RES; 649 650 system ("/usr/bin/lynx --dump $documentRoot/$webDir/result.$$.html | mail $melsavadmin -s 'Importation Texte'"); 651 652 }
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 |