Exemplo n.º 1
0
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'modifier_phpCAS' && $chemin_logs) {
    $chemin_logs = substr($chemin_logs, -1) == DS ? $chemin_logs : $chemin_logs . DS;
    // Vérifier chemin valide
    if (!is_dir($chemin_logs)) {
        exit('Chemin invalide (le dossier n\'existe pas) !');
    }
    // Tester droits en écriture
    if (!FileSystem::ecrire_fichier_si_possible($chemin_logs . 'debugcas_test_ecriture.txt', 'ok')) {
        exit('Droits en écriture dans le dossier insuffisants !');
    }
    FileSystem::supprimer_fichier($chemin_logs . 'debugcas_test_ecriture.txt');
    // Nettoyer la liste des établissements transmise
    if ($etabl_id_listing) {
        $tab_etabl_id = explode(',', $etabl_id_listing);
        $tab_etabl_id = Clean::map_entier($tab_etabl_id);
        $tab_etabl_id = array_filter($tab_etabl_id, 'positif');
        $etabl_id_listing = count($tab_etabl_id) ? ',' . implode(',', $tab_etabl_id) . ',' : '';
    }
    // ok
    FileSystem::fabriquer_fichier_hebergeur_info(array('PHPCAS_CHEMIN_LOGS' => $chemin_logs, 'PHPCAS_ETABL_ID_LISTING' => $etabl_id_listing));
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Effacer un fichier de logs de phpCAS
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'supprimer' && $fichier_logs) {
    FileSystem::supprimer_fichier(PHPCAS_CHEMIN_LOGS . $fichier_logs . '.txt', TRUE);
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
Exemplo n.º 2
0
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$OBJET       = (isset($_POST['f_objet']))       ? Clean::texte($_POST['f_objet'])       : '';
$ACTION      = (isset($_POST['f_action']))      ? Clean::texte($_POST['f_action'])      : '';
$BILAN_TYPE  = (isset($_POST['f_bilan_type']))  ? Clean::texte($_POST['f_bilan_type'])  : '';
$periode_id  = (isset($_POST['f_periode']))     ? Clean::entier($_POST['f_periode'])    : 0;
$classe_id   = (isset($_POST['f_classe']))      ? Clean::entier($_POST['f_classe'])     : 0;
$groupe_id   = (isset($_POST['f_groupe']))      ? Clean::entier($_POST['f_groupe'])     : 0;
$etape       = (isset($_POST['f_etape']))       ? Clean::entier($_POST['f_etape'])      : 0;
$page_parite = (isset($_POST['f_parite']))      ? Clean::entier($_POST['f_parite'])     : 0;
// Autres chaines spécifiques...
$listing_piliers  = (isset($_POST['f_listing_piliers']))  ? $_POST['f_listing_piliers']  : '' ;
$tab_pilier_id  = array_filter( Clean::map_entier( explode(',',$listing_piliers) ) , 'positif' );
$liste_pilier_id  = implode(',',$tab_pilier_id);
$listing_eleves = (isset($_POST['f_listing_eleves']))  ? $_POST['f_listing_eleves']  : '' ;
$tab_eleve_id   = array_filter( Clean::map_entier( explode(',',$listing_eleves) )  , 'positif' );
$liste_eleve_id = implode(',',$tab_eleve_id);

$is_sous_groupe = ($groupe_id) ? TRUE : FALSE ;

$tab_objet  = array('imprimer','voir_archive');
$tab_action = array('initialiser','imprimer');

$tab_types = array
(
  'releve'   => array( 'droit'=>'RELEVE'   , 'titre'=>'Relevé d\'évaluations' ) ,
  'bulletin' => array( 'droit'=>'BULLETIN' , 'titre'=>'Bulletin scolaire'     ) ,
  'palier1'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 1'  ) ,
  'palier2'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 2'  ) ,
  'palier3'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 3'  ) ,
);
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO && $_GET['action'] != 'initialiser') {
    exit('Action désactivée pour la démo...');
}
$action = isset($_GET['action']) ? $_GET['action'] : '';
$date_debut = isset($_POST['f_date_debut']) ? Clean::date_fr($_POST['f_date_debut']) : '';
$date_fin = isset($_POST['f_date_fin']) ? Clean::date_fr($_POST['f_date_fin']) : '';
// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_select_periodes = isset($_POST['select_periodes']) ? is_array($_POST['select_periodes']) ? $_POST['select_periodes'] : explode(',', $_POST['select_periodes']) : array();
$tab_select_classes_groupes = isset($_POST['select_classes_groupes']) ? is_array($_POST['select_classes_groupes']) ? $_POST['select_classes_groupes'] : explode(',', $_POST['select_classes_groupes']) : array();
$tab_select_periodes = array_filter(Clean::map_entier($tab_select_periodes), 'positif');
$tab_select_classes_groupes = array_filter(Clean::map_entier($tab_select_classes_groupes), 'positif');
$tab_groupe = array();
$tab_periode = array();
$tab_jointure = array();
$tab_graphique = array();
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Bilan des affectations des périodes aux classes & groupes ; en plusieurs requêtes pour récupérer les périodes sans classes-groupes et les classes-groupes sans périodes.
// 1/2 - On commence les premières requêtes dès maintenant afin d'avoir les noms des groupes et des périodes à disposition.
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupérer la liste des classes & groupes, dans l'ordre des niveaux
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_classes_et_groupes_avec_niveaux();
if (empty($DB_TAB)) {
    exit('Aucune classe et aucun groupe ne sont enregistrés !');
}
foreach ($DB_TAB as $DB_ROW) {
    $tab_groupe[$DB_ROW['groupe_id']] = $DB_ROW['groupe_nom'];
Exemplo n.º 4
0
    exit('Ce fichier ne peut être appelé directement !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des valeurs transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$BILAN_TYPE = isset($_POST['f_bilan_type']) ? Clean::texte($_POST['f_bilan_type']) : '';
$periode_id = isset($_POST['f_periode']) ? Clean::entier($_POST['f_periode']) : 0;
$classe_id = isset($_POST['f_classe']) ? Clean::entier($_POST['f_classe']) : 0;
$groupe_id = isset($_POST['f_groupe']) ? Clean::entier($_POST['f_groupe']) : 0;
// Autres chaines spécifiques...
$listing_matieres = isset($_POST['f_listing_matieres']) ? $_POST['f_listing_matieres'] : '';
$listing_piliers = isset($_POST['f_listing_piliers']) ? $_POST['f_listing_piliers'] : '';
$listing_rubriques = isset($_POST['f_listing_rubriques']) ? $_POST['f_listing_rubriques'] : '';
$tab_matiere_id = array_filter(Clean::map_entier(explode(',', $listing_matieres)), 'positif');
$tab_pilier_id = array_filter(Clean::map_entier(explode(',', $listing_piliers)), 'positif');
$tab_rubrique_id = Clean::map_entier(explode(',', $listing_rubriques));
// Pas de array_filter(...,'positif') car la valeur 0 est autorisée
$liste_matiere_id = implode(',', $tab_matiere_id);
$liste_pilier_id = implode(',', $tab_pilier_id);
$liste_rubrique_id = implode(',', $tab_rubrique_id);
$is_sous_groupe = $groupe_id ? TRUE : FALSE;
$tab_types = array('releve' => array('droit' => 'RELEVE', 'titre' => 'Relevé d\'évaluations'), 'bulletin' => array('droit' => 'BULLETIN', 'titre' => 'Bulletin scolaire'), 'palier1' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 1'), 'palier2' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 2'), 'palier3' => array('droit' => 'SOCLE', 'titre' => 'Maîtrise du palier 3'));
// On vérifie les paramètres
if (!isset($tab_types[$BILAN_TYPE]) || !$periode_id || !$classe_id || !count($tab_rubrique_id)) {
    exit('Erreur avec les données transmises !');
}
// On vérifie que le bilan est bien accessible en modification et on récupère les infos associées
$DB_ROW = DB_STRUCTURE_OFFICIEL::DB_recuperer_bilan_officiel_infos($classe_id, $periode_id, $BILAN_TYPE);
if (empty($DB_ROW)) {
    exit('Association classe / période introuvable !');
}
Exemplo n.º 5
0
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des valeurs transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$OBJET      = (isset($_POST['f_objet']))      ? Clean::texte($_POST['f_objet'])      : '';
$ACTION     = (isset($_POST['f_action']))     ? Clean::texte($_POST['f_action'])     : '';
$BILAN_TYPE = (isset($_POST['f_bilan_type'])) ? Clean::texte($_POST['f_bilan_type']) : '';
$mode       = (isset($_POST['f_mode']))       ? Clean::texte($_POST['f_mode'])       : '';
$periode_id = (isset($_POST['f_periode']))    ? Clean::entier($_POST['f_periode'])   : 0;
$classe_id  = (isset($_POST['f_classe']))     ? Clean::entier($_POST['f_classe'])    : 0;
$groupe_id  = (isset($_POST['f_groupe']))     ? Clean::entier($_POST['f_groupe'])    : 0;
$eleve_id   = (isset($_POST['f_user']))       ? Clean::entier($_POST['f_user'])      : 0;
// Autres chaines spécifiques...
$listing_piliers  = (isset($_POST['f_listing_piliers']))  ? $_POST['f_listing_piliers']  : '' ;
$tab_pilier_id  = array_filter( Clean::map_entier( explode(',',$listing_piliers) ) , 'positif' );
$liste_pilier_id  = implode(',',$tab_pilier_id);

$is_sous_groupe = ($groupe_id) ? TRUE : FALSE ;

$tab_action = array('initialiser','charger');

$tab_types = array
(
  'releve'   => array( 'droit'=>'RELEVE'   , 'titre'=>'Relevé d\'évaluations' ) ,
  'bulletin' => array( 'droit'=>'BULLETIN' , 'titre'=>'Bulletin scolaire'     ) ,
  'palier1'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 1'  ) ,
  'palier2'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 2'  ) ,
  'palier3'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 3'  ) ,
);
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$groupe_id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0;
$niveau = isset($_POST['f_niveau']) ? Clean::entier($_POST['f_niveau']) : 0;
$groupe_nom = isset($_POST['f_nom']) ? Clean::texte($_POST['f_nom']) : '';
// Contrôler la liste des élèves transmis
$tab_eleves = isset($_POST['f_eleve_liste']) ? explode('_', $_POST['f_eleve_liste']) : array();
$tab_eleves = Clean::map_entier($tab_eleves);
$tab_eleves = array_filter($tab_eleves, 'positif');
$nb_eleves = count($tab_eleves);
// Contrôler la liste des profs transmis
$tab_profs = isset($_POST['f_prof_liste']) ? explode('_', $_POST['f_prof_liste']) : array();
$tab_profs = Clean::map_entier($tab_profs);
$tab_profs = array_filter($tab_profs, 'positif');
$nb_profs = count($tab_profs);
// Si profs transmis, en retirer le responsable (si le responsable est le seul prof, rien n'est transmis)
$indice = NULL;
if (count($tab_profs)) {
    $indice = array_search($_SESSION['USER_ID'], $tab_profs);
    if ($indice === FALSE) {
        exit('Erreur : absent de la liste des collègues !');
    }
    unset($tab_profs[$indice]);
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Ajouter un nouveau groupe de besoin
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'ajouter' && $niveau && $groupe_nom && $nb_eleves) {
 * SACoche est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes 
 * de la “GNU Affero General Public License” telle que publiée par la Free Software Foundation :
 * soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * 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 !');
}
$tab_base_id = isset($_POST['f_listing_id']) ? array_filter(Clean::map_entier(explode(',', $_POST['f_listing_id'])), 'positif') : array();
$nb_bases = count($tab_base_id);
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
// "exporter" ou "importer_csv" ou "importer_zip" ou "importer"
$num = isset($_POST['num']) ? (int) $_POST['num'] : 0;
// Numéro de l'étape en cours
$max = isset($_POST['max']) ? (int) $_POST['max'] : 0;
// Nombre d'étapes à effectuer
if ($action == 'exporter' && $nb_bases || $action == 'importer_csv' || !isset($_SESSION['alea'])) {
    $_SESSION['datetime'] = date('Y-m-d_H-i-s');
    $_SESSION['alea'] = mt_rand();
    $_SESSION['tab_info'] = array();
}
$dossier_temp_sql = CHEMIN_DOSSIER_DUMP . $_SESSION['alea'] . '_sql' . DS;
// Pour les sql d'une base
$dossier_temp_zip = CHEMIN_DOSSIER_DUMP . $_SESSION['alea'] . '_zip' . DS;
 * 
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * 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 !');}
if(($_SESSION['SESAMATH_ID']==ID_DEMO)&&($_GET['action']!='initialiser')){exit('Action désactivée pour la démo...');}

$action         = (isset($_POST['f_action']))     ? $_POST['f_action']                 : '';
$eleve_id       = (isset($_POST['f_eleve_id']))   ? Clean::entier($_POST['f_eleve_id']) : 0 ;
$tab_parents_id = (isset($_POST['f_parents_id'])) ? Clean::map_entier( explode(',','0,'.$_POST['f_parents_id']) ) : array() ; // On ajoute "0," pour que les ids soient indexés sur 1;2;3;4 ($resp_legal_num)

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Modifier la liste des parents d'un élève
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='enregistrer_parents') && $eleve_id && (count($tab_parents_id)==5) )
{
  $tab_parents_id = array_filter($tab_parents_id,'non_zero');
  // supprimer les liens de responsabilité de l'élève concerné (il est plus simple de réinitialiser que de traiter les resp un par un puis de vérifier s'il n'en reste pas à supprimer...)
  DB_STRUCTURE_ADMINISTRATEUR::DB_supprimer_jointures_parents_for_eleves($eleve_id);
  // modifier les liens de responsabilité
  foreach($tab_parents_id as $resp_legal_num => $parent_id)
  {
    DB_STRUCTURE_ADMINISTRATEUR::DB_ajouter_jointure_parent_eleve($parent_id,$eleve_id,$resp_legal_num);
  }
Exemplo n.º 9
0
    exit;
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Enregistrer les notes pour chaque épreuve
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'enregistrer') {
    // Récupérer et contrôler les valeurs transmises épreuve par épreuve
    // Calculer au passage le total des points
    $tab_notes_transmises = array();
    $tab_notes_transmises[CODE_BREVET_EPREUVE_TOTAL] = array('note' => 'AB', 'matieres_id' => '');
    foreach ($tab_epreuve as $epreuve_code => $tab_infos) {
        extract($tab_infos);
        // $epreuve_*
        // Matières utilisées
        $tab_matieres_id = isset($_POST['check_' . $epreuve_code]) ? explode('-', $_POST['check_' . $epreuve_code]) : array();
        $tab_matieres_id = Clean::map_entier($tab_matieres_id);
        $tab_matieres_id = array_filter($tab_matieres_id, 'positif');
        $matieres_id = implode(',', $tab_matieres_id);
        if (!$matieres_id && $epreuve_obligatoire) {
            exit('Référentiel(s) manquant(s) ou incorrect(s) pour l\'épreuve "' . html($epreuve_nom) . '" !');
        }
        // Note
        $note_transmise = isset($_POST['note_' . $epreuve_code]) ? str_replace('v5', '.5', $_POST['note_' . $epreuve_code]) : NULL;
        if ($note_transmise === NULL || $note_transmise === '' && $epreuve_obligatoire) {
            exit('Note manquante pour l\'épreuve "' . html($epreuve_nom) . '" !');
        }
        if (is_numeric($note_transmise) && (ceilTo($note_transmise, 0.5) != $note_transmise || $note_transmise < 0 || $note_transmise > 20 || !$epreuve_note_chiffree)) {
            exit('Note ' . html($note_transmise) . ' invalide pour l\'épreuve "' . html($epreuve_nom) . '" !');
        }
        if (!is_numeric($note_transmise) && $note_transmise != '' && strpos($epreuve_code_speciaux, $note_transmise) === FALSE) {
            exit('Note ' . html($note_transmise) . ' invalide pour l\'épreuve "' . html($epreuve_nom) . '" !');
Exemplo n.º 10
0
  $groupe_type = 'eval';
  $groupe_id   = 0;
}

// Contrôler la liste des items transmis
$tab_id      = (isset($_POST['tab_id'])) ? explode(',',$_POST['tab_id']) : array() ;
$tab_id      = Clean::map_entier($tab_id);
$tab_id      = array_filter($tab_id,'positif');
// Contrôler la liste des items transmis
$tab_items   = (isset($_POST['f_compet_liste'])) ? explode('_',$_POST['f_compet_liste']) : array() ;
$tab_items   = Clean::map_entier($tab_items);
$tab_items   = array_filter($tab_items,'positif');
$nb_items    = count($tab_items);
// Contrôler la liste des élèves transmis (sur des élèves sélectionnés uniquement)
$tab_eleves  = (isset($_POST['f_eleve_liste']))  ? explode('_',$_POST['f_eleve_liste'])  : array() ;
$tab_eleves  = Clean::map_entier($tab_eleves);
$tab_eleves  = array_filter($tab_eleves,'positif');
$nb_eleves   = count($tab_eleves);
// Contrôler la liste des profs transmis
$tab_profs   = array();
$tab_droits  = array( 'v'=>'voir' , 's'=>'saisir' , 'm'=>'modifier' );
$profs_liste = (isset($_POST['f_prof_liste'])) ? $_POST['f_prof_liste'] : '' ;
$tmp_tab     = ($profs_liste) ? explode('_',$profs_liste) : array() ;
foreach($tmp_tab as $valeur)
{
  $droit   = $valeur{0};
  $id_prof = (int)substr($valeur,1);
  if( isset($tab_droits[$droit]) && ($id_prof>0) && ( ($action!='dupliquer') || ($id_prof!=$_SESSION['USER_ID']) ) )
  {
    $tab_profs[$id_prof] = $tab_droits[$droit];
  }
Exemplo n.º 11
0
  }
}
else
{
  $select_niveau .= '<option value="" disabled>Aucun niveau de classe n\'est choisi pour l\'établissement !</option>';
}

// Javascript
Layout::add( 'js_inline_before' , '// <![CDATA[' );
Layout::add( 'js_inline_before' , 'var select_niveau="'.str_replace('"','\"',$select_niveau).'";' );
Layout::add( 'js_inline_before' , '// ]]>' );

// Réception d'un formulaire depuis un tableau de synthèse bilan ou une évaluation
// Pas de passage par la page ajax.php, mais pas besoin ici de protection contre attaques type CSRF
$tab_users = ( isset($_POST['id_user']) && is_array($_POST['id_user']) ) ? $_POST['id_user'] : array() ;
$tab_users = Clean::map_entier($tab_users);
$tab_users = array_filter($tab_users,'positif');
$tab_users = array_unique($tab_users); // Car un envoi depuis une évaluation peut comporter plusieurs fois le même élève.
$nb_users  = count($tab_users);
$txt_users = ($nb_users) ? ( ($nb_users>1) ? $nb_users.' élèves' : $nb_users.' élève' ) : 'aucun' ;
$reception_todo = ($nb_users) ? 'true' : 'false' ;
Layout::add( 'js_inline_before' , 'var reception_todo        = '.$reception_todo.';' );
Layout::add( 'js_inline_before' , 'var reception_users_texte = "'.$txt_users.'";' );
Layout::add( 'js_inline_before' , 'var reception_users_liste = "'.implode('_',$tab_users).'";' );

?>

<ul class="puce">
  <li><span class="manuel"><a class="pop_up" href="<?php echo SERVEUR_DOCUMENTAIRE ?>?fichier=support_professeur__gestion_groupes_besoin">DOC : Gestion des groupes de besoin.</a></span></li>
  <li><span class="danger">Un groupe de besoin déjà utilisé lors d'une évaluation ne devrait pas être supprimé (sinon vous n'aurez plus accès aux saisies) !</span></li>
