}
    // Maintenant on complète avec les valeurs de la base
    $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_entree($liste_eleve, $listing_entree_id, $domaine_id = 0, $pilier_id = 0, $palier_id = 0);
    // 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);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
 * sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER.
 * Consultez la Licence Publique Générale GNU Affero pour plus de détails.
 * 
 * Vous devriez avoir reçu une copie de la Licence Publique Générale GNU Affero avec SACoche ;
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
$TITRE = html(Lang::_("Import / Export de validations du socle"));
?>

<?php 
// Test pour l'export
$nb_eleves_sans_sconet = DB_STRUCTURE_SOCLE::DB_compter_eleves_actuels_sans_id_sconet();
$s = $nb_eleves_sans_sconet > 1 ? 's' : '';
$test_uai = $_SESSION['WEBMESTRE_UAI'] ? TRUE : FALSE;
$test_cnil = intval(CNIL_NUMERO) && CNIL_DATE_ENGAGEMENT && CNIL_DATE_RECEPISSE ? TRUE : FALSE;
$test_id_sconet = !$nb_eleves_sans_sconet ? TRUE : FALSE;
$test_key_sesamath = $_SESSION['SESAMATH_KEY'] && $_SESSION['SESAMATH_ID'] ? TRUE : FALSE;
$webmestre_menu_uai = HEBERGEUR_INSTALLATION == 'multi-structures' ? '[Gestion des inscriptions] [Gestion des établissements]' : '[Paramétrages installation] [Identité de l\'installation]';
$webmestre_menu_cnil = '[Paramétrages installation] [Identité de l\'installation]';
$msg_uai = $test_uai ? '<label class="valide">Référence ' . html($_SESSION['WEBMESTRE_UAI']) . '</label>' : '<label class="erreur">Référence non renseignée par le webmestre.</label> <span class="manuel"><a class="pop_up" href="' . SERVEUR_DOCUMENTAIRE . '?fichier=support_webmestre__identite_installation">DOC</a></span>&nbsp;&nbsp;&nbsp;' . HtmlMail::to(WEBMESTRE_COURRIEL, 'SACoche - référence UAI', 'contact', 'Bonjour. La référence UAI de notre établissement (base n°' . $_SESSION['BASE'] . ') n\'est pas renseignée. Pouvez-vous faire le nécessaire depuis votre menu ' . $webmestre_menu_uai . ' ?');
$msg_cnil = $test_cnil ? '<label class="valide">Déclaration n°' . html(CNIL_NUMERO) . ' - demande effectuée le ' . html(CNIL_DATE_ENGAGEMENT) . ' - récépissé reçu le ' . html(CNIL_DATE_RECEPISSE) . '</label>' : '<label class="erreur">Déclaration non renseignée par le webmestre.</label> <span class="manuel"><a class="pop_up" href="' . SERVEUR_DOCUMENTAIRE . '?fichier=support_webmestre__identite_installation">DOC</a></span>&nbsp;&nbsp;&nbsp;' . HtmlMail::to(WEBMESTRE_COURRIEL, 'SACoche - Informations CNIL', 'contact', 'Bonjour. Les informations CNIL de l\'installation ' . URL_INSTALL_SACOCHE . ' ne sont pas renseignées. Pouvez-vous faire le nécessaire depuis votre menu ' . $webmestre_menu_cnil . ' ?');
$msg_id_sconet = $test_id_sconet ? '<label class="valide">Identifiants élèves présents.</label>' : '<label class="alerte">' . $nb_eleves_sans_sconet . ' élève' . $s . ' trouvé' . $s . ' sans identifiant Sconet.</label> <span class="manuel"><a class="pop_up" href="' . SERVEUR_DOCUMENTAIRE . '?fichier=support_administrateur__import_users_sconet">DOC</a></span>';
$msg_key_sesamath = $test_key_sesamath ? '<label class="valide">Etablissement identifié sur le serveur communautaire.</label>' : '<label class="erreur">Identification non effectuée par un administrateur.</label> <span class="manuel"><a class="pop_up" href="' . SERVEUR_DOCUMENTAIRE . '?fichier=support_administrateur__gestion_informations_structure">DOC</a></span>';
$bouton_export_lpc = $test_uai && $test_cnil && $test_key_sesamath ? 'id="bouton_export" class="fichier_export enabled"' : 'id="disabled_export" class="fichier_export" disabled';
?>

