forked from ScoDoc/DocScoDoc
762 lines
22 KiB
PHP
762 lines
22 KiB
PHP
|
<?php
|
|||
|
|
|||
|
// Code contribu<62> par Yann Leboulanger (Universit<69> Paris 10), Juin 2013
|
|||
|
// Modifi<66> par D.SOUDIERE avec le concours de Catherine Hatinguais
|
|||
|
|
|||
|
// Publication des notes vers les <20>tudiants
|
|||
|
// Gestion des absences: affichage et gestion des billets d'absences.
|
|||
|
// Les <20>tudiants signales les absences <20> venir ou pass<73>es et justifient en ligne puis physiquement.
|
|||
|
|
|||
|
// L'<27>tudiant est authenfi<66> via le CAS
|
|||
|
// Le bulletin, les absences est r<>cup<75>r<EFBFBD> en format XML en interrogeant ScoDoc
|
|||
|
// Les billets sont envoy<6F>s <20> Scodoc et sont g<>r<EFBFBD>s par le secr<63>tariat ou autre et valid<69>.
|
|||
|
// Il faut cocher la case "publier le bulletin sur le portail <20>tudiants" dans le semestre
|
|||
|
// ainsi que Gestion de "billets" d'absence dans les param<61>tres
|
|||
|
// Pour qu'une <20>valuation soit visible il faut r<>gler celle ci avec la case "Visible sur bulletins"
|
|||
|
// et "Prise en compte imm<6D>diate" ou bien que toutes cases soient remplies.
|
|||
|
// Il faut cr<63>er un utilisateur ScoDoc n'ayant que des droits de lecture.
|
|||
|
//
|
|||
|
// A adapter <20> vos besoins locaux.
|
|||
|
// penser <20> mettre les fichiers css et js et les icons utilis<69>s
|
|||
|
|
|||
|
// L authentification CAS et donc LDAP est fait par apache
|
|||
|
// cf /etc/apache2/site-enable/newdi
|
|||
|
|
|||
|
// il faut le paquet : php5-ldap
|
|||
|
|
|||
|
|
|||
|
function convertir_utf8($texte){
|
|||
|
$retour=htmlentities($texte,ENT_NOQUOTES,'UTF-8');
|
|||
|
return ($retour);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// D<>finition de la fonction d'encodage des headers
|
|||
|
function http_build_headers( $headers ) {
|
|||
|
|
|||
|
$headers_brut = '';
|
|||
|
|
|||
|
foreach( $headers as $nom => $valeur ) {
|
|||
|
$headers_brut .= $nom . ': ' . $valeur . "\r\n";
|
|||
|
}
|
|||
|
|
|||
|
return $headers_brut;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function get_EtudAbs_page($nip, $dept,$beg_date)
|
|||
|
{
|
|||
|
global $user_agent;
|
|||
|
global $sco_user;
|
|||
|
global $sco_pw;
|
|||
|
global $sco_url;
|
|||
|
$end_date=date("Y-m-d");
|
|||
|
$donnees = array(
|
|||
|
'format' => 'xml',
|
|||
|
'code_nip' => $nip,
|
|||
|
'__ac_name' => $sco_user,
|
|||
|
'__ac_password' => $sco_pw,
|
|||
|
'beg_date' => $beg_date,
|
|||
|
'end_date' => $end_date);
|
|||
|
|
|||
|
// Cr<43>ation du contenu brut de la requ<71>te
|
|||
|
$contenu = http_build_query( $donnees );
|
|||
|
|
|||
|
// D<>finition des headers
|
|||
|
$headers = http_build_headers( array(
|
|||
|
'Content-Type' => 'application/x-www-form-urlencoded',
|
|||
|
'Content-Length' => strlen( $contenu) ) );
|
|||
|
|
|||
|
// D<>finition du contexte
|
|||
|
$options = array( 'http' => array( 'user_agent' => $user_agent,
|
|||
|
'method' => 'POST',
|
|||
|
'content' => $contenu,
|
|||
|
'header' => $headers ) );
|
|||
|
|
|||
|
// Cr<43>ation du contexte
|
|||
|
$contexte = stream_context_create($options);
|
|||
|
|
|||
|
// Envoi du formulaire POST
|
|||
|
$retour = file_get_contents( $sco_url . $dept . '/Scolarite/Absences/XMLgetAbsEtud', false, $contexte );
|
|||
|
|
|||
|
return ($retour);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function get_BilletAbs_list($nip, $dept)
|
|||
|
{
|
|||
|
global $user_agent;
|
|||
|
global $sco_user;
|
|||
|
global $sco_pw;
|
|||
|
global $sco_url;
|
|||
|
$donnees = array(
|
|||
|
'format' => 'xml',
|
|||
|
'code_nip' => $nip,
|
|||
|
'__ac_name' => $sco_user,
|
|||
|
'__ac_password' => $sco_pw,
|
|||
|
);
|
|||
|
|
|||
|
// Cr<43>ation du contenu brut de la requ<71>te
|
|||
|
$contenu = http_build_query( $donnees );
|
|||
|
|
|||
|
// D<>finition des headers
|
|||
|
$headers = http_build_headers( array(
|
|||
|
'Content-Type' => 'application/x-www-form-urlencoded',
|
|||
|
'Content-Length' => strlen( $contenu) ) );
|
|||
|
|
|||
|
// D<>finition du contexte
|
|||
|
$options = array( 'http' => array( 'user_agent' => $user_agent,
|
|||
|
'method' => 'POST',
|
|||
|
'content' => $contenu,
|
|||
|
'header' => $headers ) );
|
|||
|
|
|||
|
// Cr<43>ation du contexte
|
|||
|
$contexte = stream_context_create($options);
|
|||
|
|
|||
|
// Envoi du formulaire POST
|
|||
|
$retour = file_get_contents( $sco_url . $dept . '/Scolarite/Absences/XMLgetBilletsEtud', false, $contexte );
|
|||
|
|
|||
|
return ($retour);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function Get_EtudAbs_billet($nip, $dept,$begin,$end,$description)
|
|||
|
{
|
|||
|
global $user_agent;
|
|||
|
global $sco_user;
|
|||
|
global $sco_pw;
|
|||
|
global $sco_url;
|
|||
|
$end_date=date("Y-m-d");
|
|||
|
$justified="0";
|
|||
|
$donnees = array(
|
|||
|
'format' => 'xml',
|
|||
|
'code_nip' => $nip,
|
|||
|
'__ac_name' => $sco_user,
|
|||
|
'__ac_password' => $sco_pw,
|
|||
|
'description' =>$description,
|
|||
|
'justified' =>$justified,
|
|||
|
'begin' => $begin,
|
|||
|
'end' => $end);
|
|||
|
// Cr<43>ation du contenu brut de la requ<71>te
|
|||
|
$contenu = http_build_query( $donnees );
|
|||
|
|
|||
|
// D<>finition des headers
|
|||
|
$headers = http_build_headers( array(
|
|||
|
'Content-Type' => 'application/x-www-form-urlencoded',
|
|||
|
'Content-Length' => strlen( $contenu) ) );
|
|||
|
|
|||
|
// D<>finition du contexte
|
|||
|
$options = array( 'http' => array( 'user_agent' => $user_agent,
|
|||
|
'method' => 'POST',
|
|||
|
'content' => $contenu,
|
|||
|
'header' => $headers ) );
|
|||
|
|
|||
|
// Cr<43>ation du contexte
|
|||
|
$contexte = stream_context_create($options);
|
|||
|
|
|||
|
// Envoi du formulaire POST
|
|||
|
$retour = file_get_contents( $sco_url . $dept . '/Scolarite/Absences/AddBilletAbsence', false, $contexte );
|
|||
|
|
|||
|
return ($retour);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function get_EtudInfos_page($nip, $dept)
|
|||
|
{
|
|||
|
global $user_agent;
|
|||
|
global $sco_user;
|
|||
|
global $sco_pw;
|
|||
|
global $sco_url;
|
|||
|
|
|||
|
$donnees = array(
|
|||
|
'code_nip' => $nip,
|
|||
|
'__ac_name' => $sco_user,
|
|||
|
'__ac_password' => $sco_pw );
|
|||
|
|
|||
|
// Cr<43>ation du contenu brut de la requ<71>te
|
|||
|
$contenu = http_build_query( $donnees );
|
|||
|
|
|||
|
// D<>finition des headers
|
|||
|
$headers = http_build_headers( array(
|
|||
|
'Content-Type' => 'application/x-www-form-urlencoded',
|
|||
|
'Content-Length' => strlen( $contenu) ) );
|
|||
|
|
|||
|
// D<>finition du contexte
|
|||
|
$options = array( 'http' => array( 'user_agent' => $user_agent,
|
|||
|
'method' => 'POST',
|
|||
|
'content' => $contenu,
|
|||
|
'header' => $headers ) );
|
|||
|
|
|||
|
// Cr<43>ation du contexte
|
|||
|
$contexte = stream_context_create($options);
|
|||
|
|
|||
|
// Envoi du formulaire POST
|
|||
|
$retour = file_get_contents( $sco_url . $dept . '/Scolarite/Notes/XMLgetEtudInfos', false, $contexte );
|
|||
|
|
|||
|
return ($retour);
|
|||
|
}
|
|||
|
|
|||
|
function get_bulletinetud_page($nip, $sem, $dept) {
|
|||
|
global $user_agent;
|
|||
|
global $sco_user;
|
|||
|
global $sco_pw;
|
|||
|
global $sco_url;
|
|||
|
$donnees = array(
|
|||
|
'format' => 'xml',
|
|||
|
'code_nip' => $nip,
|
|||
|
'formsemestre_id' => $sem,
|
|||
|
'version' => 'selectedevals',
|
|||
|
'__ac_name' => $sco_user,
|
|||
|
'__ac_password' => $sco_pw );
|
|||
|
|
|||
|
// Cr<43>ation du contenu brut de la requ<71>te
|
|||
|
$contenu = http_build_query( $donnees );
|
|||
|
|
|||
|
// D<>finition des headers
|
|||
|
$headers = http_build_headers( array(
|
|||
|
'Content-Type' => 'application/x-www-form-urlencoded',
|
|||
|
'Content-Length' => strlen( $contenu) ) );
|
|||
|
|
|||
|
// D<>finition du contexte
|
|||
|
$options = array( 'http' => array( 'user_agent' => $user_agent,
|
|||
|
'method' => 'POST',
|
|||
|
'content' => $contenu,
|
|||
|
'header' => $headers ) );
|
|||
|
|
|||
|
// Cr<43>ation du contexte
|
|||
|
$contexte = stream_context_create($options);
|
|||
|
|
|||
|
// Envoi du formulaire POST
|
|||
|
$retour = file_get_contents( $sco_url . $dept . '/Scolarite/Notes/formsemestre_bulletinetud', false, $contexte );
|
|||
|
|
|||
|
return ($retour);
|
|||
|
}
|
|||
|
|
|||
|
function get_semestre_info($sem, $dept)
|
|||
|
{
|
|||
|
global $user_agent;
|
|||
|
global $sco_user;
|
|||
|
global $sco_pw;
|
|||
|
global $sco_url;
|
|||
|
$donnees = array(
|
|||
|
'formsemestre_id' => $sem,
|
|||
|
'__ac_name' => $sco_user,
|
|||
|
'__ac_password' => $sco_pw );
|
|||
|
|
|||
|
// Cr<43>ation du contenu brut de la requ<71>te
|
|||
|
$contenu = http_build_query( $donnees );
|
|||
|
|
|||
|
// D<>finition des headers
|
|||
|
$headers = http_build_headers( array(
|
|||
|
'Content-Type' => 'application/x-www-form-urlencoded',
|
|||
|
'Content-Length' => strlen( $contenu) ) );
|
|||
|
|
|||
|
// D<>finition du contexte
|
|||
|
$options = array( 'http' => array( 'user_agent' => $user_agent,
|
|||
|
'method' => 'POST',
|
|||
|
'content' => $contenu,
|
|||
|
'header' => $headers ) );
|
|||
|
|
|||
|
// Cr<43>ation du contexte
|
|||
|
$contexte = stream_context_create($options);
|
|||
|
|
|||
|
// Envoi du formulaire POST
|
|||
|
$retour = file_get_contents( $sco_url . $dept . '/Scolarite/Notes/XMLgetFormsemestres', false, $contexte );
|
|||
|
|
|||
|
return ($retour);
|
|||
|
}
|
|||
|
|
|||
|
function get_all_semestres($xml_data)
|
|||
|
{
|
|||
|
$data = array();
|
|||
|
$xml = simplexml_load_string($xml_data);
|
|||
|
foreach ($xml->insemestre as $s) {
|
|||
|
$sem = (array) $s['formsemestre_id'];
|
|||
|
$data[] = $sem[0];
|
|||
|
}
|
|||
|
return $data;
|
|||
|
}
|
|||
|
|
|||
|
function get_current_semestre($xml_data)
|
|||
|
{
|
|||
|
$xml = simplexml_load_string($xml_data);
|
|||
|
foreach ($xml->insemestre as $s) {
|
|||
|
if ($s['current'] == 1)
|
|||
|
$sem = (array) $s['formsemestre_id'];
|
|||
|
return ($sem[0]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function print_semestres_list($sems, $dept, $sem)
|
|||
|
{
|
|||
|
echo 'Semestre : <select name="sem">';
|
|||
|
for ($i=0; $i < count($sems); $i++) {
|
|||
|
$s = $sems[$i];
|
|||
|
$retour = get_semestre_info($s, $dept);
|
|||
|
$xml = simplexml_load_string($retour);
|
|||
|
echo '<option value="' . $s . '"';
|
|||
|
if ($s == $sem) {
|
|||
|
echo ' selected';
|
|||
|
}
|
|||
|
echo '>' . convertir_utf8($xml->formsemestre['titre_num']) . '</option>
|
|||
|
';
|
|||
|
}
|
|||
|
echo '</select>
|
|||
|
<input type="submit" value="Valider">
|
|||
|
</form>';
|
|||
|
}
|
|||
|
|
|||
|
function print_semestre($xml_data, $sem, $dept, $show_moy=False)
|
|||
|
{
|
|||
|
global $etudid;
|
|||
|
global $nip;
|
|||
|
global $sco_user;
|
|||
|
global $sco_pw;
|
|||
|
global $sco_url;
|
|||
|
$xml = simplexml_load_string($xml_data);
|
|||
|
$etudid= $xml->etudiant['etudid'];
|
|||
|
|
|||
|
if (!$show_moy) {
|
|||
|
echo '<p><span style="color: red;">Les informations contenues dans ce tableau sont
|
|||
|
provisoires. L'état n'a pas valeur de bulletin de notes.</span>';}
|
|||
|
|
|||
|
echo '<span style="color: red;"><br>Il vous appartient de contacter vos enseignants
|
|||
|
ou votre d<EFBFBD>partement en cas de d<EFBFBD>saccord.</span></p>';
|
|||
|
|
|||
|
echo '<h3>' . $xml->etudiant['sexe'] . ' ' . $xml->etudiant['prenom'] . ' ' . $xml->etudiant['nom'] . '</h3>';
|
|||
|
//echo '<br/>';
|
|||
|
$retour = get_semestre_info($sem, $dept);
|
|||
|
$xml2 = simplexml_load_string($retour);
|
|||
|
$debut=date("Y-m-d",strtotime($xml2->formsemestre['dateord']));
|
|||
|
|
|||
|
echo '<b>'.convertir_utf8($xml2->formsemestre['titre_num']).'</b><br>';
|
|||
|
if (!$show_moy) { echo "vous avez <20> ce jour ".convertir_utf8($xml->absences['nbabs'])." demi-journ<72>es d'absences dont ".convertir_utf8($xml->absences['nbabsjust']).' justifi<66>es';}
|
|||
|
echo '
|
|||
|
<br/>
|
|||
|
<br/>
|
|||
|
';
|
|||
|
echo '<table class="notes_bulletin" style="background-color: background-color: rgb(255,255,240);">
|
|||
|
<tr>
|
|||
|
<td class="note_bold">UE</td>
|
|||
|
<td class="note_bold">Code Module</td>
|
|||
|
<td class="note_bold">Module</td>
|
|||
|
<td class="note_bold">Evaluation</td>
|
|||
|
<td class="note_bold">Note/20</td>
|
|||
|
<td class="note_bold">(Min/Max)</td>
|
|||
|
<td class="note_bold">Coef</td>
|
|||
|
</tr>
|
|||
|
';
|
|||
|
if ($show_moy) {
|
|||
|
echo '<tr class="gt_hl notes_bulletin_row_gen" ><td class="titre" colspan="4" >Moyenne g<>n<EFBFBD>rale:</td><td class="note">' . $xml->note['value'] . '</td><td class="max">('.$xml->note['min'].'/'.$xml->note['max'].')</td><td class="coef"></td></tr>';
|
|||
|
}
|
|||
|
foreach ($xml->ue as $ue) {
|
|||
|
$coef = 0;
|
|||
|
foreach ($ue->module as $mod) {
|
|||
|
$coef += $mod['coefficient'];
|
|||
|
}
|
|||
|
echo '<tr class="notes_bulletin_row_ue">
|
|||
|
<td class="note_bold"><span onclick="toggle_vis_ue(this);" class="toggle_ue"><img src="imgs/minus_img.png" alt="-" title="" height="13" width="13" border="0" /></span>' . $ue['acronyme'] . '</td>
|
|||
|
<td></td>
|
|||
|
<td></td>
|
|||
|
<td></td>
|
|||
|
';
|
|||
|
|
|||
|
if ($show_moy) {
|
|||
|
echo ' <td>' . $ue->note['value'] . '</td><td class="max">('.$ue->note['min'].'/'.$ue->note['max'].')</td>
|
|||
|
';
|
|||
|
}
|
|||
|
else {
|
|||
|
echo ' <td></td>
|
|||
|
<td></td>
|
|||
|
';
|
|||
|
}
|
|||
|
|
|||
|
echo ' <td>' . $coef . '</td>
|
|||
|
</tr>';
|
|||
|
foreach ($ue->module as $mod) {
|
|||
|
echo '<tr class="notes_bulletin_row_mod">
|
|||
|
<td></td>
|
|||
|
<td>' . $mod['code'] . '</td>
|
|||
|
<td>' . convertir_utf8($mod['titre']) . '</td>
|
|||
|
<td></td>
|
|||
|
';
|
|||
|
|
|||
|
if ($show_moy) {
|
|||
|
echo ' <td>' . $mod->note['value'] . '</td><td class="max">('.$mod->note['min'].'/'.$mod->note['max'].')</td>
|
|||
|
';
|
|||
|
}
|
|||
|
else {
|
|||
|
echo ' <td></td><td></td>
|
|||
|
';
|
|||
|
}
|
|||
|
|
|||
|
echo ' <td>' . $mod['coefficient'] . '</td>
|
|||
|
</tr>';
|
|||
|
|
|||
|
if (!$show_moy) {
|
|||
|
foreach ($mod->evaluation as $eval) {
|
|||
|
echo '<tr class="notes_bulletin_row_eval">
|
|||
|
<td></td>
|
|||
|
<td></td>
|
|||
|
<td></td>
|
|||
|
<td class="bull_nom_eval">' . convertir_utf8($eval['description']) . '</td>
|
|||
|
<td class="note">' . $eval->note['value'] . '</td><td class="max">('.$eval->note['min'].'/'.$eval->note['max'].')</td>
|
|||
|
<td class="max">(' . $eval['coefficient'] . ')</td>
|
|||
|
</tr>';
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
echo '</table>
|
|||
|
<br/>
|
|||
|
';
|
|||
|
$code=$xml->decision['code'];
|
|||
|
|
|||
|
$date_fin=$xml->decision['date_fin'];
|
|||
|
echo $date_fin;
|
|||
|
|
|||
|
if ($show_moy) {
|
|||
|
echo "Situation sous r<>serve de validation par le jury : <br>".convertir_utf8($xml->situation);
|
|||
|
}
|
|||
|
else{if($code!=""){echo "Situation sous r<>serve de validation par le jury : <br>". convertir_utf8($xml->situation);}}
|
|||
|
|
|||
|
|
|||
|
if (!$show_moy) {
|
|||
|
echo '
|
|||
|
<a href="#" id="toggler">
|
|||
|
<h3>Cliquez ici pour afficher/masquer la liste des absences du semestre: </h3></a>';
|
|||
|
|
|||
|
$retourabs = get_EtudAbs_page($nip, $dept,$debut);
|
|||
|
$xmlabs = simplexml_load_string($retourabs);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
echo '
|
|||
|
<div id="toggle" style="display:none;">
|
|||
|
<table class="notes_bulletin" style="background-color: background-color: rgb(255,255,240);">
|
|||
|
|
|||
|
<tr>
|
|||
|
<td class="note_bold">Du </td>
|
|||
|
<td class="note_bold">Au </td>
|
|||
|
<td class="note_bold">Justifi<EFBFBD>e</td>
|
|||
|
<td class="note_bold">Motif</td>
|
|||
|
</tr>';
|
|||
|
|
|||
|
foreach ($xmlabs->abs as $abs) {
|
|||
|
if($abs['justified']=="True"){$just="Oui";}else{$just="Non";}
|
|||
|
if(intval(date("H", strtotime($abs['begin'])))<12){$debmatin="matin";}else{$debmatin="aprés midi";}
|
|||
|
if(intval(date("H", strtotime($abs['end'])))<12){$endmatin="matin";}else{$endmatin="aprés midi";}
|
|||
|
echo "<tr><td>". date("d-m-Y H:i:s", strtotime($abs['begin'])) . ' '.$debmatin.'</td><td> ' . date("d-m-Y H:i:s", strtotime($abs['end'])) .' '.$endmatin. '</td><td> ' . $just. '</td><td> ' . convertir_utf8($abs['description']) ."</td></tr>";
|
|||
|
}
|
|||
|
echo '</table>
|
|||
|
</div>';
|
|||
|
|
|||
|
echo '
|
|||
|
<FORM method=post action=index.php>';
|
|||
|
|
|||
|
echo '
|
|||
|
<h3> D<EFBFBD>claration des motifs d'absences:</h3>';
|
|||
|
|
|||
|
echo '
|
|||
|
<TABLE BORDER=0>
|
|||
|
|
|||
|
<TR>
|
|||
|
<TD>Date et heure de d<EFBFBD>but:</TD><TD>
|
|||
|
<INPUT type="text" name="begin" size="10" value="" class="datepicker"/>
|
|||
|
</TD><TD>
|
|||
|
<SELECT name="begtime" size="1" value="08:00">
|
|||
|
<OPTION>08:00
|
|||
|
<OPTION>08:30
|
|||
|
<OPTION selected>08:00
|
|||
|
<OPTION>09:00
|
|||
|
<OPTION>09:30
|
|||
|
<OPTION>10:00
|
|||
|
<OPTION>10:30
|
|||
|
<OPTION>11:00
|
|||
|
<OPTION>11:30
|
|||
|
<OPTION>12:00
|
|||
|
<OPTION>12:30
|
|||
|
<OPTION>13:00
|
|||
|
<OPTION>13:30
|
|||
|
<OPTION>14:00
|
|||
|
<OPTION>14:30
|
|||
|
<OPTION>15:00
|
|||
|
<OPTION>15:30
|
|||
|
<OPTION>16:00
|
|||
|
<OPTION>16:30
|
|||
|
<OPTION>17:00
|
|||
|
<OPTION>17:30
|
|||
|
<OPTION>18:00
|
|||
|
<OPTION>18:30
|
|||
|
<OPTION>19:00
|
|||
|
<OPTION>19:30
|
|||
|
</SELECT>
|
|||
|
</TD></TR>
|
|||
|
<TR>
|
|||
|
<TD>Date et heure de fin:</TD><TD>
|
|||
|
<INPUT type="text" name="end" size="10" value="" class="datepicker"/>
|
|||
|
</TD>
|
|||
|
<TD>
|
|||
|
<SELECT name="endtime" size="1" value="18:00">
|
|||
|
<OPTION>08:00
|
|||
|
<OPTION>08:30
|
|||
|
<OPTION selected>18:00
|
|||
|
<OPTION>09:00
|
|||
|
<OPTION>09:30
|
|||
|
<OPTION>10:00
|
|||
|
<OPTION>10:30
|
|||
|
<OPTION>11:00
|
|||
|
<OPTION>11:30
|
|||
|
<OPTION>12:00
|
|||
|
<OPTION>12:30
|
|||
|
<OPTION>13:00
|
|||
|
<OPTION>13:30
|
|||
|
<OPTION>14:00
|
|||
|
<OPTION>14:30
|
|||
|
<OPTION>15:00
|
|||
|
<OPTION>15:30
|
|||
|
<OPTION>16:00
|
|||
|
<OPTION>16:30
|
|||
|
<OPTION>17:00
|
|||
|
<OPTION>17:30
|
|||
|
<OPTION>18:00
|
|||
|
<OPTION>18:30
|
|||
|
<OPTION>19:00
|
|||
|
<OPTION>19:30
|
|||
|
</SELECT>
|
|||
|
</TD>
|
|||
|
</TR>
|
|||
|
|
|||
|
</TABLE>
|
|||
|
|
|||
|
Motif:
|
|||
|
|
|||
|
<TABLE><br><TR>
|
|||
|
<TEXTAREA rows="3" type="text" name="description" cols="60"/></TEXTAREA>
|
|||
|
|
|||
|
</TR><br>
|
|||
|
<span style="color: red;">Veuillez indiquer les mati<EFBFBD>res et enseignants concern<EFBFBD>s (pour les absences de courte dur<EFBFBD>e).<br> Apportez par ailleurs le numéro du billet affich<EFBFBD> dans le tableau ci apr<EFBFBD>s ainsi que vos justificatifs <EFBFBD>ventuels au secr<EFBFBD>tariat du d<EFBFBD>partement.</span>
|
|||
|
<TR>
|
|||
|
<TD COLSPAN=1>
|
|||
|
<INPUT type="submit" value="Envoyer">
|
|||
|
</TD>
|
|||
|
</TR>
|
|||
|
</TABLE>';
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (isset($_POST["begin"]) and isset($_POST["end"]) and isset($_POST["begtime"]) and isset($_POST["endtime"]) and isset($_POST["description"]) and $_POST["end"]>=$_POST["begin"]){
|
|||
|
$date1 = new DateTime($_POST["begin"]);
|
|||
|
$date1->setTime(intval(substr($_POST["begtime"],0,2)), intval(substr($_POST["begtime"],-2)));
|
|||
|
|
|||
|
$date2 = new DateTime($_POST["end"]);
|
|||
|
$date2->setTime(intval(substr($_POST["endtime"],0,2)), intval(substr($_POST["endtime"],-2)));
|
|||
|
Get_EtudAbs_billet($nip, $dept,$date1->format('Y-m-d H:i:s') , $date2->format('Y-m-d H:i:s') , $_POST["description"]);}
|
|||
|
|
|||
|
echo '
|
|||
|
<h3> Billets d'absences déposés: </h3>';
|
|||
|
$retourbillets = get_BilletAbs_list($nip, $dept);
|
|||
|
$xmlbillets = simplexml_load_string($retourbillets);
|
|||
|
|
|||
|
echo '<table class="notes_bulletin" style="background-color: background-color: rgb(255,255,240);">
|
|||
|
<tr>
|
|||
|
<td class="note_bold">Billet </td>
|
|||
|
<td class="note_bold">Du </td>
|
|||
|
<td class="note_bold">Au </td>
|
|||
|
<td class="note_bold">Motif</td>
|
|||
|
<td class="note_bold">Situation</td>
|
|||
|
</tr>';
|
|||
|
|
|||
|
foreach ($xmlbillets->row as $billet) {
|
|||
|
echo "<tr><td>". $billet->billet_id['value'] . '</td><td>'. convertir_utf8($billet->abs_begin_str['value']). '</td><td> ' . convertir_utf8($billet->abs_end_str['value']) . '</td><td> ' . convertir_utf8($billet->description['value']) .'</td><td> ' . convertir_utf8($billet->etat_str['value']) ."</td></tr>
|
|||
|
";
|
|||
|
}
|
|||
|
|
|||
|
echo ' </table>
|
|||
|
</FORM>';
|
|||
|
|
|||
|
|
|||
|
}}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function get_dept($nip)
|
|||
|
{
|
|||
|
global $sco_url;
|
|||
|
$dept = file_get_contents( $sco_url . 'get_etud_dept?code_nip=' . $nip);
|
|||
|
return ($dept);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// function pour la recuperation des infos ldap
|
|||
|
function search_results($info) {
|
|||
|
foreach ($info as $inf) {
|
|||
|
if (is_array($inf)) {
|
|||
|
foreach ($inf as $key => $in) {
|
|||
|
if ((count($inf[$key]) - 1) > 0) {
|
|||
|
if (is_array($in)) {
|
|||
|
unset($inf[$key]["count"]);
|
|||
|
}
|
|||
|
$results[$key] = $inf[$key];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
$results["dn"] = explode(',', $info[0]["dn"]);
|
|||
|
return $results;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// Programme principal
|
|||
|
|
|||
|
|
|||
|
echo '<html xmlns="http://www.w3.org/1999/xhtml">
|
|||
|
<head>
|
|||
|
<title>Bulletin de notes</title>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|||
|
<meta http-equiv="Content-Style-Type" content="text/css" />
|
|||
|
<link href="css/scodoc.css" rel="stylesheet" type="text/css" />
|
|||
|
<link type="text/css" rel="stylesheet" href="libjs/jquery-ui/css/custom-theme/jquery-ui-1.7.2.custom.css" />
|
|||
|
<script language="javascript" type="text/javascript" src="js/bulletin.js"></script>
|
|||
|
<script language="javascript" type="text/javascript" src="jQuery/jquery.js"></script>
|
|||
|
<script language="javascript" type="text/javascript" src="jQuery/jquery-migrate-1.2.0.min.js"></script>
|
|||
|
<script language="javascript" type="text/javascript" src="libjs/jquery-ui/js/jquery-ui-1.7.2.custom.min.js"></script>
|
|||
|
<script language="javascript" type="text/javascript" src="libjs/jquery-ui/js/jquery-ui-i18n.js"></script>
|
|||
|
<script language="javascript" type="text/javascript">
|
|||
|
$(function() {
|
|||
|
$(".datepicker").datepicker({
|
|||
|
showOn: "button",
|
|||
|
buttonImage: "icons/calendar_img.png",
|
|||
|
buttonImageOnly: true,
|
|||
|
dateFormat: "yy-mm-dd",
|
|||
|
duration : "fast",
|
|||
|
});
|
|||
|
$(".datepicker").datepicker("option", $.extend({showMonthAfterYear: false},
|
|||
|
$.datepicker.regional["fr"]));
|
|||
|
});
|
|||
|
</script>';
|
|||
|
|
|||
|
echo "<script type='text/javascript'>
|
|||
|
/* <![CDATA[ */
|
|||
|
/*
|
|||
|
|-----------------------------------------------------------------------
|
|||
|
| jQuery Toggle Script by Matt - skyminds.net
|
|||
|
|-----------------------------------------------------------------------
|
|||
|
|
|
|||
|
| Affiche/cache le contenu d'un bloc une fois qu'un lien est cliqu<EFBFBD>.
|
|||
|
|
|
|||
|
*/
|
|||
|
|
|||
|
// On attend que la page soit charg<72>e
|
|||
|
jQuery(document).ready(function()
|
|||
|
{
|
|||
|
// On cache la zone de texte
|
|||
|
jQuery('#toggle').hide();
|
|||
|
// toggle() lorsque le lien avec l'ID #toggler est cliqu<71>
|
|||
|
jQuery('a#toggler').click(function()
|
|||
|
{
|
|||
|
jQuery('#toggle').toggle(400);
|
|||
|
return false;
|
|||
|
});
|
|||
|
});
|
|||
|
/* ]]> */
|
|||
|
</script>
|
|||
|
<style>
|
|||
|
#toggle{height:auto; background:#eee; border:1px solid #900; margin:1em;text-align:center}
|
|||
|
#toggle p{text-align:center;padding:0}
|
|||
|
</style>
|
|||
|
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
";
|
|||
|
|
|||
|
|
|||
|
$user = $_SERVER['PHP_AUTH_USER'];
|
|||
|
//echo 'USER: '.$user."\n"."<br>";
|
|||
|
|
|||
|
//$user = "ei121713";
|
|||
|
//echo "On triche USER = ".$user."\n"."<br>";
|
|||
|
|
|||
|
$ds = ldap_connect("ldap://ldap");
|
|||
|
if ($ds) {
|
|||
|
$r = ldap_bind($ds);
|
|||
|
$sr = ldap_search($ds, "ou=people,dc=univ-lehavre,dc=fr", "(&(objectClass=ulhEtudiant)(uid=$user))");
|
|||
|
$info = ldap_get_entries($ds, $sr);
|
|||
|
|
|||
|
//echo $info["count"]." IS Search Result(s) for \"".$user."\"\n";
|
|||
|
$results = search_results($info);
|
|||
|
// si pas de reponse de l a nnuaire, ce n est pas un etudiant
|
|||
|
if ($info["count"] == 0 ) {
|
|||
|
echo '<html>
|
|||
|
<head>
|
|||
|
<title>getEtud</title>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<h1>Service de consultation des notes</h1>
|
|||
|
<div>
|
|||
|
Il faut être etudiant de l'IUT pour accéder à ses notes.
|
|||
|
</div>
|
|||
|
</body>
|
|||
|
</html>';
|
|||
|
} else {
|
|||
|
foreach ($results as $key => $result) {
|
|||
|
if ($key == 'supannetuid' ) {
|
|||
|
//echo " * ".$key." : \n";
|
|||
|
if (is_array($result)){
|
|||
|
foreach($result as $res){
|
|||
|
//echo " ".$res."\n";
|
|||
|
}
|
|||
|
}
|
|||
|
//echo "<br>";
|
|||
|
$nip=$res;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
ldap_close($ds);
|
|||
|
}
|
|||
|
// Login information of a scodoc user that can access notes
|
|||
|
$sco_user = 'lecturenotes';
|
|||
|
$sco_pw = 'XXXXXXX';
|
|||
|
$sco_url = 'https://scodoc.XXXXX.fr/ScoDoc/';
|
|||
|
|
|||
|
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0';
|
|||
|
|
|||
|
echo '<form action="index.php" method="post">';
|
|||
|
if ($nip) {
|
|||
|
$dept = get_dept($nip);
|
|||
|
if ($dept) {
|
|||
|
$retour = get_EtudInfos_page($nip, $dept);
|
|||
|
$sems = get_all_semestres($retour);
|
|||
|
$sem_current = get_current_semestre($retour);
|
|||
|
if (isset($_POST["sem"])) {
|
|||
|
$sem = $_POST["sem"];
|
|||
|
}
|
|||
|
else {
|
|||
|
$sem = $sem_current;
|
|||
|
}
|
|||
|
print_semestres_list($sems, $dept, $sem);
|
|||
|
$retour = get_bulletinetud_page($nip, $sem, $dept);
|
|||
|
if ($sem == $sem_current) {
|
|||
|
print_semestre($retour, $sem, $dept, False);
|
|||
|
}
|
|||
|
else {
|
|||
|
print_semestre($retour, $sem, $dept, True);
|
|||
|
}
|
|||
|
$erreur=0; // Tout est OK
|
|||
|
}
|
|||
|
else {
|
|||
|
echo "Num<EFBFBD>ro <20>tudiant inconnu : " . $nip . ". Contactez votre Chef de d<>partement.";
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
echo '</form>';
|
|||
|
|
|||
|
|
|||
|
echo '
|
|||
|
</body>
|
|||
|
</html>';
|
|||
|
|
|||
|
|
|||
|
?>
|