echo'<tr id="id_'.$eleve_id.'">';
			echo'<td class="nu"><input type="checkbox" name="f_ids" value="'.$eleve_id.'"'.$checked.' /></td>';
			echo'<td class="label">'.$tab_eleve_td[$eleve_id].'</td>';
			echo'<td class="label">'.$archive_td.'</td>';
			echo'</tr>';
		}
		elseif($objet=='voir_archive')
		{
			if(!isset($DB_TAB[$eleve_id]))
			{
				$archive_td = 'Non, pas encore imprimé' ;
			}
			elseif(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $eleve_id , $BILAN_TYPE , $periode_id )))
			{
				$_SESSION['tmp_droit_voir_archive'][$eleve_id.$BILAN_TYPE] = TRUE; // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et à donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite
				$archive_td = '<a href="releve_pdf.php?fichier='.$eleve_id.'_'.$BILAN_TYPE.'_'.$periode_id.'" class="lien_ext">Oui, le '.convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date']).'</a>' ;
			}
			else
			{
				$archive_td = 'Oui, mais archive non présente sur ce serveur' ;
			}
			echo'<tr>';
			echo'<td>'.$tab_eleve_td[$eleve_id].'</td>';
			echo'<td>'.$archive_td.'</td>';
			echo'</tr>';
		}
	}
	exit();
}