<?php 
Example #3
0
    }
    if( (!is_null($DB_ROW['section_id'])) && ($DB_ROW['section_id']!=$section_id) )
    {
      $section_id = $DB_ROW['section_id'];
      $tab_section[$pilier_id][$section_id] = $DB_ROW['pilier_ref'].'.'.$DB_ROW['section_ordre'].' - '.$DB_ROW['section_nom'];
    }
    if( (!is_null($DB_ROW['entree_id'])) && ($DB_ROW['entree_id']!=$socle_id) )
    {
      $socle_id = $DB_ROW['entree_id'];
      $tab_socle[$pilier_id][$section_id][$socle_id] = $DB_ROW['pilier_ref'].'.'.$DB_ROW['section_ordre'].'.'.$DB_ROW['entree_ordre'].' - '.$DB_ROW['entree_nom'];
    }
  }

  // Récupération des données des référentiels liés au socle
  $tab_jointure = array();
  $DB_TAB = DB_STRUCTURE_SOCLE::DB_recuperer_associations_entrees_socle();
  foreach($DB_TAB as $DB_ROW)
  {
    $tab_jointure[$DB_ROW['entree_id']][] = $DB_ROW['matiere_ref'].'.'.$DB_ROW['niveau_ref'].'.'.$DB_ROW['item_ref'].' - '.$DB_ROW['item_nom'];
  }

  // Elaboration de la sortie
  $export_csv .= $palier_nom."\r\n";
  $export_html .= '<ul class="ul_m1">'.NL;
  $export_html .=   '<li class="li_m1"><span>'.html($palier_nom).'</span>'.NL;
  $export_html .=     '<ul class="ul_n1">'.NL;
  foreach($tab_pilier as $pilier_id => $pilier_nom)
  {
    $export_csv .= $separateur.$pilier_nom."\r\n";
    $export_html .=       '<li class="li_n1"><span>'.html($pilier_nom).'</span>'.NL;
    $export_html .=         '<ul class="ul_n2">'.NL;
    {
      $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);
  list($rien,$eleve_id,$pilier_id) = explode('_',$string_infos);
  // Mettre à jour la base
  DB_STRUCTURE_SOCLE::DB_supprimer_validation('pilier',$eleve_id,$pilier_id);
  exit('OK');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////

exit('Erreur avec les données transmises !');
?>
Example #5
0
{

  // Période concernée
  $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'];

  // Rubriques concernées
  $tab_rubriques = array() ;
  if($OBJET=='modifier')
  {
    $DB_TAB = (in_array($BILAN_TYPE,array('releve','bulletin'))) ? DB_STRUCTURE_BILAN::DB_recuperer_matieres_travaillees( $classe_id , $liste_matiere_id , $date_mysql_debut , $date_mysql_fin , $_SESSION['USER_ID'] ) : DB_STRUCTURE_SOCLE::DB_recuperer_piliers( (int)substr($BILAN_TYPE,-1) );
    foreach($DB_TAB as $DB_ROW)
    {
      $tab_rubriques[$DB_ROW['rubrique_id']] = $DB_ROW['rubrique_nom'];
    }
  }
  else if($OBJET=='tamponner')
  {
    $tab_rubriques = array( 0 => 'Synthèse générale' ) ;
  }

  // Élèves concernés
  $DB_TAB = (!$is_sous_groupe) ? DB_STRUCTURE_COMMUN::DB_lister_users_regroupement( 'eleve' /*profil_type*/ , 1 /*statut*/ , 'classe' , $classe_id , 'alpha' /*eleves_ordre*/ ) : DB_STRUCTURE_COMMUN::DB_lister_eleves_classe_et_groupe($classe_id,$groupe_id) ;
  if(empty($DB_TAB))
  {
    exit('Aucun élève trouvé dans ce regroupement !');
        unset($tab_post[$key]);
    }
    // Il reste dans $tab_post les validations à ajouter (mises dans $tab_nouveau_ajouter) et les validations à ignorer (non effectuées par le formulaire)
    // On remplit $tab_nouveau_ajouter
    // Validation absente dans la base mais effectuée par le formulaire
    $tab_nouveau_ajouter = array_filter($tab_post, 'is_renseigne');
    // Sinon, validation absente dans la base et absente du formulaire : RAS
    // Il n'y a plus qu'à mettre à jour la base
    if (!count($tab_nouveau_ajouter) && !count($tab_nouveau_modifier) && !count($tab_nouveau_supprimer)) {
        exit('Aucune modification détectée !');
    }
    // L'information associée à la validation comporte le nom du validateur (c'est une information statique, conservée sur plusieurs années)
    $info = afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']);
    foreach ($tab_nouveau_ajouter as $key => $etat) {
        list($entree_id, $eleve_id) = explode('x', $key);
        DB_STRUCTURE_SOCLE::DB_ajouter_validation('entree', $eleve_id, $entree_id, $etat, TODAY_MYSQL, $info);
    }
    foreach ($tab_nouveau_modifier as $key => $etat) {
        list($entree_id, $eleve_id) = explode('x', $key);
        DB_STRUCTURE_SOCLE::DB_modifier_validation('entree', $eleve_id, $entree_id, $etat, TODAY_MYSQL, $info);
    }
    foreach ($tab_nouveau_supprimer as $key) {
        list($entree_id, $eleve_id) = explode('x', $key);
        DB_STRUCTURE_SOCLE::DB_supprimer_validation('entree', $eleve_id, $entree_id);
    }
    exit('OK');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
Example #7
0
  $DB_TAB = DB_STRUCTURE_SOCLE::DB_lister_jointure_user_entree($liste_eleve,$listing_entree_id,$domaine_id=0,$pilier_id=0,$palier_id=0); // 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);
         }
       }
     }
     // les validations d'items
     if(isset($tab_eleve_fichier['validations'][$i_fichier]['entree']))
     {
       foreach($tab_eleve_fichier['validations'][$i_fichier]['entree'] as $entree_id => $tab_infos_fichier)
       {
         if(!isset($tab_validations[$id_base]['entree'][$entree_id]))
         {
           DB_STRUCTURE_SOCLE::DB_ajouter_validation('entree',$id_base,$entree_id,$tab_infos_fichier['etat'],$tab_infos_fichier['date'],$tab_infos_fichier['info']);
           $nb_modifs++;
         }
         elseif($tab_validations[$id_base]['entree'][$entree_id]<$tab_infos_fichier['date'])
         {
           DB_STRUCTURE_SOCLE::DB_modifier_validation('entree',$id_base,$entree_id,$tab_infos_fichier['etat'],$tab_infos_fichier['date'],$tab_infos_fichier['info']);
           $nb_modifs++;
         }
       }
     }
     if($nb_modifs)
     {
       $s = ($nb_modifs>1) ? 's' : '' ;
       $lignes_modifier .= '<li><em>Modifié</em> ('.$nb_modifs.' import'.$s.' de validation'.$s.' ) : '.html($tab_eleve_base['nom'][$id_base].' '.$tab_eleve_base['prenom'][$id_base]).' ('.$tab_eleve_base['sconet_id'][$id_base].')</li>'.NL;
     }
     else
     {
       $lignes_inchanger .= '<li><em>Inchangé</em> (pas de validations nouvelles) : '.html($tab_eleve_base['nom'][$id_base].' '.$tab_eleve_base['prenom'][$id_base]).' ('.$tab_eleve_base['sconet_id'][$id_base].')</li>'.NL;
     }
   }
 }