</ul>
Exemplo n.º 12
0
if(empty($DB_TAB_epreuves))
{
  exit('Erreur : série inconnue !');
}

// Test des paramètres des épreuves

$tab_choix_epreuve = array();
foreach($DB_TAB_epreuves as $DB_ROW)
{
  $epreuve = $DB_ROW['brevet_epreuve_code'];
  $recherche = (isset($_POST['f_'.$serie.'_'.$epreuve.'_recherche'])) ? Clean::entier($_POST['f_'.$serie.'_'.$epreuve.'_recherche']) : NULL ;
  $moyenne   = (isset($_POST['f_'.$serie.'_'.$epreuve.'_moyenne']))   ? Clean::entier($_POST['f_'.$serie.'_'.$epreuve.'_moyenne'])   : NULL ;
  $tab_matieres = (isset($_POST['f_'.$serie.'_'.$epreuve.'_matieres'])) ? explode(',',$_POST['f_'.$serie.'_'.$epreuve.'_matieres']) : array() ;
  $matieres = implode( ',' , array_filter( Clean::map_entier($tab_matieres) , 'positif' ) );
  if( ($recherche===NULL) || ($moyenne===NULL) || ( empty($matieres) && $DB_ROW['brevet_epreuve_obligatoire'] ) )
  {
    exit('Erreur : données manquante pour l\'épreuve "'.html($DB_ROW['brevet_epreuve_nom']).'" !');
  }
  $tab_choix_epreuve[$epreuve] = array( 'recherche'=>$recherche , 'moyenne'=>$moyenne , 'matieres'=>$matieres );
}