//	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-
示例#2
0
        $td_date_generation = 'Non, pas encore imprimé' ;
        $td_date_consult_eleve = $td_date_consult_parent = 'Sans objet' ;
      }
      else
      {
        if(is_file(CHEMIN_DOSSIER_OFFICIEL.$_SESSION['BASE'].DS.fabriquer_nom_fichier_bilan_officiel( $eleve_id , $BILAN_TYPE , $periode_id )))
        {
          $_SESSION['tmp_droit_voir_archive'][$eleve_id.$BILAN_TYPE] = TRUE; // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et a donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite
          $td_date_generation = '<a href="releve_pdf.php?fichier='.$eleve_id.'_'.$BILAN_TYPE.'_'.$periode_id.'" target="_blank">Oui, le '.convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date_generation']).'</a>' ;
        }
        else
        {
          $td_date_generation = 'Oui, mais archive non présente sur ce serveur' ;
        }
        $td_date_consult_eleve  = in_array( 'ELV' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? ( ($DB_TAB[$eleve_id][0]['fichier_date_consultation_eleve'])  ? convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date_consultation_eleve'])  : '-' ) : 'Non autorisé' ;
        $td_date_consult_parent = in_array( 'TUT' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? ( ($DB_TAB[$eleve_id][0]['fichier_date_consultation_parent']) ? convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date_consultation_parent']) : '-' ) : 'Non autorisé' ;
      }
      echo'<tr>';
      echo'<td>'.$tab_eleve_td[$eleve_id].'</td>';
      echo'<td class="hc">'.$td_date_generation.'</td>';
      echo'<td class="hc">'.$td_date_consult_eleve.'</td>';
      echo'<td class="hc">'.$td_date_consult_parent.'</td>';
      echo'</tr>';
    }
  }
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPRIMER ETAPE 2/4 - Le PDF complet est généré ; on archive individuellement les bilans anonymes (qui vont y rester une année scolaire)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
        $tab_graphique[$groupe_id] .= '<div class="graph_erreur" style="margin-left:' . $margin_left_erreur . '%;width:' . $width_erreur . '%"></div>';
    } elseif ($memo_position > $margin_left + 0.02) {
        // Deux périodes se chevauchent
        $margin_left_erreur = $margin_left;
        $width_erreur = $memo_position - $margin_left;
        $tab_graphique[$groupe_id] .= '<div class="graph_erreur" style="margin-left:' . $margin_left_erreur . '%;width:' . $width_erreur . '%"></div>';
    }
    $tab_graphique[$groupe_id] .= '<div class="graph_partie" style="margin-left:' . $margin_left . '%;width:' . $width . '%"></div>';
    $memo_position = $margin_left + $width;
    // graphique (fin)
}
// Fabrication du tableau résultant
foreach ($tab_groupe as $groupe_id => $groupe_nom) {
    $tab_groupe[$groupe_id] = '<th>' . html($groupe_nom) . '</th>';
    foreach ($tab_periode as $periode_id => $periode_nom) {
        $tab_groupe[$groupe_id] .= isset($tab_jointure[$groupe_id][$periode_id]) ? '<td>' . $tab_jointure[$groupe_id][$periode_id] . '</td>' : '<td class="hc">-</td>';
    }
    $tab_groupe[$groupe_id] .= '<td>' . $tab_graphique[$groupe_id] . '</td>';
}
foreach ($tab_periode as $periode_id => $periode_nom) {
    $tab_periode[$periode_id] = '<th>' . html($periode_nom) . '</th>';
}
// Affichage du tableau résultant
echo '<table>' . NL;
echo '<thead>' . NL;
echo '<tr><td class="nu"></td>' . implode('', $tab_periode) . '<td class="graph_total">Étendue du ' . convert_date_mysql_to_french($tout_debut) . ' au ' . convert_date_mysql_to_french($toute_fin) . '.</td></tr>' . NL;
echo '</thead>' . NL;
echo '<tbody>' . NL;
echo '<tr>' . implode('</tr>' . NL . '<tr>', $tab_groupe) . '</tr>' . NL;
echo '</tbody>' . NL;
echo '</table><p>&nbsp;</p>' . NL;
	{
		unset($tab_autres[$DB_ROW['user_id']]);
		$tab_demandes[] = $DB_ROW['demande_id'] ;
		$score  = ($DB_ROW['demande_score']!==null) ? $DB_ROW['demande_score'] : false ;
		$statut = ($DB_ROW['demande_statut']=='eleve') ? 'demande non traitée' : 'évaluation en préparation' ;
		$class  = ($DB_ROW['demande_statut']=='eleve') ? ' class="new"' : '' ;
		// Afficher une ligne du tableau 
		$retour .= '<tr'.$class.'>';
		$retour .= '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['demande_id'].'x'.$DB_ROW['user_id'].'x'.$DB_ROW['item_id'].'" /></td>';
		$retour .= '<td class="label">'.html($matiere_nom).'</td>';
		$retour .= '<td class="label">'.html($DB_ROW['item_ref']).' <img alt="" src="./_img/bulle_aide.png" title="'.html($DB_ROW['item_nom']).'" /></td>';
		$retour .= '<td class="label">$'.$DB_ROW['item_id'].'$</td>';
		$retour .= '<td class="label">'.html($groupe_nom).'</td>';
		$retour .= '<td class="label">'.html($tab_eleves[$DB_ROW['user_id']]).'</td>';
		$retour .= str_replace( '<td class="' , '<td class="label ' , affich_score_html($score,'score',$pourcent='') );
		$retour .= '<td class="label"><i>'.html($DB_ROW['demande_date']).'</i>'.convert_date_mysql_to_french($DB_ROW['demande_date']).'</td>';
		$retour .= '<td class="label">'.$statut.'</td>';
		$retour .= '</tr>';
	}
	// Calculer pour chaque item sa popularité (le nb de demandes pour les élèves affichés)
	$listing_demande_id = implode(',', $tab_demandes );
	$DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_recuperer_item_popularite($listing_demande_id,$listing_user_id);
	$tab_bad = array();
	$tab_bon = array();
	foreach($DB_TAB as $DB_ROW)
	{
		$s = ($DB_ROW['popularite']>1) ? 's' : '' ;
		$tab_bad[] = '$'.$DB_ROW['item_id'].'$';
		$tab_bon[] = '<i>'.sprintf("%02u",$DB_ROW['popularite']).'</i>'.$DB_ROW['popularite'].' demande'.$s;
	}
	// Inclure dans le retour la liste des élèves sans demandes
    // en fait on connait aussi le palier mais la requête est plus simple (pas de jointure) avec les entrées
    foreach ($DB_TAB as $DB_ROW) {
        $tab_user_entree[$DB_ROW['user_id']][$DB_ROW['entree_id']] = array('etat' => $DB_ROW['validation_entree_etat'], 'date' => convert_date_mysql_to_french($DB_ROW['validation_entree_date']), 'info' => $DB_ROW['validation_entree_info']);
    }
    // On commence par remplir tout le tableau des piliers pour ne pas avoir ensuite à tester tout le temps si le champ existe
    foreach ($tab_eleve_id as $eleve_id) {
        foreach ($tab_pilier as $pilier_id => $tab) {
            $tab_user_pilier[$eleve_id][$pilier_id] = array('etat' => 2, 'date' => '', 'info' => '');
        }
    }
    // Maintenant on complète avec les valeurs de la base
    $listing_pilier_id = implode(',', array_keys($tab_pilier));
    $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_pilier($liste_eleve, $listing_pilier_id, $palier_id = 0);
    // en fait on connait aussi le palier mais la requête est plus simple (pas de jointure) avec les piliers
    foreach ($DB_TAB as $DB_ROW) {
        $tab_user_pilier[$DB_ROW['user_id']][$DB_ROW['pilier_id']] = array('etat' => $DB_ROW['validation_pilier_etat'], 'date' => convert_date_mysql_to_french($DB_ROW['validation_pilier_date']), 'info' => $DB_ROW['validation_pilier_info']);
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
/* 
 * Libérer de la place mémoire car les scripts de bilans sont assez gourmands.
 * Supprimer $DB_TAB ne fonctionne pas si on ne force pas auparavant la fermeture de la connexion.
 * SebR devrait peut-être envisager d'ajouter une méthode qui libère cette mémoire, si c'est possible...
 */
// ////////////////////////////////////////////////////////////////////////////////////////////////////
DB::close(SACOCHE_STRUCTURE_BD_NAME);
unset($DB_TAB);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Elaboration de la synthèse de maîtrise du socle, en HTML et PDF => Tableaux, variables, calculs (aucun affichage). [type "pourcentage" uniquement]
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($type == 'pourcentage') {
示例#6
0
    exit('ok' . ']¤[' . $lignes . ']¤[' . $msg_audio_autre . ']¤[' . $msg_texte_url . ']¤[' . $msg_texte_data);
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrer des notes saisies (auto-évaluation)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'Enregistrer_saisies' && $devoir_id && in_array($msg_autre, array('oui', 'non'))) {
    // On récupère les informations associées à ce devoir et on vérifie que l'élève est en droit de s'y auto-évaluer.
    $DB_ROW = DB_STRUCTURE_ELEVE::DB_recuperer_devoir_infos($devoir_id);
    if (empty($DB_ROW)) {
        exit('Devoir introuvable !');
    }
    if ($DB_ROW['devoir_autoeval_date'] === NULL) {
        exit('Devoir sans auto-évaluation !');
    }
    if ($DB_ROW['devoir_autoeval_date'] < TODAY_MYSQL) {
        exit('Auto-évaluation terminée le ' . convert_date_mysql_to_french($DB_ROW['devoir_autoeval_date']) . ' !');
    }
    $devoir_proprio_id = $DB_ROW['proprio_id'];
    $devoir_date_mysql = $DB_ROW['devoir_date'];
    $devoir_description = $DB_ROW['devoir_info'];
    $date_visible_mysql = $DB_ROW['devoir_visible_date'];
    // Tout est transmis : il faut comparer avec le contenu de la base pour ne mettre à jour que ce dont il y a besoin
    // On récupère les notes transmises dans $tab_post
    $tab_post = array();
    foreach ($_POST as $key => $val) {
        if (substr($key, 0, 5) == 'item_') {
            $item_id = (int) substr($key, 5);
            $note = $val;
            $tab_post[$item_id] = $note;
        }
    }
  if($periode_id==0)
  {
    $date_mysql_debut = convert_date_french_to_mysql($date_debut);
    $date_mysql_fin   = convert_date_french_to_mysql($date_fin);
  }
  else
  {
    $DB_ROW = DB_STRUCTURE_COMMUN::DB_recuperer_dates_periode($groupe_id,$periode_id);
    if(empty($DB_ROW))
    {
      exit('La classe et la période ne sont pas reliées !');
    }
    $date_mysql_debut = $DB_ROW['jointure_date_debut'];
    $date_mysql_fin   = $DB_ROW['jointure_date_fin'];
    $date_debut = convert_date_mysql_to_french($date_mysql_debut);
    $date_fin   = convert_date_mysql_to_french($date_mysql_fin);
  }
  if($date_mysql_debut>$date_mysql_fin)
  {
    exit('La date de début est postérieure à la date de fin !');
  }

  $tab_precision_retroactif = array
  (
    'auto'   => 'notes antérieures selon référentiels',
    'oui'    => 'avec notes antérieures',
    'non'    => 'sans notes antérieures',
    'annuel' => 'notes antérieures de l\'année scolaire',
  );
  $precision_socle = $only_socle ? ', restriction au socle' : '' ;
  $texte_periode = 'Du '.$date_debut.' au '.$date_fin.'';
		{
			exit('Erreur : cette classe et cette période ne sont pas reliées !');
		}
		// Formater les dates
		$date_debut_mysql = $DB_ROW['jointure_date_debut'];
		$date_fin_mysql   = $DB_ROW['jointure_date_fin'];
	}
	// Lister les évaluations
	$script = '';
	$classe_id = ($aff_classe_txt!='d2') ? $aff_classe_id : -1 ; // 'd2' est transmis si on veut toutes les classes / tous les groupes
	$DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_lister_devoirs_prof($_SESSION['USER_ID'],$classe_id,$date_debut_mysql,$date_fin_mysql);
	foreach($DB_TAB as $DB_ROW)
	{
		// Formater la date et la référence de l'évaluation
		$date_affich = convert_date_mysql_to_french($DB_ROW['devoir_date']);
		$date_visible = ($DB_ROW['devoir_date']==$DB_ROW['devoir_visible_date']) ? 'identique' : convert_date_mysql_to_french($DB_ROW['devoir_visible_date']);
		$ref = $DB_ROW['devoir_id'].'_'.strtoupper($DB_ROW['groupe_type']{0}).$DB_ROW['groupe_id'];
		$s = ($DB_ROW['items_nombre']>1) ? 's' : '';
		if(!$DB_ROW['devoir_partage'])
		{
			$profs_liste  = '';
			$profs_nombre = 'moi seul';
		}
		else
		{
			$profs_liste  = str_replace(',','_',mb_substr($DB_ROW['devoir_partage'],1,-1));
			$profs_nombre = (mb_substr_count($DB_ROW['devoir_partage'],',')-1).' profs';
		}
		$proprio = ($DB_ROW['prof_id']==$_SESSION['USER_ID']) ? TRUE : FALSE ;
		// Afficher une ligne du tableau
		echo'<tr>';
	exit();
}

//	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	Indiquer la liste des élèves associés à une évaluation de même nom( uniquement pour une sélection d'élèves)
//	Reprise d'un développement initié par Alain Pottier <*****@*****.**>
//	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='indiquer_eleves_deja') && $description && $date_debut )
{
	$date_debut_mysql = convert_date_french_to_mysql($date_debut);
	$DB_TAB = DB_STRUCTURE_PROFESSEUR::DB_lister_eleves_devoirs($_SESSION['USER_ID'],$description,$date_debut_mysql);
	$tab_retour = array();
	foreach($DB_TAB as $DB_ROW)
	{
		$tab_retour[] = $DB_ROW['user_id'].'_'.convert_date_mysql_to_french($DB_ROW['devoir_date']);
	}
	exit( 'ok,'.implode(',',$tab_retour) );
}

//	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	Afficher le formulaire pour saisir les items acquis par les élèves à une évaluation
//	Générer en même temps un csv à récupérer pour une saisie déportée
//	Générer en même temps un pdf contenant un tableau de saisie vide
//	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='saisir') && $devoir_id && $groupe_id && $date_mysql && $date_visible && $date_fr ) // $description et $groupe_nom sont aussi transmis
{
	// liste des items
	$DB_TAB_COMP = DB_STRUCTURE_PROFESSEUR::DB_lister_items_devoir( $devoir_id , FALSE /*with_lien*/ , TRUE /*with_coef*/ );
	// liste des élèves
if(!defined('SACoche')) {exit('Ce fichier ne peut être appelé directement !');}
if($_SESSION['SESAMATH_ID']==ID_DEMO) {}

$profil      = (isset($_POST['f_profil']))      ? Clean::texte($_POST['f_profil'])      : ''; // professeur personnel directeur eleve parent
$groupe_type = (isset($_POST['f_groupe_type'])) ? Clean::texte($_POST['f_groupe_type']) : ''; // d n c g b
$groupe_id   = (isset($_POST['f_groupe_id']))   ? Clean::entier($_POST['f_groupe_id'])  : 0;
$tab_types   = array('d'=>'all' , 'n'=>'niveau' , 'c'=>'classe' , 'g'=>'groupe' , 'b'=>'besoin');

if( (!$profil) || (!$groupe_id) || (!isset($tab_types[$groupe_type])) )
{
  exit('Erreur avec les données transmises !');
}

$champs = ($profil!='parent') ? 'CONCAT(user_nom," ",user_prenom) AS user_identite , user_connexion_date AS connexion_date' : 'CONCAT(parent.user_nom," ",parent.user_prenom," (",enfant.user_nom," ",enfant.user_prenom,")") AS user_identite , parent.user_connexion_date AS connexion_date' ;
$DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( $profil /*profil_type*/ , 1 /*statut*/ , $tab_types[$groupe_type] , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs ) ;

foreach($DB_TAB as $DB_ROW)
{
  // Formater la date (dont on ne garde que le jour)
  $date_mysql  = ($DB_ROW['connexion_date']===NULL) ? '0' : substr($DB_ROW['connexion_date'],0,10) ;
  $date_affich = ($DB_ROW['connexion_date']===NULL) ? '' : convert_date_mysql_to_french($date_mysql) ;
  // Afficher une ligne du tableau
  echo'<tr>';
  echo  '<td>'.html($DB_ROW['user_identite']).'</td>';
  echo  '<td>'.$date_affich.'</td>';
  echo'</tr>';
}
exit();

?>
示例#11
0
      <th>Date début</th>
      <th>Date fin</th>
      <th>Destinataires</th>
      <th>Contenu</th>
      <th class="nu"><q class="ajouter" title="Ajouter un message."></q></th>
    </tr>
  </thead>
  <tbody>
    <?php 
// Lister les messages dont le user est l'auteur
$DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_messages_user_auteur($_SESSION['USER_ID']);
if (!empty($DB_TAB)) {
    Layout::add('js_inline_before', '// <![CDATA[');
    foreach ($DB_TAB as $DB_ROW) {
        $date_debut_affich = convert_date_mysql_to_french($DB_ROW['message_debut_date']);
        $date_fin_affich = convert_date_mysql_to_french($DB_ROW['message_fin_date']);
        $destinataires_liste = str_replace(',', '_', mb_substr($DB_ROW['message_destinataires'], 1, -1));
        $destinataires_nombre = mb_substr_count($DB_ROW['message_destinataires'], ',') - 1;
        $destinataires_nombre = $destinataires_nombre > 1 ? $destinataires_nombre . ' destinataires' : $destinataires_nombre . ' destinataire';
        // Afficher une ligne du tableau
        echo '<tr id="id_' . $DB_ROW['message_id'] . '">';
        echo '<td>' . $date_debut_affich . '</td>';
        echo '<td>' . $date_fin_affich . '</td>';
        echo '<td>' . $destinataires_nombre . '</td>';
        echo '<td>' . html(afficher_texte_tronque($DB_ROW['message_contenu'], 60)) . '</td>';
        echo '<td class="nu">';
        echo '<q class="modifier" title="Modifier ce message."></q>';
        echo '<q class="supprimer" title="Supprimer ce message."></q>';
        echo '</td>';
        echo '</tr>' . NL;
        // Javascript
 $texte .= 'Période : du ' . convert_date_mysql_to_french($DB_ROW['convention_date_debut']) . ' au ' . convert_date_mysql_to_french($DB_ROW['convention_date_fin']) . "\r\n";
 $texte .= "\r\n";
 $texte .= 'Le contrat est en deux exemplaires.' . "\r\n";
 $texte .= 'L\'un est à retourner signé au président de l\'association (ses coordonnées postales figurent sur le document).' . "\r\n";
 $texte .= 'L\'autre est à conserver par votre établissement.' . "\r\n";
 $texte .= "\r\n";
 $texte .= 'La facture comporte les coordonnées bancaires de l\'association.' . "\r\n";
 $texte .= 'Votre service gestionnaire peut régler par mandat administratif.' . "\r\n";
 $texte .= "\r\n";
 $texte .= 'Ces documents vous resteront accessibles en vous connectant comme administrateur puis en vous rendant dans le menu [Paramétrages établissement] [Mode d\'identification / Connecteur ENT] (cliquer alors sur l\'icône en bout de ligne du tableau).' . "\r\n";
 $texte .= URL_DIR_SACOCHE . '?id=' . $_SESSION['BASE'] . "\r\n";
 $texte .= "\r\n";
 if ($DB_ROW['convention_date_debut'] < TODAY_MYSQL) {
     $texte .= 'Dès réception du contrat (ou perception du règlement), votre connecteur ENT sera automatiquement activé.' . "\r\n";
 } else {
     $texte .= 'La réception du contrat (ou la perception du règlement) entrainera l\'activation automatique de votre connecteur ENT au ' . convert_date_mysql_to_french($DB_ROW['convention_date_debut']) . ' (changement d\'année scolaire).' . "\r\n";
 }
 $texte .= 'Un courriel est alors envoyé au contact référent pour l\'en informer.' . "\r\n";
 $texte .= 'Vous disposez de 2 mois à compter de l\'activation du connecteur ENT pour le tester et nous faire parvenir votre règlement (ou le contrat).' . "\r\n";
 $texte .= "\r\n";
 $texte .= 'Nous vous remercions de votre confiance et de votre soutien.' . "\r\n";
 $texte .= "\r\n";
 $texte .= 'Remarque : si vous ne souhaitez pas donner suite à cette convention, il vous suffit de ne rien envoyer et de sélectionner une connexion avec les identifiants de SACoche.' . "\r\n";
 $texte .= "\r\n";
 $texte .= 'Cordialement,' . "\r\n";
 $texte .= WEBMESTRE_PRENOM . ' ' . WEBMESTRE_NOM . "\r\n";
 $texte .= 'Responsable SACoche pour Sésamath' . "\r\n";
 $texte .= "\r\n";
 $courriel_bilan = Sesamail::mail($DB_ROW2['structure_contact_courriel'], $titre, $texte);
 // Ce serait mieux si le Reply-To était MAIL_SACOCHE_CONTACT mais cette contante n'est pas connue ici...
 if (!$courriel_bilan) {
             }
         }
         if ($tab_users_base[$champ_ref][$id_base] != $tab_users_fichier[$champ_ref][$i_fichier]) {
             $td_modif .= ' || <b>' . $champ_aff . ' : ' . aff_champ($import_profil, $champ_ref, $tab_users_base[$champ_ref][$id_base]) . ' &rarr; ' . aff_champ($import_profil, $champ_ref, $tab_users_fichier[$champ_ref][$i_fichier]) . '</b>';
             $tab_users_modifier[$id_base][$champ_ref] = $champ_ref != 'classe' ? $tab_users_fichier[$champ_ref][$i_fichier] : $id_classe;
             $nb_modif++;
             if ($champ_ref == 'courriel') {
                 $tab_users_modifier[$id_base]['email_origine'] = 'user';
             }
         } else {
             $td_modif .= ' || ' . $champ_aff . ' : ' . aff_champ($import_profil, $champ_ref, $tab_users_base[$champ_ref][$id_base]);
             $tab_users_modifier[$id_base][$champ_ref] = FALSE;
         }
     }
     if ($tab_users_base['sortie'][$id_base] != SORTIE_DEFAUT_MYSQL) {
         $td_modif .= ' || <b>Sortie : ' . convert_date_mysql_to_french($tab_users_base['sortie'][$id_base]) . ' &rarr; non</b>';
         $tab_users_modifier[$id_base]['entree'] = SORTIE_DEFAUT_MYSQL;
         $nb_modif++;
     } else {
         $tab_users_modifier[$id_base]['entree'] = FALSE;
     }
     // Cas [5] : présent dans le fichier, présent dans la base, classe indiquée dans le fichier si élève, ancien dans la base et/ou différence constatée : contenu à modifier (user revenant ou mise à jour)
     if ($nb_modif) {
         $lignes_modifier .= '<tr><th>Modifier <input id="mod_' . $id_base . '" name="mod_' . $id_base . '" type="checkbox" checked /></th><td>' . mb_substr($td_modif, 4) . '</td></tr>' . NL;
     } else {
         if ($mode == 'complet') {
             $indication = $import_profil == 'eleve' ? $tab_users_base['classe'][$id_base] : $tab_users_base['profil_sigle'][$id_base];
             $lignes_conserver .= '<tr><th>Conserver</th><td>' . html($tab_users_base['sconet_id'][$id_base] . ' / ' . $tab_users_base['sconet_num'][$id_base] . ' / ' . $tab_users_base['reference'][$id_base] . ' || ' . $tab_users_base['nom'][$id_base] . ' ' . $tab_users_base['prenom'][$id_base] . ' (' . $indication . ')') . '</td></tr>' . NL;
         }
     }
 }
$nb_fin_actuel = 0;
$nb_fin_ancien = 0;
$profil_type = $import_profil != 'professeur' ? $import_profil : array('professeur', 'directeur');
$with_classe = $import_profil == 'eleve' ? TRUE : FALSE;
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users($profil_type, 2, 'user_id,user_sconet_id,user_sconet_elenoet,user_reference,user_profil_nom_court_singulier,user_nom,user_prenom,user_prenom,user_login,user_sortie_date', $with_classe, TRUE);
foreach ($DB_TAB as $DB_ROW) {
    if (TODAY_MYSQL < $DB_ROW['user_sortie_date']) {
        $nb_fin_actuel++;
    } else {
        $nb_fin_ancien++;
    }
    if ($mode == 'complet') {
        $class = isset($tab_password[$DB_ROW['user_id']]) ? ' class="new"' : '';
        $td_password = isset($tab_password[$DB_ROW['user_id']]) ? '<td class="new">' . html($tab_password[$DB_ROW['user_id']]) . '</td>' : '<td class="i">champ crypté</td>';
        $champ = $import_profil == 'eleve' ? $DB_ROW['groupe_ref'] : $DB_ROW['user_profil_nom_court_singulier'];
        $date_affich = $DB_ROW['user_sortie_date'] != SORTIE_DEFAUT_MYSQL ? convert_date_mysql_to_french($DB_ROW['user_sortie_date']) : '-';
        $lignes .= '<tr' . $class . '><td>' . html($DB_ROW['user_sconet_id']) . '</td><td>' . html($DB_ROW['user_sconet_elenoet']) . '</td><td>' . html($DB_ROW['user_reference']) . '</td><td>' . html($champ) . '</td><td>' . html($DB_ROW['user_nom']) . '</td><td>' . html($DB_ROW['user_prenom']) . '</td><td' . $class . '>' . html($DB_ROW['user_login']) . '</td>' . $td_password . '<td>' . $date_affich . '</td></tr>' . NL;
    }
}
$s_debut_actuel = $nb_debut_actuel > 1 ? 's' : '';
$s_debut_ancien = $nb_debut_ancien > 1 ? 's' : '';
$s_fin_actuel = $nb_fin_actuel > 1 ? 's' : '';
$s_fin_ancien = $nb_fin_ancien > 1 ? 's' : '';
$s_mod = $nb_mod > 1 ? 's' : '';
$s_add = $nb_add > 1 ? 's' : '';
$s_del = $nb_del > 1 ? 's' : '';
if ($nb_add) {
    // On archive les nouveaux identifiants dans un fichier tableur (csv tabulé)
    $profil = $import_profil == 'eleve' ? 'eleve' : ($import_profil == 'parent' ? 'parent' : 'personnel');
    $fnom = 'identifiants_' . $_SESSION['BASE'] . '_' . $profil . '_' . fabriquer_fin_nom_fichier__date_et_alea();
    FileSystem::ecrire_fichier(CHEMIN_DOSSIER_LOGINPASS . $fnom . '.csv', To::csv($fcontenu_csv));
  }
  $affichage .= '</tbody>';
  // Ligne avec le drapeau de la LV, si compétence concernée sélectionnée.
  $affichage .= count(array_intersect($tab_pilier_id,$tab_langue_piliers)) ? '<tfoot>'.$tfoot.'<th class="nu" colspan="3"></th></tfoot>' : '' ;
  // Récupérer la liste des jointures (validations)
  $listing_eleve_id  = implode(',',$tab_eleve_id);
  $listing_pilier_id = implode(',',$tab_pilier_id);
  $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_pilier($listing_eleve_id,$listing_pilier_id,$palier_id=0); // en fait on connait aussi le palier mais la requête est plus simple (pas de jointure) avec les piliers
  $tab_bad = array();
  $tab_bon = array();
  foreach($DB_TAB as $DB_ROW)
  {
    if($DB_ROW['validation_pilier_etat'])
    {
      $tab_bad[] = 'U'.$DB_ROW['user_id'].'C'.$DB_ROW['pilier_id'].'" class="v3">';
      $tab_bon[] = 'U'.$DB_ROW['user_id'].'C'.$DB_ROW['pilier_id'].'" class="v'.$DB_ROW['validation_pilier_etat'].'" title="Validé le '.convert_date_mysql_to_french($DB_ROW['validation_pilier_date']).' par '.html($DB_ROW['validation_pilier_info']).'" data-etat="lock">';
    }
  }
  $affichage = str_replace($tab_bad,$tab_bon,$affichage);
  // Afficher le résultat
  echo $affichage;
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer une validation positive
// ////////////////////////////////////////////////////////////////////////////////////////////////////

elseif( ($action=='Enregistrer_validation') && ($delete_id) )
{
  // Récupérer le duo {eleve;pilier}
  $string_infos = str_replace( array('U','C') , '_' , $delete_id);
    foreach ($tab_eleve_id as $eleve_id) {
        if ($OBJET == 'imprimer') {
            $checked = isset($DB_TAB[$eleve_id]) ? '' : ' checked';
            $archive_td = isset($DB_TAB[$eleve_id]) ? 'Oui, le ' . convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date']) : 'Non';
            echo '<tr id="id_' . $eleve_id . '">';
            echo '<td class="nu"><input type="checkbox" name="f_ids" value="' . $eleve_id . '"' . $checked . ' /></td>';
            echo '<td class="label">' . $tab_eleve_td[$eleve_id] . '</td>';
            echo '<td class="label hc">' . $archive_td . '</td>';
            echo '</tr>';
        } elseif ($OBJET == 'voir_archive') {
            if (!isset($DB_TAB[$eleve_id])) {
                $archive_td = 'Non, pas encore imprimé';
            } elseif (is_file(CHEMIN_DOSSIER_OFFICIEL . $_SESSION['BASE'] . DS . fabriquer_nom_fichier_bilan_officiel($eleve_id, $bilan_type, $annee_session_brevet))) {
                $_SESSION['tmp_droit_voir_archive'][$eleve_id . $bilan_type] = TRUE;
                // marqueur mis en session pour vérifier que c'est bien cet utilisateur qui veut voir (et a donc le droit de voir) le fichier, car il n'y a pas d'autre vérification de droit ensuite
                $archive_td = '<a href="releve_pdf.php?fichier=' . $eleve_id . '_' . $bilan_type . '_' . $annee_session_brevet . '" target="_blank">Oui, le ' . convert_date_mysql_to_french($DB_TAB[$eleve_id][0]['fichier_date']) . '</a>';
            } else {
                $archive_td = 'Oui, mais archive non présente sur ce serveur';
            }
            echo '<tr>';
            echo '<td>' . $tab_eleve_td[$eleve_id] . '</td>';
            echo '<td class="hc">' . $archive_td . '</td>';
            echo '</tr>';
        }
    }
    exit;
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPRIMER ETAPE 2/4 - Le PDF complet est généré ; on archive individuellement les fiches brevet informatives (qui sont y rester une année scolaire)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($ACTION == 'imprimer' && $etape == 2) {
示例#17
0
				<th>Item</th>
				<th>Score</th>
				<th>Statut</th>
				<th class="nu"></th>
			</tr>
		</thead>
		<tbody>
			<?php
			// Lister les demandes d'évaluation
			$DB_TAB = DB_STRUCTURE_lister_demandes_eleve($_SESSION['USER_ID']);
			foreach($DB_TAB as $DB_ROW)
			{
				$score  = ($DB_ROW['demande_score']!==null) ? $DB_ROW['demande_score'] : false ;
				$statut = ($DB_ROW['demande_statut']=='eleve') ? 'demande non traitée' : 'évaluation en préparation' ;
				$texte_lien_avant = ($DB_ROW['item_lien']) ? '<a class="lien_ext" href="'.html($DB_ROW['item_lien']).'">' : '';
				$texte_lien_apres = ($DB_ROW['item_lien']) ? '</a>' : '';
				// Afficher une ligne du tableau 
				echo'<tr id="ids_'.$DB_ROW['demande_id'].'_'.$DB_ROW['item_id'].'_'.$DB_ROW['matiere_id'].'">';
				echo	'<td><i>'.html($DB_ROW['demande_date']).'</i>'.convert_date_mysql_to_french($DB_ROW['demande_date']).'</td>';
				echo	'<td>'.html($DB_ROW['matiere_nom']).'</td>';
				echo	'<td>'.$texte_lien_avant.html($DB_ROW['item_ref']).$texte_lien_apres.' <img alt="" src="./_img/bulle_aide.png" title="'.html($DB_ROW['item_nom']).'" /></td>';
				echo	affich_score_html($score,'score',$pourcent='');
				echo	'<td>'.$statut.'</td>';
				echo	'<td class="nu"><q class="supprimer" title="Supprimer cette demande d\'évaluation."></q></td>';
				echo'</tr>';
			}
			?>
		</tbody>
	</table>
</form>
 $tab_types = array('d'=>'Divers' , 'n'=>'niveau' , 'c'=>'classe' , 'g'=>'groupe');
 $groupe_type = $tab_types[$groupe_type];
 if($groupe_type=='Divers')
 {
   $groupe_type = ($groupe_id==1) ? 'sdf' : 'all' ;
 }
 $champs = 'user_id, user_id_ent, user_id_gepi, user_sconet_id, user_sconet_elenoet, user_reference, user_genre, user_nom, user_prenom, user_naissance_date, user_login, user_email, user_sortie_date' ;
 $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , $statut /*statut*/ , $groupe_type , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs );
 if(!empty($DB_TAB))
 {
   foreach($DB_TAB as $DB_ROW)
   {
     // Formater les dates
     $date_mysql  = $DB_ROW['user_sortie_date'];
     $date_affich = ($date_mysql!=SORTIE_DEFAUT_MYSQL)  ? convert_date_mysql_to_french($date_mysql)                    : '-' ;
     $date_naissance = ($DB_ROW['user_naissance_date']) ? convert_date_mysql_to_french($DB_ROW['user_naissance_date']) : '-' ;
     // Afficher une ligne du tableau
     echo'<tr id="id_'.$DB_ROW['user_id'].'">';
     echo  '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['user_id'].'" /></td>';
     echo  '<td class="label">'.html($DB_ROW['user_id_ent']).'</td>';
     echo  '<td class="label">'.html($DB_ROW['user_id_gepi']).'</td>';
     echo  '<td class="label">'.html($DB_ROW['user_sconet_id']).'</td>';
     echo  '<td class="label">'.html($DB_ROW['user_sconet_elenoet']).'</td>';
     echo  '<td class="label">'.html($DB_ROW['user_reference']).'</td>';
     echo  '<td class="label">'.Html::$tab_genre['enfant'][$DB_ROW['user_genre']].'</td>';
     echo  '<td class="label">'.html($DB_ROW['user_nom']).'</td>';
     echo  '<td class="label">'.html($DB_ROW['user_prenom']).'</td>';
     echo  '<td class="label">'.$date_naissance.'</td>';
     echo  '<td class="label">'.html($DB_ROW['user_login']).'</td>';
     echo  '<td class="label i">champ crypté</td>';
     echo  '<td class="label">'.html($DB_ROW['user_email']).'</td>';
     if(!empty($DB_TAB))
     {
       foreach($DB_TAB as $DB_ROW)
       {
         // Formater certains éléments
         $texte_signature  = ($DB_ROW['convention_signature']===NULL) ? 'Non réceptionné' : 'Oui, le '.convert_date_mysql_to_french($DB_ROW['convention_signature']) ;
         $texte_paiement   = ($DB_ROW['convention_paiement']===NULL)  ? 'Non réceptionné' : 'Oui, le '.convert_date_mysql_to_french($DB_ROW['convention_paiement']) ;
         $texte_activation = (!$DB_ROW['convention_activation']) ? 'Non' : ( ( ($DB_ROW['convention_date_debut']>TODAY_MYSQL) || ($DB_ROW['convention_date_fin']<TODAY_MYSQL) ) ? 'Non (hors période)' : 'Oui' ) ;
         $class_signature  = (substr($texte_signature ,0,3)=='Non') ? 'br' : 'bv' ;
         $class_paiement   = (substr($texte_paiement  ,0,3)=='Non') ? 'br' : 'bv' ;
         $class_activation = (substr($texte_activation,0,3)=='Non') ? 'br' : 'bv' ;
         // Afficher une ligne du tableau
         echo'<tr id="id_'.$DB_ROW['convention_id'].'">';
         echo  '<td>'.html($DB_ROW['connexion_nom']).'</td>';
         echo  '<td>du '.convert_date_mysql_to_french($DB_ROW['convention_date_debut']).' au '.convert_date_mysql_to_french($DB_ROW['convention_date_fin']).'</td>';
         echo  '<td>Oui, le '.convert_date_mysql_to_french($DB_ROW['convention_creation']).'</td>';
         echo  '<td class="'.$class_signature.'">'.$texte_signature.'</td>';
         echo  '<td class="'.$class_paiement.'">'.$texte_paiement.'</td>';
         echo  '<td class="'.$class_activation.'">'.$texte_activation.'</td>';
         echo  '<td class="nu"><q class="voir_archive" title="Récupérer / Imprimer les documents associés."></q></td>';
         echo'</tr>'.NL;
       }
     }
     else
     {
       echo'<tr class="vide"><td class="nu probleme" colspan="6">Cliquer sur l\'icône ci-dessus (symbole "+" dans un rond vert) pour ajouter une convention.</td><td class="nu"></td></tr>'.NL;
     }
     ?>
   </tbody>
 </table>
 <p class="astuce">
 $fnom_export = 'messages_'.$_SESSION['BASE'].'_'.Clean::fichier($matiere_nom).'_'.Clean::fichier($groupe_nom).'_'.fabriquer_fin_nom_fichier__date_et_alea();
 $separateur = ';';
 $messages_html = '<table><thead><tr><th>Matière - Item</th><th>Groupe - Élève</th><th>Message(s)</th></tr></thead><tbody>';
 $fichier_csv = 'Matière'.$separateur.'Item Ref'.$separateur.'Item Nom'.$separateur.'Groupe'.$separateur.'Élève'.$separateur.'Score'.$separateur.'Date'.$separateur.'Message'."\r\n";
 $tab_demandes = array();
 $DB_TAB = DB_STRUCTURE_DEMANDE::DB_lister_demandes_prof( $_SESSION['USER_ID'] , $matiere_id , $listing_user_id );
 if(empty($DB_TAB))
 {
   exit('Aucune demande n\'a été formulée selon les critères indiqués !');
 }
 foreach($DB_TAB as $DB_ROW)
 {
   unset($tab_autres[$DB_ROW['eleve_id']]);
   $tab_demandes[] = $DB_ROW['demande_id'];
   $score  = ($DB_ROW['demande_score']!==NULL) ? $DB_ROW['demande_score'] : FALSE ;
   $date   = convert_date_mysql_to_french($DB_ROW['demande_date']);
   $statut = ($DB_ROW['demande_statut']=='eleve') ? 'demande non traitée' : 'évaluation en préparation' ;
   $dest   = ($DB_ROW['prof_id']==$_SESSION['USER_ID']) ? 'vous seul' : 'collègues concernés' ;
   $class  = ($DB_ROW['demande_statut']=='eleve') ? ' class="new"' : '' ;
   $matiere_nom = ($selection_matiere) ? $matiere_nom : $DB_ROW['matiere_nom'] ;
   $commentaire = ($DB_ROW['demande_messages']) ? 'oui <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.str_replace(array("\r\n","\r","\n"),'<br />',html(html($DB_ROW['demande_messages']))).'" />' : 'non' ; // Volontairement 2 html() pour le title sinon &lt;* est pris comme une balise html par l'infobulle.
   $document    = ($DB_ROW['demande_doc'])      ? '<a href="'.html($DB_ROW['demande_doc']).'" target="_blank">oui</a>' : 'non' ;
   $messages_html .= '<tr><td>'.html($matiere_nom).'<br />'.html($DB_ROW['item_ref']).'</td><td>'.html($tab_groupes[$DB_ROW['eleve_id']]).'<br />'.html($tab_eleves[$DB_ROW['eleve_id']]).'</td><td>'.str_replace(array("\r\n","\r","\n"),'<br />',html($DB_ROW['demande_messages'])).'</td></tr>';
   $fichier_csv .= '"'.$matiere_nom.'"'.$separateur.'"'.$DB_ROW['item_ref'].'"'.$separateur.'"'.$DB_ROW['item_nom'].'"'.$separateur.'"'.$tab_groupes[$DB_ROW['eleve_id']].'"'.$separateur.'"'.$tab_eleves[$DB_ROW['eleve_id']].'"'.$separateur.'"'.$score.'"'.$separateur.'"'.$date.'"'.$separateur.'"'.$DB_ROW['demande_messages'].'"'."\r\n";
   // Afficher une ligne du tableau 
   $retour .= '<tr'.$class.'>';
   $retour .= '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['demande_id'].'x'.$DB_ROW['eleve_id'].'x'.$DB_ROW['item_id'].'" /></td>';
   $retour .= '<td class="label">'.html($matiere_nom).'</td>';
   $retour .= '<td class="label">'.html($DB_ROW['item_ref']).' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.html(html($DB_ROW['item_nom'])).'" /></td>'; // Volontairement 2 html() pour le title sinon &lt;* est pris comme une balise html par l'infobulle.
   $retour .= '<td class="label">$'.$DB_ROW['item_id'].'$</td>';
   $retour .= '<td class="label">'.html($tab_groupes[$DB_ROW['eleve_id']]).'</td>';
示例#21
0
                    $tab_users_fichier[$id][6] += 1;
                    $tab_users_fichier[$id][7] += 1;
                }
                $memo_date_debut = min($memo_date_debut, $date);
                $memo_date_fin = max($memo_date_fin, $date);
            }
        }
    }
    $nb_eleves_trouves = count($tab_users_fichier, COUNT_NORMAL);
    if (!$nb_eleves_trouves) {
        exit('Erreur : aucun élève trouvé dans le fichier !');
    }
    // On enregistre
    FileSystem::ecrire_fichier(CHEMIN_DOSSIER_IMPORT . $fichier_memo, serialize($tab_users_fichier));
    // On affiche la demande de confirmation
    exit('ok' . ']¤[' . $objet . ']¤[' . html($nb_eleves_trouves) . ']¤[' . convert_date_mysql_to_french($memo_date_debut) . ']¤[' . convert_date_mysql_to_french($memo_date_fin));
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traitement d'un fichier d'import déjà réceptionné
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (in_array($action, array('traitement_import_sconet', 'traitement_import_siecle', 'traitement_import_gepi', 'traitement_import_pronote')) && $periode_id) {
    $mode = substr($action, strrpos($action, '_') + 1);
    // Récupération des données déjà extraites du fichier
    if (!is_file(CHEMIN_DOSSIER_IMPORT . $fichier_memo)) {
        exit('Erreur : le fichier ' . CHEMIN_DOSSIER_IMPORT . $fichier_memo . ' contenant les données à traiter est introuvable !');
    }
    $contenu = file_get_contents(CHEMIN_DOSSIER_IMPORT . $fichier_memo);
    $tab_users_fichier = @unserialize($contenu);
    if ($tab_users_fichier === FALSE) {
        exit('Erreur : le fichier contenant les données à traiter est syntaxiquement incorrect !');
    }
 }
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 // Forcer plusieurs mots de passe avec la date de naissance
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 if ($action == 'forcer_mdp_birth') {
     if ($profil != 'eleves') {
         exit('Fonctionnalité disponible uniquement pour les élèves !');
     }
     $tab_password = array();
     // Récupérer les données des utilisateurs concernés (besoin de le faire maintenant, on a besoin des infos pour générer le mdp)
     $listing_champs = $profil != 'parents' ? 'user_id,user_sconet_id,user_sconet_elenoet,user_reference,user_profil_sigle,user_nom,user_prenom,user_naissance_date,user_login,user_naissance_date' : 'parent.user_id AS parent_id,parent.user_sconet_id AS parent_sconet_id,parent.user_sconet_elenoet AS parent_sconet_elenoet,parent.user_reference AS parent_reference,parent.user_profil_sigle AS parent_profil_sigle,parent.user_nom AS parent_nom,parent.user_prenom AS parent_prenom,parent.user_login AS parent_login';
     $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_users_cibles(implode(',', $tab_user), $listing_champs, $avec_info);
     // Mettre à jour les mots de passe des utilisateurs concernés
     foreach ($DB_TAB as $key => $DB_ROW) {
         if ($DB_ROW['user_naissance_date']) {
             $password = str_replace('/', '', convert_date_mysql_to_french($DB_ROW['user_naissance_date']));
             DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user($DB_ROW[$prefixe . 'id'], array(':password' => crypter_mdp($password)));
             $tab_password[$DB_ROW[$prefixe . 'id']] = $password;
         }
     }
     if (!count($tab_password)) {
         exit('Les mots de passe de ces élèves ne sont pas dans la base !');
     }
 }
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 // Générer une sortie csv (login ou mdp) (élève ou prof)
 // ////////////////////////////////////////////////////////////////////////////////////////////////////
 $separateur = ';';
 $champ_nom = $profil == 'eleves' ? 'CLASSE' : 'PROFIL';
 $fcontenu = 'SCONET_ID' . $separateur . 'SCONET_N°' . $separateur . 'REFERENCE' . $separateur . 'PROFIL' . $separateur . 'NOM' . $separateur . 'PRENOM' . $separateur . 'LOGIN' . $separateur . 'MOT DE PASSE' . $separateur . 'INFO' . "\r\n\r\n";
 foreach ($DB_TAB as $DB_ROW) {
示例#23
0
  // Récupérer la liste des classes
  $tab_groupe = array();
  $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes();
  foreach($DB_TAB as $DB_ROW)
  {
    $tab_groupe[$DB_ROW['groupe_id']] = array( 'ref'=>$DB_ROW['groupe_ref'] , 'nom'=>$DB_ROW['groupe_nom'] );
  }
  // Récupérer les données des élèves
  $champs = 'user_id, user_id_ent, user_id_gepi, user_sconet_id, user_sconet_elenoet, user_reference, user_genre, user_nom, user_prenom, user_naissance_date, user_login, eleve_classe_id';
  $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , 1 /*statut*/ , $tab_types[$groupe_type] , $groupe_id , 'alpha' /*eleves_ordre*/ , $champs );
  if(!empty($DB_TAB))
  {
    foreach($DB_TAB as $DB_ROW)
    {
      $date_fr = convert_date_mysql_to_french($DB_ROW['user_naissance_date']);
      $export_csv .= $DB_ROW['user_id']
        .$separateur.$DB_ROW['user_id_ent']
        .$separateur.$DB_ROW['user_id_gepi']
        .$separateur.$DB_ROW['user_sconet_id']
        .$separateur.$DB_ROW['user_sconet_elenoet']
        .$separateur.$DB_ROW['user_reference']
        .$separateur.$DB_ROW['user_login']
        .$separateur.Html::$tab_genre['enfant'][$DB_ROW['user_genre']]
        .$separateur.$DB_ROW['user_nom']
        .$separateur.$DB_ROW['user_prenom']
        .$separateur.$date_fr
        .$separateur.$tab_groupe[$DB_ROW['eleve_classe_id']]['ref']
        .$separateur.$tab_groupe[$DB_ROW['eleve_classe_id']]['nom']
        ."\r\n";
      $export_html .= '<tr>'
示例#24
0
            $tab_accueil['demandes']['contenu'] .= '<p>Vous avez <a href="./index.php?page=' . $page . '"><span class="b">' . $nb_etat_prof . ' demande' . $s . ' d\'évaluation' . $s . '</span></a> en cours de préparation.</p>';
        }
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// [saisies] - Notes à saisir (prof) ou auto-évaluations en cours (élèves)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER
if ($_SESSION['USER_PROFIL_TYPE'] == 'eleve') {
    $DB_TAB = DB_STRUCTURE_ELEVE::DB_lister_devoirs_eleve_avec_autoevaluation_en_cours($_SESSION['USER_ID'], $_SESSION['ELEVE_CLASSE_ID']);
    if (!empty($DB_TAB)) {
        $tab_accueil['saisies']['nombre'] = count($DB_TAB);
        $tab_accueil['saisies']['contenu'] = '<div class="b"><TG> ' . $tab_accueil['saisies']['masque'] . '</div>';
        $tab_accueil['saisies']['contenu'] .= '<ul class="puce p">';
        foreach ($DB_TAB as $DB_ROW) {
            $date_affich = convert_date_mysql_to_french($DB_ROW['devoir_date']);
            $tab_accueil['saisies']['contenu'] .= '<li>' . html($date_affich) . ' || <a href="./index.php?page=evaluation_voir&amp;devoir_id=' . $DB_ROW['devoir_id'] . '&amp;autoeval">' . html(afficher_identite_initiale($DB_ROW['prof_nom'], FALSE, $DB_ROW['prof_prenom'], TRUE, $DB_ROW['prof_genre'])) . ' || ' . html($DB_ROW['devoir_info']) . '</a></li>';
        }
        $tab_accueil['saisies']['contenu'] .= '</ul>';
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// [officiel] - Bilans officiels ouverts à la saisie (prof) ou à consulter (élèves / parents)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER - PARTIE PROF A DEVELOPPER
if ($_SESSION['USER_PROFIL_TYPE'] == 'eleve' || $_SESSION['USER_PROFIL_TYPE'] == 'parent' && $_SESSION['NB_ENFANTS'] > 0) {
    // Cette section reprend pas mal de code issu de la page [officiel_voir_archive.php]
    $tab_types = array('brevet' => array('droit' => 'FICHE_BREVET', 'titre' => 'Fiche brevet'), 'releve' => array('droit' => 'OFFICIEL_RELEVE', 'titre' => 'Relevé d\'évaluations'), 'bulletin' => array('droit' => 'OFFICIEL_BULLETIN', 'titre' => 'Bulletin scolaire'), 'palier1' => array('droit' => 'OFFICIEL_SOCLE', 'titre' => 'Maîtrise du palier 1'), 'palier2' => array('droit' => 'OFFICIEL_SOCLE', 'titre' => 'Maîtrise du palier 2'), 'palier3' => array('droit' => 'OFFICIEL_SOCLE', 'titre' => 'Maîtrise du palier 3'));
    $droit_voir_archives_pdf = FALSE;
    foreach ($tab_types as $BILAN_TYPE => $tab) {
        $droit_voir_archives_pdf = $droit_voir_archives_pdf || test_user_droit_specifique($_SESSION['DROIT_' . $tab['droit'] . '_VOIR_ARCHIVE']);
     $tab_groupe[$DB_ROW['groupe_id']] = '<th>' . html($DB_ROW['groupe_nom']) . '</th>';
 }
 // Récupérer la liste des périodes, dans l'ordre choisi par l'admin
 $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_periodes();
 if (!empty($DB_TAB)) {
     foreach ($DB_TAB as $DB_ROW) {
         $tab_periode[$DB_ROW['periode_id']] = '<th>' . html($DB_ROW['periode_nom']) . '</th>';
     }
     // Récupérer la liste des jointures
     $listing_groupes_id = implode(',', array_keys($tab_groupe));
     $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_jointure_groupe_periode($listing_groupes_id);
     $memo_groupe_id = 0;
     if (!empty($DB_TAB)) {
         foreach ($DB_TAB as $DB_ROW) {
             $date_affich_debut = convert_date_mysql_to_french($DB_ROW['jointure_date_debut']);
             $date_affich_fin = convert_date_mysql_to_french($DB_ROW['jointure_date_fin']);
             $tab_jointure[$DB_ROW['groupe_id']][$DB_ROW['periode_id']] = html($date_affich_debut) . ' ~ ' . html($date_affich_fin);
         }
     }
     // Fabrication du tableau résultant
     foreach ($tab_groupe as $groupe_id => $groupe_text) {
         foreach ($tab_periode as $periode_id => $periode_text) {
             $tab_groupe[$groupe_id] .= isset($tab_jointure[$groupe_id][$periode_id]) ? '<td>' . $tab_jointure[$groupe_id][$periode_id] . '</td>' : '<td class="hc">-</td>';
         }
     }
     // Affichage du tableau résultant
     echo '<table>' . NL;
     echo '<thead>' . NL;
     echo '<tr><td class="nu"></td>' . implode('', $tab_periode) . '</tr>' . NL;
     echo '</thead>' . NL;
     echo '<tbody>' . NL;
 $tab_bad[] = array('De ', 'de ', 'DE ');
 $tab_bon[] = '';
 $tab_bad[] = array('Maternelle', 'maternelle', 'MATERNELLE');
 $tab_bon[] = '';
 $tab_bad[] = array('Année', 'année', 'ANNÉE', 'Annee', 'annee', 'ANNEE');
 //
 // On passe les utilisateurs en revue : on mémorise leurs infos, les classes trouvées, les groupes trouvés
 //
 $tab_genre = array('' => 'I', 'M' => 'M', 'F' => 'F');
 foreach ($tab_lignes as $ligne_contenu) {
     $tab_elements = str_getcsv($ligne_contenu, $separateur);
     if (count($tab_elements) > $numero_max) {
         $nom = $tab_elements[$tab_numero_colonne['nom']];
         $prenom = $tab_elements[$tab_numero_colonne['prenom']];
         $genre = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre']]] : 'I';
         $birth_date = strpos($tab_elements[$tab_numero_colonne['birth_date']], '-') ? convert_date_mysql_to_french($tab_elements[$tab_numero_colonne['birth_date']]) : $tab_elements[$tab_numero_colonne['birth_date']];
         // Selon les fichiers, trouvé au format français ou mysql
         $niveau = $tab_elements[$tab_numero_colonne['niveau']];
         $classe = $tab_elements[$tab_numero_colonne['classe']];
         if ($nom != '' && $prenom != '' && $niveau != '' && $classe != '') {
             // Réduire la longueur du niveau et de la classe
             foreach ($tab_bon as $i => $bon) {
                 $niveau = str_replace($tab_bad[$i], $bon, $niveau);
                 $classe = str_replace($tab_bad[$i], $bon, $classe);
             }
             $niveau_ref = mb_substr(Clean::ref($niveau), 0, 8);
             $classe_nom = mb_substr('[' . $niveau_ref . '] ' . $classe, 0, 20);
             // On fait autant de classes que de groupes de niveaux par classes.
             $classe_ref = mb_substr(Clean::ref($niveau_ref . '_' . md5($niveau_ref . $classe)), 0, 8);
             $i_classe = 'i' . Clean::login($classe_ref);
             // 'i' car la référence peut être numérique (ex : 61) et cela pose problème que l'indice du tableau soit un entier (ajouter (string) n'y change rien) lors du array_multisort().
示例#27
0
    $releve_HTML .= !$make_graph ? '<div class="astuce">Cliquer sur <span class="toggle_plus"></span> / <span class="toggle_moins"></span> pour afficher / masquer le détail.' . $bouton_print_appr . $bouton_print_test . $bouton_import_csv . '</div>' . NL : '<div id="div_graphique"></div>' . NL;
    $separation = count($tab_eleve_infos) > 1 ? '<hr class="breakafter" />' . NL : '';
    // Légende identique pour tous les élèves car pas de codes de notation donc pas de codages spéciaux.
    $legende_html = $legende == 'oui' ? Html::legende(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, $make_officiel) : '';
    $width_barre = !$make_officiel ? 180 : 50;
    $width_texte = 900 - $width_barre;
}
if ($make_pdf) {
    $releve_PDF = new PDF_item_synthese($make_officiel, 'portrait', $marge_gauche, $marge_droite, $marge_haut, $marge_bas, $couleur, $fond, $legende, !empty($is_test_impression));
    $releve_PDF->initialiser($synthese_modele, $nb_lignes_total, $eleve_nb);
}
// Pour chaque élève...
foreach ($tab_eleve_infos as $eleve_id => $tab_eleve) {
    extract($tab_eleve);
    // $eleve_INE $eleve_nom $eleve_prenom $eleve_genre $date_naissance
    $date_naissance = $date_naissance ? convert_date_mysql_to_french($date_naissance) : '';
    if ($make_officiel) {
        // Quelques variables récupérées ici car pose pb si placé dans la boucle par destinataire
        $moyenne_generale_eleve_enregistree = isset($tab_saisie[$eleve_id][0][0]['note']) ? $tab_saisie[$eleve_id][0][0]['note'] : NULL;
        unset($tab_saisie[$eleve_id][0][0]);
        $is_appreciation_generale_enregistree = empty($tab_saisie[$eleve_id][0]) ? FALSE : TRUE;
        list($prof_id_appreciation_generale, $tab_appreciation_generale) = $is_appreciation_generale_enregistree ? each($tab_saisie[$eleve_id][0]) : array(0, array('prof_info' => '', 'appreciation' => ''));
    }
    foreach ($tab_destinataires[$eleve_id] as $numero_tirage => $tab_adresse) {
        // Si cet élève a été évalué...
        if (isset($tab_infos_acquis_eleve[$eleve_id])) {
            // Intitulé
            if ($make_html) {
                $releve_HTML .= !$make_officiel ? $separation . '<h2>' . html($groupe_nom . ' - ' . $eleve_nom . ' ' . $eleve_prenom) . '</h2>' . NL : '';
            }
            if ($make_pdf) {
     foreach ($tab_socle_eleve as $eleve_id => $tab_scores) {
         if ($tab_scores['nb']) {
             $tab_modif_cellule[$eleve_id][$socle_id]['html'] = round(50 * (($tab_scores['A'] * 2 + $tab_scores['VA']) / $tab_scores['nb']), 0);
         }
     }
 }
 // - - - - - - - - - - - - - - - - - - - - - - - - -
 // Récupérer la liste des jointures : validations d'entrées
 // - - - - - - - - - - - - - - - - - - - - - - - - -
 $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_entree($listing_eleve_id, $listing_entree_id, $domaine_id = 0, $pilier_id, $palier_id = 0);
 $tab_bad = array();
 $tab_bon = array();
 foreach ($DB_TAB as $DB_ROW) {
     $etat = $DB_ROW['validation_entree_etat'] ? 'Validé' : 'Invalidé';
     $tab_modif_cellule[$DB_ROW['user_id']][$DB_ROW['entree_id']]['class'] = ' class="v' . $DB_ROW['validation_entree_etat'] . '"';
     $tab_modif_cellule[$DB_ROW['user_id']][$DB_ROW['entree_id']]['title'] = ' title="' . $etat . ' le ' . convert_date_mysql_to_french($DB_ROW['validation_entree_date']) . ' par ' . html($DB_ROW['validation_entree_info']) . '"';
 }
 // - - - - - - - - - - - - - - - - - - - - - - - - -
 // Récupérer la liste des jointures : validations de piliers
 // - - - - - - - - - - - - - - - - - - - - - - - - -
 $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_pilier($listing_eleve_id, $pilier_id, $palier_id = 0);
 $tab_bad = array();
 $tab_bon = array();
 foreach ($DB_TAB as $DB_ROW) {
     if ($DB_ROW['validation_pilier_etat']) {
         foreach ($tab_pilier_entree[$pilier_id] as $entree_id) {
             $tab_modif_cellule[$DB_ROW['user_id']][$entree_id]['data_etat'] = ' data-etat="done"';
         }
     }
 }
 // Afficher le résultat après adaptation des cellules "centrales".
     <th>Login</th>
     <th>Mot de passe</th>
     <th>Courriel</th>
     <th>Date sortie</th>
     <th class="nu"><q class="ajouter" title="Ajouter un parent."></q></th>
   </tr>
 </thead>
 <tbody>
   <?php
   if(!empty($DB_TAB))
   {
     foreach($DB_TAB as $DB_ROW)
     {
       // Formater la date
       $date_mysql  = $DB_ROW['user_sortie_date'];
       $date_affich = ($date_mysql!=SORTIE_DEFAUT_MYSQL) ? convert_date_mysql_to_french($date_mysql) : '-' ;
       // Afficher une ligne du tableau
       echo'<tr id="id_'.$DB_ROW['user_id'].'">';
       echo  '<td class="nu"><input type="checkbox" name="f_ids" value="'.$DB_ROW['user_id'].'" /></td>';
       echo  ($DB_ROW['enfants_nombre']) ? '<td>'.$DB_ROW['enfants_nombre'].' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.str_replace('§BR§','<br />',html(html($DB_ROW['enfants_liste']))).'" /></td>' : '<td>0 <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="Aucun lien de responsabilité !" /></td>' ; // Volontairement 2 html() pour le title sinon &lt;* est pris comme une balise html par l'infobulle.
       echo  '<td class="label">'.html($DB_ROW['user_id_ent']).'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_id_gepi']).'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_sconet_id']).'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_sconet_elenoet']).'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_reference']).'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_profil_sigle']).' <img alt="" src="./_img/bulle_aide.png" width="16" height="16" title="'.$_SESSION['TAB_PROFILS_ADMIN']['TYPE'][$DB_ROW['user_profil_sigle']].'" /></td>';
       echo  '<td class="label">'.Html::$tab_genre['adulte'][$DB_ROW['user_genre']].'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_nom']).'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_prenom']).'</td>';
       echo  '<td class="label">'.html($DB_ROW['user_login']).'</td>';
       echo  '<td class="label i">champ crypté</td>';
 $tab_bon[] = '';    $tab_bad[] = array('De ','de ','DE ');
 $tab_bon[] = '';    $tab_bad[] = array('Maternelle','maternelle','MATERNELLE');
 $tab_bon[] = '';    $tab_bad[] = array('Année','année','ANNÉE','Annee','annee','ANNEE');
 //
 // On passe les utilisateurs en revue : on mémorise leurs infos, les classes trouvées, les groupes trouvés
 //
 $tab_genre = array( ''=>'I' , 'M'=>'M' , 'F'=>'F' );
 foreach ($tab_lignes as $ligne_contenu)
 {
   $tab_elements = str_getcsv($ligne_contenu,$separateur);
   if(count($tab_elements)>$numero_max)
   {
     $nom        = $tab_elements[$tab_numero_colonne['nom']   ];
     $prenom     = $tab_elements[$tab_numero_colonne['prenom']];
     $genre      = isset($tab_genre[$tab_elements[$tab_numero_colonne['genre']]]) ? $tab_genre[$tab_elements[$tab_numero_colonne['genre']]] : 'I' ;
     $birth_date = strpos($tab_elements[$tab_numero_colonne['birth_date']],'-') ? convert_date_mysql_to_french($tab_elements[$tab_numero_colonne['birth_date']]) : $tab_elements[$tab_numero_colonne['birth_date']] ; // Selon les fichiers, trouvé au format français ou mysql
     $niveau     = $tab_elements[$tab_numero_colonne['niveau']];
     $classe     = $tab_elements[$tab_numero_colonne['classe']];
     if( ($nom!='') && ($prenom!='') && ($niveau!='') && ($classe!='') )
     {
       // Réduire la longueur du niveau et de la classe
       foreach ($tab_bon as $i=>$bon)
       {
         $niveau = str_replace($tab_bad[$i],$bon,$niveau);
         $classe = str_replace($tab_bad[$i],$bon,$classe);
       }
       $niveau_ref = mb_substr(Clean::ref($niveau),0,8);
       $classe_nom = mb_substr('['.$niveau_ref.'] '.$classe,0,20); // On fait autant de classes que de groupes de niveaux par classes.
       $classe_ref = mb_substr(Clean::ref($niveau_ref.'_'.md5($niveau_ref.$classe)),0,8);
       $i_classe   = 'i'.Clean::login($classe_ref); // 'i' car la référence peut être numérique (ex : 61) et cela pose problème que l'indice du tableau soit un entier (ajouter (string) n'y change rien) lors du array_multisort().
       $tab_users_fichier['sconet_id'   ][] = 0;