// Enregistrement
foreach($tab_choix_epreuve as $epreuve=>$tab_choix)
{
  DB_STRUCTURE_BREVET::DB_modifier_epreuve_choix( $serie , $epreuve , $tab_choix['recherche'] , $tab_choix['moyenne'] , $tab_choix['matieres'] );
}
exit('ok');

?>
Exemplo n.º 13
0
$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 . ' (' . $tab_precision_retroactif[$retroactif] . $precision_socle . ').';
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération de la liste des items travaillés durant la période choisie, pour les élèves selectionnés, pour la ou les matières ou les items indiqués ou le prof indiqué
// Récupération de la liste des matières travaillées
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($releve_modele == 'matiere') {
    $tab_item_infos = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_bilan($liste_eleve, $matiere_id, $only_socle, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme);
    $tab_matiere[$matiere_id] = array('matiere_nom' => $matiere_nom, 'matiere_nb_demandes' => DB_STRUCTURE_DEMANDE::DB_recuperer_demandes_autorisees_matiere($matiere_id));
} elseif ($releve_modele == 'multimatiere') {
    $matiere_id = -1;
    list($tab_item_infos, $tab_matiere) = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_bilan($liste_eleve, $matiere_id, $only_socle, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme);
} elseif ($releve_modele == 'selection') {
    $tab_compet_liste = isset($_POST['f_compet_liste']) ? explode('_', $_POST['f_compet_liste']) : array();
    $tab_compet_liste = Clean::map_entier($tab_compet_liste);
    $liste_compet = implode(',', $tab_compet_liste);
    list($tab_item_infos, $tab_matiere) = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_selection($liste_eleve, $liste_compet, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme);
    // Si les items sont issus de plusieurs matières, alors on les regroupe en une seule.
    if (count($tab_matiere) > 1) {
        $matiere_id = 0;
        $tab_matiere = array(0 => array('matiere_nom' => implode(' - ', $tab_matiere), 'matiere_nb_demandes' => NULL));
    } else {
        list($matiere_id, $matiere_nom) = each($tab_matiere);
        $tab_matiere = array($matiere_id => array('matiere_nom' => $matiere_nom, 'matiere_nb_demandes' => NULL));
    }
} elseif ($releve_modele == 'professeur') {
    list($tab_item_infos, $tab_matiere) = DB_STRUCTURE_BILAN::DB_recuperer_arborescence_professeur($liste_eleve, $prof_id, $only_socle, $date_mysql_debut, $date_mysql_fin, $aff_domaine, $aff_theme);
    // Si les items sont issus de plusieurs matières, alors on les regroupe en une seule.
    if (count($tab_matiere) > 1) {
        $matiere_id = 0;
if($action=='action_complementaire')
{
  // Récupération des données
  $action_groupe       = (isset($_POST['select_action_groupe']))                     ? Clean::texte($_POST['select_action_groupe'])                     : '';
  $granulosite         = (isset($_POST['select_action_groupe_modifier_objet']))      ? Clean::texte($_POST['select_action_groupe_modifier_objet'])      : '';
  $modifier_id         = (isset($_POST['select_action_groupe_modifier_id']))         ? Clean::texte($_POST['select_action_groupe_modifier_id'])         : '';
  $modifier_coef       = (isset($_POST['select_action_groupe_modifier_coef']))       ? Clean::entier($_POST['select_action_groupe_modifier_coef'])      : -1;
  $modifier_cart       = (isset($_POST['select_action_groupe_modifier_cart']))       ? Clean::entier($_POST['select_action_groupe_modifier_cart'])      : -1;
  $deplacer_id_initial = (isset($_POST['select_action_groupe_deplacer_id_initial'])) ? Clean::texte($_POST['select_action_groupe_deplacer_id_initial']) : '';
  $deplacer_id_final   = (isset($_POST['select_action_groupe_deplacer_id_final']))   ? Clean::texte($_POST['select_action_groupe_deplacer_id_final'])   : '';
  $groupe_nom_initial  = (isset($_POST['groupe_nom_initial']))                       ? Clean::texte($_POST['groupe_nom_initial'])                       : '';
  $groupe_nom_final    = (isset($_POST['groupe_nom_final']))                         ? Clean::texte($_POST['groupe_nom_final'])                         : '';
  list($matiere_id        ,$parent_id        ,$objet_id        ,$objet_ordre        ) = Clean::map_entier(explode('_',$modifier_id))         + array_fill(0,4,0); // Evite des NOTICE en initialisant les valeurs manquantes
  list($matiere_id_initial,$parent_id_initial,$objet_id_initial,$objet_ordre_initial) = Clean::map_entier(explode('_',$deplacer_id_initial)) + array_fill(0,4,0); // Evite des NOTICE en initialisant les valeurs manquantes
  list($matiere_id_final  ,$parent_id_final  ,$objet_id_final  ,$objet_ordre_final  ) = Clean::map_entier(explode('_',$deplacer_id_final))   + array_fill(0,4,0); // Evite des NOTICE en initialisant les valeurs manquantes
  // Vérification des données
  $tab_action_groupe   = array('modifier_coefficient','modifier_panier','deplacer_domaine','deplacer_theme');
  $test1 = ( ($action_groupe=='modifier_coefficient') && (in_array($granulosite,$tab_granulosite)) && ($matiere_id) && ($parent_id) && ($objet_id) && ($objet_ordre) && ($modifier_coef!=-1) ) ? TRUE : FALSE ;
  $test2 = ( ($action_groupe=='modifier_panier')      && (in_array($granulosite,$tab_granulosite)) && ($matiere_id) && ($objet_id) && ($objet_ordre) && ($modifier_cart!=-1) ) ? TRUE : FALSE ;
  $test3 = ( ($action_groupe=='deplacer_domaine')     && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ) ? TRUE : FALSE ;
  $test4 = ( ($action_groupe=='deplacer_theme')       && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ) ? TRUE : FALSE ;
  if( (!in_array($action_groupe,$tab_action_groupe)) || ( (!$test1) && (!$test2) && (!$test3) && (!$test4) ) )
  {
    exit('Erreur avec les données transmises !');
  }
  // cas 1/4 : modifier_coefficient
  if($action_groupe=='modifier_coefficient')
  {
    $test_modif = DB_STRUCTURE_REFERENTIEL::DB_modifier_referentiel_items( $granulosite , $matiere_id , $objet_id , 'coef' , $modifier_coef );
    $message = ($test_modif) ? 'ok' : 'Contenu inchangé ou items non trouvés !';
 * 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 !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO && $_GET['action'] != 'initialiser') {
    exit('Action désactivée pour la démo...');
}
$action = isset($_GET['action']) ? $_GET['action'] : '';
// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_eleve = isset($_POST['f_eleve']) ? is_array($_POST['f_eleve']) ? $_POST['f_eleve'] : explode(',', $_POST['f_eleve']) : array();
$tab_classe = isset($_POST['f_classe']) ? is_array($_POST['f_classe']) ? $_POST['f_classe'] : explode(',', $_POST['f_classe']) : array();
$tab_eleve = array_filter(Clean::map_entier($tab_eleve), 'positif');
$tab_classe = array_filter(Clean::map_entier($tab_classe), 'positif');
// Ajouter des élèves à des classes
if ($action == 'ajouter') {
    $classe_id = current($tab_classe);
    // un élève ne peut être affecté qu'à 1 seule classe : inutile de toutes les passer en revue
    foreach ($tab_eleve as $user_id) {
        DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $classe_id, 'classe', TRUE);
    }
} elseif ($action == 'retirer') {
    // on doit tout passer en revue car on ne sait pas si la classe de l'élève est dans la liste transmise
    foreach ($tab_eleve as $user_id) {
        foreach ($tab_classe as $classe_id) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $classe_id, 'classe', FALSE);
        }
    }
}
$groupe_id         = (isset($_POST['f_groupe']))            ? Clean::entier($_POST['f_groupe'])                : 0;
$groupe_type       = (isset($_POST['f_groupe_type']))       ? Clean::texte($_POST['f_groupe_type'])            : ''; // En vérité, ne sert pas ici.
$eleve_id          = (isset($_POST['f_eleve']))             ? Clean::entier($_POST['f_eleve'])                 : 0;
$periode_id        = (isset($_POST['f_periode']))           ? Clean::entier($_POST['f_periode'])               : 0;
$date_debut        = (isset($_POST['f_date_debut']))        ? Clean::date_fr($_POST['f_date_debut'])           : '';
$date_fin          = (isset($_POST['f_date_fin']))          ? Clean::date_fr($_POST['f_date_fin'])             : '';
$retroactif        = (isset($_POST['f_retroactif']))        ? Clean::calcul_retroactif($_POST['f_retroactif']) : '';
$only_socle        = (isset($_POST['f_restriction']))       ? 1                                                : 0;
$eleves_ordre      = (isset($_POST['f_eleves_ordre']))      ? Clean::texte($_POST['f_eleves_ordre'])           : ''; // En vérité, ne sert pas ici.
$echelle           = (isset($_POST['f_echelle']))           ? Clean::texte($_POST['f_echelle'])                : '';

// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_matiere = (isset($_POST['f_matieres']))     ? ( (is_array($_POST['f_matieres']))     ? $_POST['f_matieres']     : explode(',',$_POST['f_matieres'])     ) : array() ;
$tab_items   = (isset($_POST['f_compet_liste'])) ? ( (is_array($_POST['f_compet_liste'])) ? $_POST['f_compet_liste'] : explode('_',$_POST['f_compet_liste']) ) : array() ;
$tab_matiere = array_filter( Clean::map_entier($tab_matiere) , 'positif' );
$tab_items   = array_filter( Clean::map_entier($tab_items)   , 'positif' );
$liste_matiere_id = implode(',',$tab_matiere);
$liste_item_id    = implode(',',$tab_items);

// En cas de manipulation du formulaire (avec les outils de développements intégrés au navigateur ou un module complémentaire)...
if(in_array($_SESSION['USER_PROFIL_TYPE'],array('parent','eleve')))
{
  if(!test_user_droit_specifique($_SESSION['DROIT_RELEVE_MOYENNE_SCORE']))      { $indicateur = 'pourcentage_acquis'; }
  if(!test_user_droit_specifique($_SESSION['DROIT_RELEVE_POURCENTAGE_ACQUIS'])) { $indicateur = 'moyenne_scores'; }
  if(!test_user_droit_specifique($_SESSION['DROIT_RELEVE_ETAT_ACQUISITION']))   { $indicateur = ''; }
  $conversion_sur_20 = test_user_droit_specifique($_SESSION['DROIT_RELEVE_CONVERSION_SUR_20']) ? $conversion_sur_20 : 0 ;
  // Pour un élève on surcharge avec les données de session
  if($_SESSION['USER_PROFIL_TYPE']=='eleve')
  {
    $groupe_id = $_SESSION['ELEVE_CLASSE_ID'];
    $eleve_id  = $_SESSION['USER_ID'];
    exit('Ce fichier ne peut être appelé directement !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$famille_id = isset($_POST['f_famille']) ? Clean::entier($_POST['f_famille']) : 0;
$motclef = isset($_POST['f_motclef']) ? Clean::texte($_POST['f_motclef']) : '';
$id_avant = isset($_POST['f_id_avant']) ? Clean::entier($_POST['f_id_avant']) : 0;
$id_apres = isset($_POST['f_id_apres']) ? Clean::entier($_POST['f_id_apres']) : 0;
$id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0;
$ref = isset($_POST['f_ref']) ? Clean::ref($_POST['f_ref']) : '';
$nom = isset($_POST['f_nom']) ? Clean::texte($_POST['f_nom']) : '';
$nom_avant = isset($_POST['f_nom_avant']) ? Clean::texte($_POST['f_nom_avant']) : '';
$nom_apres = isset($_POST['f_nom_apres']) ? Clean::texte($_POST['f_nom_apres']) : '';
$tab_id = isset($_POST['tab_id']) ? Clean::map_entier(explode(',', $_POST['tab_id'])) : array();
$tab_id = array_filter($tab_id, 'positif');
sort($tab_id);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Afficher les matières partagées d'une famille donnée
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'recherche_matiere_famille' && $famille_id) {
    $DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_matieres_famille($famille_id);
    foreach ($DB_TAB as $DB_ROW) {
        $class = $DB_ROW['matiere_active'] ? 'ajouter_non' : 'ajouter';
        $title = $DB_ROW['matiere_active'] ? 'Matière déjà choisie.' : 'Ajouter cette matière.';
        echo '<li>' . html($DB_ROW['matiere_nom'] . ' (' . $DB_ROW['matiere_ref'] . ')') . '<q id="add_' . $DB_ROW['matiere_id'] . '" class="' . $class . '" title="' . $title . '"></q></li>';
    }
    exit;
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_user_item  = array();
// Récupérer et contrôler la liste des items transmis
$tab_ids = (isset($_POST['ids'])) ? explode(',',$_POST['ids']) : array() ;
if(count($tab_ids))
{
  foreach($tab_ids as $ids)
  {
    $tab_id = explode('x',$ids);
    $tab_demande_id[] = $tab_id[0];
    $tab_user_id[]    = $tab_id[1];
    $tab_item_id[]    = $tab_id[2];
    $tab_user_item[]  = (int)$tab_id[1].'x'.(int)$tab_id[2];
  }
  $tab_demande_id = array_filter( Clean::map_entier($tab_demande_id)            ,'positif');
  $tab_user_id    = array_filter( Clean::map_entier(array_unique($tab_user_id)) ,'positif');
  $tab_item_id    = array_filter( Clean::map_entier(array_unique($tab_item_id)) ,'positif');
}
$nb_demandes = count($tab_demande_id);
$nb_users    = count($tab_user_id);
$nb_items    = count($tab_item_id);

// Contrôler la liste des profs transmis
$tab_profs   = array();
$tab_droits  = array( 'v'=>'voir' , 's'=>'saisir' , 'm'=>'modifier' );
$profs_liste = (isset($_POST['f_prof_liste'])) ? $_POST['f_prof_liste'] : '' ;
$tmp_tab     = ($profs_liste) ? explode('_',$profs_liste) : array() ;
foreach($tmp_tab as $valeur)
{
  $droit   = $valeur{0};
  $id_prof = (int)substr($valeur,1);
  if( isset($tab_droits[$droit]) && ($id_prof>0) && ($id_prof!=$_SESSION['USER_ID']) )
Exemplo n.º 19
0
 * si ce n’est pas le cas, consultez : <http://www.gnu.org/licenses/>.
 * 
 */
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['f_action']) ? Clean::texte($_POST['f_action']) : '';
$selection_id = isset($_POST['f_id']) ? Clean::entier($_POST['f_id']) : 0;
$selection_nom = isset($_POST['f_nom']) ? Clean::texte($_POST['f_nom']) : '';
$origine = isset($_POST['f_origine']) ? Clean::texte($_POST['f_origine']) : '';
// Contrôler la liste des items transmis
$tab_items = isset($_POST['f_compet_liste']) ? explode('_', $_POST['f_compet_liste']) : array();
$tab_items = Clean::map_entier($tab_items);
$tab_items = array_filter($tab_items, 'positif');
$nb_items = count($tab_items);
// Contrôler la liste des profs transmis
$tab_profs = array();
$tab_droits = array('v' => 'voir', 'm' => 'modifier');
$profs_liste = isset($_POST['f_prof_liste']) ? $_POST['f_prof_liste'] : '';
$tmp_tab = $profs_liste ? explode('_', $profs_liste) : array();
foreach ($tmp_tab as $valeur) {
    $droit = $valeur[0];
    $id_prof = (int) substr($valeur, 1);
    if (isset($tab_droits[$droit]) && $id_prof > 0 && ($action != 'dupliquer' || $id_prof != $_SESSION['USER_ID'])) {
        $tab_profs[$id_prof] = $tab_droits[$droit];
    } else {
        $profs_liste = str_replace(array('_' . $valeur, $valeur . '_', $valeur), '', $profs_liste);
    }
 * 
 * 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 !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$action = isset($_POST['action']) ? $_POST['action'] : '';
$profil = isset($_POST['f_profil']) ? $_POST['f_profil'] : '';
// Avant c'était un tableau qui est transmis, mais à cause d'une limitation possible "suhosin" / "max input vars", on est passé à une concaténation en chaine...
$tab_user = isset($_POST['f_user']) ? is_array($_POST['f_user']) ? $_POST['f_user'] : explode(',', $_POST['f_user']) : array();
$tab_user = array_filter(Clean::map_entier($tab_user), 'positif');
$tab_profils = array('eleves', 'parents', 'professeurs', 'directeurs');
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Initialiser plusieurs noms d'utilisateurs élèves | parents | professeurs | directeurs
// Initialiser plusieurs mots de passe élèves | parents | professeurs | directeurs
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (($action == 'generer_login' || $action == 'generer_mdp' || $action == 'forcer_mdp_birth') && in_array($profil, $tab_profils) && count($tab_user)) {
    $prefixe = $profil != 'parents' ? 'user_' : 'parent_';
    // Nom sans extension des fichiers de sortie
    $fnom = 'identifiants_' . $_SESSION['BASE'] . '_' . $profil . '_' . fabriquer_fin_nom_fichier__date_et_alea();
    // La classe n'est affichée que pour l'élève
    $avec_info = $profil == 'eleves' ? 'classe' : ($profil == 'parents' ? 'enfant' : '');
    // ////////////////////////////////////////////////////////////////////////////////////////////////////
    // Initialiser plusieurs noms d'utilisateurs
    // ////////////////////////////////////////////////////////////////////////////////////////////////////
    if ($action == 'generer_login') {
$socle_appreciation_rubrique_modele = isset($_POST['f_socle_appreciation_rubrique_modele']) ? Clean::texte($_POST['f_socle_appreciation_rubrique_modele']) : '';
$socle_appreciation_generale_longueur = isset($_POST['f_socle_appreciation_generale_longueur']) ? Clean::entier($_POST['f_socle_appreciation_generale_longueur']) : 0;
$socle_appreciation_generale_report = isset($_POST['f_socle_appreciation_generale_report']) ? 1 : 0;
$socle_appreciation_generale_modele = isset($_POST['f_socle_appreciation_generale_modele']) ? Clean::texte($_POST['f_socle_appreciation_generale_modele']) : '';
$socle_ligne_supplementaire = isset($_POST['f_socle_check_supplementaire']) ? Clean::texte($_POST['f_socle_ligne_supplementaire']) : '';
$socle_assiduite = isset($_POST['f_socle_assiduite']) ? 1 : 0;
$socle_prof_principal = isset($_POST['f_socle_prof_principal']) ? 1 : 0;
$socle_only_presence = isset($_POST['f_socle_only_presence']) ? 1 : 0;
$socle_pourcentage_acquis = isset($_POST['f_socle_pourcentage_acquis']) ? 1 : 0;
$socle_etat_validation = isset($_POST['f_socle_etat_validation']) ? 1 : 0;
$socle_couleur = isset($_POST['f_socle_couleur']) ? Clean::texte($_POST['f_socle_couleur']) : '';
$socle_fond = isset($_POST['f_socle_fond']) ? Clean::texte($_POST['f_socle_fond']) : '';
$socle_legende = isset($_POST['f_socle_legende']) ? Clean::texte($_POST['f_socle_legende']) : '';
// Liste de matières transmises
$tab_matieres = isset($_POST['f_matiere_liste']) ? explode('_', $_POST['f_matiere_liste']) : array();
$tab_matieres = Clean::map_entier($tab_matieres);
$tab_matieres = array_filter($tab_matieres, 'positif');
$bulletin_moyenne_exception_matieres = implode(',', $tab_matieres);
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Traitement des formulaires "Relevé d'évaluations" + "Bulletin scolaire" + "État de maîtrise du socle"
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_variables = array('releve' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'retroactif', 'only_socle', 'etat_acquisition', 'moyenne_scores', 'pourcentage_acquis', 'conversion_sur_20', 'cases_nb', 'aff_coef', 'aff_socle', 'aff_domaine', 'aff_theme', 'couleur', 'fond', 'legende', 'pages_nb'), 'bulletin' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'retroactif', 'only_socle', 'fusion_niveaux', 'barre_acquisitions', 'acquis_texte_code', 'acquis_texte_nombre', 'moyenne_scores', 'conversion_sur_20', 'moyenne_classe', 'moyenne_generale', 'moyenne_exception_matieres', 'couleur', 'fond', 'legende'), 'socle' => array('appreciation_rubrique_longueur', 'appreciation_rubrique_report', 'appreciation_rubrique_modele', 'appreciation_generale_longueur', 'appreciation_generale_report', 'appreciation_generale_modele', 'ligne_supplementaire', 'assiduite', 'prof_principal', 'only_presence', 'pourcentage_acquis', 'etat_validation', 'couleur', 'fond', 'legende'));
if (isset($tab_variables[$objet])) {
    $tab_parametres = array();
    foreach ($tab_variables[$objet] as $option) {
        $variable_nom = $objet . '_' . $option;
        $variable_valeur = ${$variable_nom};
        // On modifie la session
        $_SESSION['OFFICIEL'][strtoupper($variable_nom)] = $variable_valeur;
        // Pour modifier dans la base
        $tab_parametres['officiel_' . $variable_nom] = $variable_valeur;
if (!defined('SACoche')) {
    exit('Ce fichier ne peut être appelé directement !');
}
if (!isset($STEP)) {
    exit('Ce fichier ne peut être appelé directement !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Étape 32 - Traitement des actions à effectuer sur les classes (sconet_professeurs_directeurs | sconet_eleves | base_eleves_eleves | factos_eleves | tableur_professeurs_directeurs | tableur_eleves)
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On récupère le fichier avec des infos sur les correspondances : $tab_liens_id_base['classes'] -> $tab_i_classe_TO_id_base ; $tab_liens_id_base['groupes'] -> $tab_i_groupe_TO_id_base ; $tab_liens_id_base['users'] -> $tab_i_fichier_TO_id_base
$tab_liens_id_base = load_fichier('liens_id_base');
$tab_i_classe_TO_id_base = $tab_liens_id_base['classes'];
$tab_i_groupe_TO_id_base = $tab_liens_id_base['groupes'];
$tab_i_fichier_TO_id_base = $tab_liens_id_base['users'];
// Récupérer les éléments postés
$tab_del = !empty($_POST['f_del']) ? Clean::map_entier(explode(',', $_POST['f_del'])) : array();
$tab_add = array();
$tab_tmp = !empty($_POST['f_add']) ? explode(',', $_POST['f_add']) : array();
if (count($tab_tmp)) {
    foreach ($tab_tmp as $add_infos) {
        list($i, $niv, $ref, $nom) = explode(']¤[', $add_infos);
        $tab_add[$i]['ref'] = Clean::ref($ref);
        $tab_add[$i]['nom'] = Clean::texte($nom);
        $tab_add[$i]['niv'] = Clean::entier($niv);
    }
}
// Ajouter des classes éventuelles
$nb_add = 0;
if (count($tab_add)) {
    foreach ($tab_add as $i => $tab) {
        if ($tab['ref'] && $tab['nom'] && $tab['niv']) {
// Actions complémentaires
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'action_complementaire') {
    // Récupération des données
    $action_groupe = isset($_POST['select_action_groupe']) ? Clean::texte($_POST['select_action_groupe']) : '';
    $granulosite = isset($_POST['select_action_groupe_modifier_objet']) ? Clean::texte($_POST['select_action_groupe_modifier_objet']) : '';
    $modifier_id = isset($_POST['select_action_groupe_modifier_id']) ? Clean::texte($_POST['select_action_groupe_modifier_id']) : '';
    $modifier_coef = isset($_POST['select_action_groupe_modifier_coef']) ? Clean::entier($_POST['select_action_groupe_modifier_coef']) : -1;
    $modifier_cart = isset($_POST['select_action_groupe_modifier_cart']) ? Clean::entier($_POST['select_action_groupe_modifier_cart']) : -1;
    $deplacer_id_initial = isset($_POST['select_action_groupe_deplacer_id_initial']) ? Clean::texte($_POST['select_action_groupe_deplacer_id_initial']) : '';
    $deplacer_id_final = isset($_POST['select_action_groupe_deplacer_id_final']) ? Clean::texte($_POST['select_action_groupe_deplacer_id_final']) : '';
    $groupe_nom_initial = isset($_POST['groupe_nom_initial']) ? Clean::texte($_POST['groupe_nom_initial']) : '';
    $groupe_nom_final = isset($_POST['groupe_nom_final']) ? Clean::texte($_POST['groupe_nom_final']) : '';
    list($matiere_id, $parent_id, $objet_id, $objet_ordre) = Clean::map_entier(explode('_', $modifier_id)) + array(0, 0, 0, 0);
    list($matiere_id_initial, $parent_id_initial, $objet_id_initial, $objet_ordre_initial) = Clean::map_entier(explode('_', $deplacer_id_initial)) + array(0, 0, 0, 0);
    list($matiere_id_final, $parent_id_final, $objet_id_final, $objet_ordre_final) = Clean::map_entier(explode('_', $deplacer_id_final)) + array(0, 0, 0, 0);
    // Vérification des données
    $tab_action_groupe = array('modifier_coefficient', 'modifier_panier', 'deplacer_domaine', 'deplacer_theme');
    $test1 = $action_groupe == 'modifier_coefficient' && in_array($granulosite, $tab_granulosite) && $matiere_id && $parent_id && $objet_id && $objet_ordre && $modifier_coef != -1 ? TRUE : FALSE;
    $test2 = $action_groupe == 'modifier_panier' && in_array($granulosite, $tab_granulosite) && $matiere_id && $objet_id && $objet_ordre && $modifier_cart != -1 ? TRUE : FALSE;
    $test3 = $action_groupe == 'deplacer_domaine' && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ? TRUE : FALSE;
    $test4 = $action_groupe == 'deplacer_theme' && $matiere_id_initial && $parent_id_initial && $objet_id_initial && $objet_ordre_initial && $parent_id_final && $matiere_id_final && $objet_id_final && $objet_ordre_final && $groupe_nom_initial && $groupe_nom_final ? TRUE : FALSE;
    if (!in_array($action_groupe, $tab_action_groupe) || !$test1 && !$test2 && !$test3 && !$test4) {
        exit('Erreur avec les données transmises !');
    }
    // cas 1/4 : modifier_coefficient
    if ($action_groupe == 'modifier_coefficient') {
        $test_modif = DB_STRUCTURE_REFERENTIEL::DB_modifier_referentiel_items($granulosite, $matiere_id, $objet_id, 'coef', $modifier_coef);
        $message = $test_modif ? 'ok' : 'Contenu inchangé ou items non trouvés !';
        exit($message);
    }
    exit('Ce fichier ne peut être appelé directement !');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Forcer des reports de notes par un prof
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_periode_eleves = isset($_POST['f_periode_eleves']) ? explode('_', $_POST['f_periode_eleves']) : '';
$tab_eleves_moyennes = isset($_POST['f_eleves_moyennes']) ? explode('x', $_POST['f_eleves_moyennes']) : '';
$rubrique_id = isset($_POST['f_rubrique']) ? Clean::entier($_POST['f_rubrique']) : 0;
$periode_id = count($tab_periode_eleves) ? $tab_periode_eleves[0] : 0;
// On vérifie les paramètres principaux
if (!$periode_id || !$rubrique_id || count($tab_periode_eleves) < 2 || !count($tab_eleves_moyennes) || $_SESSION['USER_PROFIL_TYPE'] != 'professeur' || !$_SESSION['OFFICIEL']['BULLETIN_MOYENNE_SCORES']) {
    exit('Erreur avec les données transmises !');
}
// On passe en revue les données
unset($tab_periode_eleves[0]);
$tab_eleve_id = array_filter(Clean::map_entier($tab_periode_eleves), 'positif');
$appreciation = 'Moyenne figée reportée par ' . afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']);
$nb_reports = 0;
foreach ($tab_eleves_moyennes as $eleve_moyenne) {
    list($eleve_id, $moyenne) = explode('_', $eleve_moyenne);
    $eleve_id = (int) $eleve_id;
    $note = round($moyenne, 1);
    // $tab_eleve_id contient la liste des élèves dont il faut changer les notes ; ce peut n'être qu'une intersection groupe x classe
    // $tab_eleves_moyennes contient les moyennes de tous les élèves du groupe ou de la classe
    if (in_array($eleve_id, $tab_eleve_id)) {
        DB_STRUCTURE_OFFICIEL::DB_modifier_bilan_officiel_saisie('bulletin', $periode_id, $eleve_id, $rubrique_id, 0, 'eleve', $note, $appreciation);
        $nb_reports++;
    }
}
// On affiche le résultat
if (!$nb_reports) {
Exemplo n.º 25
0
$palier_nom = isset($_POST['f_palier_nom']) ? Clean::texte($_POST['f_palier_nom']) : '';
$groupe_id = isset($_POST['f_groupe']) ? Clean::entier($_POST['f_groupe']) : 0;
$groupe_nom = isset($_POST['f_groupe_nom']) ? Clean::texte($_POST['f_groupe_nom']) : '';
$groupe_type = isset($_POST['f_groupe_type']) ? Clean::texte($_POST['f_groupe_type']) : '';
$couleur = isset($_POST['f_couleur']) ? Clean::texte($_POST['f_couleur']) : '';
$fond = isset($_POST['f_fond']) ? Clean::texte($_POST['f_fond']) : '';
$legende = isset($_POST['f_legende']) ? Clean::texte($_POST['f_legende']) : '';
$marge_min = isset($_POST['f_marge_min']) ? Clean::entier($_POST['f_marge_min']) : 0;
$eleves_ordre = isset($_POST['f_eleves_ordre']) ? Clean::texte($_POST['f_eleves_ordre']) : '';
// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_pilier_id = isset($_POST['f_pilier']) ? is_array($_POST['f_pilier']) ? $_POST['f_pilier'] : explode(',', $_POST['f_pilier']) : array();
$tab_eleve_id = isset($_POST['f_eleve']) ? is_array($_POST['f_eleve']) ? $_POST['f_eleve'] : explode(',', $_POST['f_eleve']) : array();
$tab_matiere_id = isset($_POST['f_matiere']) ? is_array($_POST['f_matiere']) ? $_POST['f_matiere'] : explode(',', $_POST['f_matiere']) : array();
$tab_pilier_id = array_filter(Clean::map_entier($tab_pilier_id), 'positif');
$tab_eleve_id = array_filter(Clean::map_entier($tab_eleve_id), 'positif');
$tab_matiere_id = array_filter(Clean::map_entier($tab_matiere_id), 'positif');
$memo_demande = count($tab_pilier_id) > 1 ? 'palier' : 'pilier';
$liste_eleve = implode(',', $tab_eleve_id);
if (!$palier_id || !$palier_nom || !$groupe_id || !$groupe_nom || !$groupe_type || !count($tab_eleve_id) || !count($tab_pilier_id) || !in_array($type, array('pourcentage', 'validation')) || !in_array($mode, array('auto', 'manuel')) || !$couleur || !$fond || !$legende || !$marge_min || !$eleves_ordre) {
    exit('Erreur avec les données transmises !');
}
Form::save_choix('releve_synthese_socle');
Erreur500::prevention_et_gestion_erreurs_fatales(TRUE, FALSE);
$tab_pilier = array();
// [pilier_id] => array(pilier_ref,pilier_nom,pilier_nb_entrees);
$tab_socle = array();
// [pilier_id][socle_id] => array(section_nom,socle_nom);
$tab_entree_id = array();
// [i] => entree_id
$tab_eleve_infos = array();
// [eleve_id] => array(eleve_nom,eleve_prenom,eleve_langue)
Exemplo n.º 26
0
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération des valeurs transmises
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$BILAN_TYPE   = (isset($_POST['f_bilan_type']))   ? Clean::texte($_POST['f_bilan_type'])   : '';
$periode_id   = (isset($_POST['f_periode']))      ? Clean::entier($_POST['f_periode'])     : 0;
$classe_id    = (isset($_POST['f_classe']))       ? Clean::entier($_POST['f_classe'])      : 0;
$groupe_id    = (isset($_POST['f_groupe']))       ? Clean::entier($_POST['f_groupe'])      : 0;
// Autres chaines spécifiques...
$listing_matieres  = (isset($_POST['f_listing_matieres']))  ? $_POST['f_listing_matieres']  : '' ;
$listing_piliers   = (isset($_POST['f_listing_piliers']))   ? $_POST['f_listing_piliers']   : '' ;
$listing_rubriques = (isset($_POST['f_listing_rubriques'])) ? $_POST['f_listing_rubriques'] : '' ;
$tab_matiere_id  = array_filter( Clean::map_entier( explode(',',$listing_matieres) ) , 'positif' );
$tab_pilier_id   = array_filter( Clean::map_entier( explode(',',$listing_piliers) )  , 'positif' );
$tab_rubrique_id = Clean::map_entier(explode(',',$listing_rubriques) ); // Pas de array_filter(...,'positif') car la valeur 0 est autorisée
$liste_matiere_id  = implode(',',$tab_matiere_id);
$liste_pilier_id   = implode(',',$tab_pilier_id);
$liste_rubrique_id = implode(',',$tab_rubrique_id);

$is_sous_groupe = ($groupe_id) ? TRUE : FALSE ;

$tab_types = array
(
  'releve'   => array( 'droit'=>'RELEVE'   , 'titre'=>'Relevé d\'évaluations' ) ,
  'bulletin' => array( 'droit'=>'BULLETIN' , 'titre'=>'Bulletin scolaire'     ) ,
  'palier1'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 1'  ) ,
  'palier2'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 2'  ) ,
  'palier3'  => array( 'droit'=>'SOCLE'    , 'titre'=>'Maîtrise du palier 3'  ) ,
);
Exemplo n.º 27
0
 * SACoche est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE :
 * 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 !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO) {
    exit('Action désactivée pour la démo...');
}
$tab_eleve = isset($_POST['f_eleve']) ? explode(',', $_POST['f_eleve']) : array();
$tab_eleve = array_filter(Clean::map_entier($tab_eleve), 'positif');
if (!count($tab_eleve)) {
    exit('Erreur avec les données transmises !');
}
$listing_eleve_id = implode(',', $tab_eleve);
// Récupérer les données élèves
$tab_eleves = array();
// [user_id] => array(nom,prenom,sconet_id) Ordonné par INE.
$DB_TAB = DB_STRUCTURE_BREVET::DB_lister_eleves_cibles_actuels_avec_INE($listing_eleve_id);
if (empty($DB_TAB)) {
    exit('Erreur : les élèves trouvés n\'ont pas d\'Identifiant National Élève (INE) ou sont anciens !');
}
foreach ($DB_TAB as $DB_ROW) {
    $tab_eleves[$DB_ROW['user_id']] = $DB_ROW['user_reference'];
}
// Récupérer les notes enregistrées ; convertir si besoin en nombre de points correspondants
// Supprimer une structure existante
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='supprimer') && $base_id )
{
  Webmestre::supprimer_multi_structure($base_id);
  exit('<ok>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer plusieurs structures existantes
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='supprimer') && $listing_base_id )
{
  $tab_base_id = array_filter( Clean::map_entier( explode(',',$listing_base_id) ) , 'positif' );
  foreach($tab_base_id as $base_id)
  {
    Webmestre::supprimer_multi_structure($base_id);
  }
  exit('<ok>');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Bloquer les accès à une structure
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='bloquer') && $base_id )
{
  LockAcces::bloquer_application($_SESSION['USER_PROFIL_TYPE'],$base_id,'Action ciblée ; contacter le webmestre pour obtenir des précisions.');
  exit('<img class="debloquer" src="./_img/etat/acces_non.png" title="Débloquer cet établissement." />');
Exemplo n.º 29
0
$profils_impression_pdf = 'administrateurs (de l\'établissement)<br />' . afficher_profils_droit_specifique($_SESSION['DROIT_FICHE_BREVET_IMPRESSION_PDF'], 'br');
// Indication des profils ayant accès aux copies des impressions PDF
$profils_archives_pdf = 'administrateurs (de l\'établissement)<br />' . afficher_profils_droit_specifique($_SESSION['DROIT_FICHE_BREVET_VOIR_ARCHIVE'], 'br');
// Droit de modifier le statut d'une fiche brevet (dans le cas PP, restera à affiner classe par classe...).
$affichage_formulaire_statut = $_SESSION['USER_PROFIL_TYPE'] == 'administrateur' || test_user_droit_specifique($_SESSION['DROIT_FICHE_BREVET_MODIFIER_STATUT']);
$tab_etats = array('1vide' => 'Vide (fermé)', '2rubrique' => 'Saisies Profs', '3mixte' => 'Saisies Mixtes', '4synthese' => 'Saisie Synthèse', '5complet' => 'Complet (fermé)');
$annee_session_brevet = annee_session_brevet();
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupération et traitement des données postées, si formulaire soumis
// Pas de passage par la page ajax.php => protection contre attaques type CSRF ajoutée ici
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($affichage_formulaire_statut && $_SESSION['SESAMATH_ID'] != ID_DEMO) {
    $tab_ids = isset($_POST['classe_ids']) ? explode(',', $_POST['classe_ids']) : array();
    $new_etat = isset($_POST['etat']) ? Clean::texte($_POST['etat']) : '';
    $discret = isset($_POST['mode_discret']) ? TRUE : FALSE;
    $tab_ids = array_intersect(array_filter(Clean::map_entier($tab_ids), 'positif'), $tab_classes_concernees);
    if (count($tab_ids) && isset($tab_etats[$new_etat])) {
        Session::verifier_jeton_anti_CSRF($PAGE);
        // Concernant les notifications, on liste déjà s'il y a des utilisateurs qui s'y seraient abonnés
        $abonnement_ref = 'fiche_brevet_statut';
        $abonnes_nb = 0;
        if (!$discret && in_array($new_etat, array('2rubrique', '3mixte', '4synthese'))) {
            $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_avec_informations($abonnement_ref);
            $abonnes_nb = count($DB_TAB);
            if ($abonnes_nb) {
                $tab_abonnes = array();
                $tab_profils = array();
                // On récupère les infos au passage
                foreach ($DB_TAB as $DB_ROW) {
                    $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable';
                    $tab_abonnes[$DB_ROW['user_id']] = array('statut' => $notification_statut, 'mailto' => $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>', 'courriel' => $DB_ROW['user_email'], 'contenu' => '');
 * 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 !');
}
if ($_SESSION['SESAMATH_ID'] == ID_DEMO && $_GET['action'] != 'initialiser') {
    exit('Action désactivée pour la démo...');
}
$action = isset($_GET['action']) ? $_GET['action'] : '';
// Normalement ce sont des tableaux qui sont transmis, mais au cas où...
$tab_eleve = isset($_POST['f_eleve']) ? is_array($_POST['f_eleve']) ? $_POST['f_eleve'] : explode(',', $_POST['f_eleve']) : array();
$tab_groupe = isset($_POST['f_groupe']) ? is_array($_POST['f_groupe']) ? $_POST['f_groupe'] : explode(',', $_POST['f_groupe']) : array();
$tab_eleve = array_filter(Clean::map_entier($tab_eleve), 'positif');
$tab_groupe = array_filter(Clean::map_entier($tab_groupe), 'positif');
// Ajouter des élèves à des groupes
if ($action == 'ajouter') {
    foreach ($tab_eleve as $user_id) {
        foreach ($tab_groupe as $groupe_id) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $groupe_id, 'groupe', TRUE);
        }
    }
} elseif ($action == 'retirer') {
    foreach ($tab_eleve as $user_id) {
        foreach ($tab_groupe as $groupe_id) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_user_groupe_par_admin($user_id, 'eleve', $groupe_id, 'groupe', FALSE);
        }
    }
}
// Affichage du bilan des affectations des élèves dans les groupes ; en deux requêtes pour récupérer les élèves sans groupes et les groupes sans élèves