function notifications_referentiel_edition($matiere_id, $notification_contenu)
{
    $abonnement_ref = 'referentiel_edition';
    $listing_profs = DB_STRUCTURE_REFERENTIEL::DB_recuperer_autres_professeurs_matiere($matiere_id, $_SESSION['USER_ID']);
    if ($listing_profs) {
        $listing_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_listing_id($abonnement_ref, $listing_profs);
        if ($listing_abonnes) {
            $tab_abonnes = explode(',', $listing_abonnes);
            foreach ($tab_abonnes as $abonne_id) {
                DB_STRUCTURE_NOTIFICATION::DB_modifier_log_attente($abonne_id, $abonnement_ref, 0, NULL, $notification_contenu, 'compléter', FALSE);
            }
        }
    }
}
            foreach ($DB_TAB as $DB_ROW) {
                $tab_prof_id[] = $DB_ROW['user_id'];
                RSS::modifier_fichier_prof($DB_ROW['user_id'], $titre, $texte, $guid);
            }
        }
    }
    // Notifications (rendues visibles ultérieurement) ; on récupère des données conçues pour le flux RSS ($texte , $tab_prof_id)
    $abonnement_ref = 'demande_evaluation_eleve';
    $listing_profs = $prof_id ? $prof_id : (!empty($tab_prof_id) ? implode(',', $tab_prof_id) : NULL);
    if ($listing_profs) {
        $listing_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_listing_id($abonnement_ref, $listing_profs);
        if ($listing_abonnes) {
            $notification_contenu = $texte;
            $tab_abonnes = explode(',', $listing_abonnes);
            foreach ($tab_abonnes as $abonne_id) {
                DB_STRUCTURE_NOTIFICATION::DB_modifier_log_attente($abonne_id, $abonnement_ref, 0, NULL, $notification_contenu, 'compléter', TRUE);
            }
        }
    }
    // Affichage du retour
    $nb_demandes_formulees++;
    $nb_demandes_possibles--;
    $s = $nb_demandes_possibles > 1 ? 's' : '';
    echo '<label class="valide">Votre demande a été ajoutée.</label><br />';
    echo $nb_demandes_possibles == 0 ? 'Vous ne pouvez plus formuler d\'autres demandes pour cette matière.' : 'Vous pouvez encore formuler ' . $nb_demandes_possibles . ' demande' . $s . ' pour cette matière.';
    exit;
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (empty($_POST)) {
    echo '<td>{{NIVEAU_NOM}}</td>';
    echo '<td>' . html($groupe_nom) . '</td>';
    echo '<td>' . $eleves_texte . '</td>';
    echo '<td>' . $profs_texte . '</td>';
    echo '<td class="nu">';
    echo '<q class="modifier" title="Modifier ce groupe de besoin."></q>';
    echo '<q class="supprimer" title="Supprimer ce groupe de besoin."></q>';
    echo '</td>';
    echo '<SCRIPT>';
    echo 'tab_eleves["' . $groupe_id . '"]="' . implode('_', $tab_eleves) . '";';
    echo 'tab_profs["' . $groupe_id . '"]="' . implode('_', $tab_profs) . '";';
    exit;
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un groupe de besoin existant
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'supprimer' && $groupe_id && $groupe_nom) {
    // Effacer l'enregistrement
    DB_STRUCTURE_PROFESSEUR::DB_supprimer_groupe_par_prof($groupe_id, 'besoin', TRUE);
    // Log de l'action
    SACocheLog::ajouter('Suppression du regroupement "' . $groupe_nom . '" (besoin n°' . $groupe_id . '), et donc des devoirs associés.');
    // Notifications (rendues visibles ultérieurement)
    $notification_contenu = date('d-m-Y H:i:s') . ' ' . $_SESSION['USER_PRENOM'] . ' ' . $_SESSION['USER_NOM'] . ' a supprimé son regroupement "' . $groupe_nom . '" (besoin n°' . $groupe_id . '), et donc les devoirs associés.' . "\r\n";
    DB_STRUCTURE_NOTIFICATION::enregistrer_action_sensible($notification_contenu);
    // Afficher le retour
    exit('<td>ok</td>');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là !
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
 // Comme si les requêtes de DB_creer_remplir_tables_structure() étaient en cache, et pas encore toutes passées (parcequ'au final, quand on va voir la base, toutes les tables sont bien là).
 // Est-ce que c'est possible au vu du fonctionnement de la classe de connexion ? Et, bien sûr, y a-t-il quelque chose à faire pour éviter ce problème ?
 // En attendant une réponse de SebR, j'ai mis ce sleep(1)... sans trop savoir si cela pouvait aider...
 @sleep(1);
 // Personnaliser certains paramètres de la structure
 $tab_parametres = array();
 $tab_parametres['version_base']               = VERSION_BASE_STRUCTURE;
 $tab_parametres['webmestre_uai']              = $uai;
 $tab_parametres['webmestre_denomination']     = $denomination;
 $tab_parametres['etablissement_denomination'] = $denomination;
 DB_STRUCTURE_COMMUN::DB_modifier_parametres($tab_parametres);
 // Insérer le compte administrateur dans la base de cette structure
 $password = fabriquer_mdp();
 $user_id = DB_STRUCTURE_COMMUN::DB_ajouter_utilisateur( 0 /*user_sconet_id*/ , 0 /*user_sconet_elenoet*/ , '' /*reference*/ , 'ADM' , 'I' /*user_genre*/ , $contact_nom , $contact_prenom , NULL /*user_naissance_date*/ , $contact_courriel , 'user' /*user_email_origine*/ , 'admin' /*login*/ , crypter_mdp($password) , 0 /*classe_id*/ , '' /*id_ent*/ , '' /*id_gepi*/ );
 // Pour les admins, abonnement obligatoire aux contacts effectués depuis la page d'authentification
 DB_STRUCTURE_NOTIFICATION::DB_ajouter_abonnement( $user_id , 'contact_externe' , 'accueil' );
 // Envoyer un courriel au contact et / ou une copie du courriel au webmestre
 $courriel_contenu = ( $courriel_envoi || $courriel_copie ) ? Webmestre::contenu_courriel_inscription( $base_id , $denomination , $contact_nom , $contact_prenom , 'admin' , $password , URL_DIR_SACOCHE ) : '' ;
 $courriel_titre   = ( $courriel_envoi || $courriel_copie ) ? 'Création compte - Inscription n°'.$base_id : '' ;
 if($courriel_envoi)
 {
   $courriel_bilan = Sesamail::mail( $contact_courriel , $courriel_titre , $courriel_contenu );
   if(!$courriel_bilan)
   {
     exit('Erreur lors de l\'envoi du courriel !');
   }
 }
 if($courriel_copie)
 {
   $introduction = '================================================================================'."\r\n".'Copie pour information du courriel adressé à '.$contact_courriel."\r\n".'================================================================================'."\r\n\r\n";
   $courriel_bilan = Sesamail::mail( WEBMESTRE_COURRIEL , $courriel_titre , $introduction.$courriel_contenu );
Esempio n. 5
0
        $tab_accueil['user']['masque'] = NULL;
    } else {
        if (HEBERGEUR_INSTALLATION == 'multi-structures') {
            $tab_accueil['user']['contenu'] .= '<div>Adresse à utiliser pour une sélection automatique de l\'établissement&nbsp;: <b>' . URL_DIR_SACOCHE . '?base=' . $_SESSION['BASE'] . '</b></div>';
        }
        if ($_SESSION['CONNEXION_MODE'] != 'normal') {
            $get_base = $_SESSION['BASE'] ? '=' . $_SESSION['BASE'] : '';
            $tab_accueil['user']['contenu'] .= '<div>Adresse à utiliser pour une connexion automatique avec l\'authentification externe&nbsp;: <b>' . URL_DIR_SACOCHE . '?sso' . $get_base . '</b></div>';
        }
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// [notifications] - Indication du nombre de notifications en attente
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if (!in_array($_SESSION['USER_PROFIL_TYPE'], array('webmestre', 'developpeur', 'partenaire'))) {
    $nb_notifications_non_vues = DB_STRUCTURE_NOTIFICATION::DB_compter_notifications_non_vues($_SESSION['USER_ID']);
    if ($nb_notifications_non_vues) {
        $s = $nb_notifications_non_vues > 1 ? 's' : '';
        $tab_accueil['notifications']['contenu'] .= '<div class="b">' . html(Lang::_("Notifications à consulter")) . '</div>';
        $tab_accueil['notifications']['contenu'] .= '<p>Vous avez <a href="./index.php?page=consultation_notifications"><span class="b">' . $nb_notifications_non_vues . ' notification' . $s . '</span></a> non vue' . $s . '.</p>';
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// [messages] & [ecolo] - Panneau d'informations (message d'autres utilisateurs) ou message écolo
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($_SESSION['USER_PROFIL_TYPE'] == 'professeur') {
} else {
    if (!in_array($_SESSION['USER_PROFIL_TYPE'], array('webmestre', 'developpeur', 'partenaire'))) {
        $DB_TAB = DB_STRUCTURE_COMMUN::DB_lister_messages_user_destinataire($_SESSION['USER_ID']);
        if (!empty($DB_TAB)) {
            foreach ($DB_TAB as $key => $DB_ROW) {
<table id="table_notifications" class="form hsort">
  <thead>
    <tr>
      <th>Date</th>
      <th>Statut</th>
      <th>Objet</th>
      <th>Contenu</th>
      <th class="nu"></th>
    </tr>
  </thead>
  <tbody>
    <?php
    // Javascript
    Layout::add( 'js_inline_before' , 'var tab_notif_contenu  = new Array();' );
    // Lister les notifications qu'un utilisateur peut consulter
    $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_notifications_consultables_for_user( $_SESSION['USER_ID'] );
    if(!empty($DB_TAB))
    {
      Layout::add( 'js_inline_before' , '// <![CDATA[' );
      foreach($DB_TAB as $DB_ROW)
      {
        $class = ($DB_ROW['notification_statut']=='consultable') ? ' class="new"' : '' ;
        $datetime_affich = convert_datetime_mysql_to_french($DB_ROW['notification_date']);
        // Afficher une ligne du tableau
        echo'<tr id="id_'.$DB_ROW['notification_id'].'"'.$class.'>';
        echo  '<td>'.$datetime_affich.'</td>';
        echo  '<td>'.$DB_ROW['notification_statut'].'</td>';
        echo  '<td>'.$DB_ROW['abonnement_objet'].'</td>';
        echo  '<td class="i">'.html(afficher_texte_tronque($DB_ROW['notification_contenu'],60)).'</td>';
        echo  '<td class="nu">';
        echo    '<q class="voir" title="Consulter la notification complète."></q>';
Esempio n. 7
0
        // On passe au traitement des données reçues
        $auteur = afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']);
        foreach ($tab_ids as $classe_id) {
            $is_modif = DB_STRUCTURE_BREVET::DB_modifier_brevet_classe_etat($classe_id, $new_etat);
            if ($is_modif && $abonnes_nb && isset($tab_profs_par_classe[$classe_id])) {
                $texte = 'Statut [' . $tab_etats[$new_etat] . '] appliqué par ' . $auteur . ' à [Fiches brevet] [Session ' . $annee_session_brevet . '] [' . $tab_classes[$classe_id] . '].' . "\r\n";
                foreach ($tab_profs_par_classe[$classe_id] as $user_id) {
                    $tab_abonnes[$user_id]['contenu'] .= $texte;
                }
            }
        }
        // On termine par le log et l'envoi des notifications
        if ($abonnes_nb) {
            foreach ($tab_abonnes as $user_id => $tab) {
                if ($tab['contenu']) {
                    DB_STRUCTURE_NOTIFICATION::DB_ajouter_log_visible($user_id, $abonnement_ref, $tab['statut'], $tab['contenu']);
                    if ($tab['statut'] == 'envoyée') {
                        $tab['contenu'] .= Sesamail::texte_pied_courriel(array('no_reply', 'notif_individuelle', 'signature'), $tab['courriel']);
                        $courriel_bilan = Sesamail::mail($tab['mailto'], 'Notification - Bilan officiel, étape de saisie', $tab['contenu'], $tab['mailto']);
                    }
                }
            }
        }
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Récupérer l'état de la fiche brevet des classes concernées
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_classe_etat = array();
$DB_TAB = DB_STRUCTURE_BREVET::DB_lister_brevet_classes_editables_etat($listing_classes_concernees);
foreach ($DB_TAB as $DB_ROW) {
        }
    }
} elseif ($action == 'retirer') {
    $notification_contenu = '';
    $notification_intro = date('d-m-Y H:i:s') . ' ' . $_SESSION['USER_PRENOM'] . ' ' . $_SESSION['USER_NOM'];
    foreach ($tab_select_periodes as $periode_id) {
        foreach ($tab_select_classes_groupes as $groupe_id) {
            DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_liaison_groupe_periode($groupe_id, $periode_id, FALSE);
            // Log de l'action
            SACocheLog::ajouter('Suppression de l\'association période "' . $tab_periode[$periode_id] . '" (n°' . $periode_id . ') / regroupement "' . $tab_groupe[$groupe_id] . '" (n°' . $groupe_id . '), et donc des bilans officiels associés.');
            $notification_contenu .= $notification_intro . ' a supprimé l\'association période "' . $tab_periode[$periode_id] . '" (n°' . $periode_id . ') / regroupement "' . $tab_groupe[$groupe_id] . '" (n°' . $groupe_id . '), et donc les bilans officiels associés.' . "\r\n";
        }
    }
    // Notifications (rendues visibles ultérieurement)
    if ($notification_contenu) {
        DB_STRUCTURE_NOTIFICATION::enregistrer_action_admin($notification_contenu, $_SESSION['USER_ID']);
    }
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// 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.
// 2/2 - On poursuit avec les requêtes suivantes (associations) et l'affichage.
// ////////////////////////////////////////////////////////////////////////////////////////////////////
echo '<hr />' . NL;
// Récupérer l'amplitude complète sur l'ensemble des périodes
$DB_ROW = DB_STRUCTURE_ADMINISTRATEUR::DB_recuperer_amplitude_periodes();
$tout_debut = $DB_ROW['tout_debut'] ? $DB_ROW['tout_debut'] : '2000-01-01';
$toute_fin = $DB_ROW['toute_fin'] ? $DB_ROW['toute_fin'] : '2000-01-01';
$nb_jours_total = $DB_ROW['nb_jours_total'] ? $DB_ROW['nb_jours_total'] : 0;
// Récupérer la liste des jointures, et le nécessaire pour établir les graphiques
$DB_TAB = DB_STRUCTURE_ADMINISTRATEUR::DB_lister_jointure_groupe_periode_avec_infos_graphiques($tout_debut);
$memo_groupe_id = 0;
Esempio n. 9
0
  echo'tab_destinataires['.$message_id.']="'.implode(',',$tab_destinataires_valides).'";';
  echo'tab_msg_contenus['.$message_id.']="'.str_replace(array("\r\n","\r","\n"),array('\r\n','\r','\n'),html($message_contenu)).'";';
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer un message existant
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='supprimer') && $message_id )
{
  $nb_suppression = DB_STRUCTURE_MESSAGE::DB_supprimer_message($message_id,$_SESSION['USER_ID']);
  if(!$nb_suppression)
  {
    exit('Message introuvable ou dont vous n\'êtes pas l\'auteur !');
  }
  DB_STRUCTURE_MESSAGE::DB_supprimer_message_destinataires($message_id);
  // Notifications (rendues visibles ultérieurement)
  DB_STRUCTURE_NOTIFICATION::DB_supprimer_log_attente( $abonnement_ref , $message_id );
  // Afficher le retour
  exit('<td>ok</td>');
}

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

exit('Erreur avec les données transmises !');

?>
Esempio n. 10
0
    foreach($tab_delete as $abonnement_ref => $jointure_mode)
    {
      DB_STRUCTURE_NOTIFICATION::DB_supprimer_abonnement( $_SESSION['USER_ID'] , $abonnement_ref );
    }
  }
  if(count($tab_insert))
  {
    foreach($tab_insert as $abonnement_ref => $jointure_mode)
    {
      DB_STRUCTURE_NOTIFICATION::DB_ajouter_abonnement( $_SESSION['USER_ID'] , $abonnement_ref , $jointure_mode );
    }
  }
  if(count($tab_update))
  {
    foreach($tab_update as $abonnement_ref => $jointure_mode)
    {
      DB_STRUCTURE_NOTIFICATION::DB_modifier_abonnement( $_SESSION['USER_ID'] , $abonnement_ref , $jointure_mode );
    }
  }
  // Afficher le retour
  exit_json( TRUE );
}

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

exit_json( FALSE , 'Erreur avec les données transmises !' );

?>
Esempio n. 11
0
  {
    $notification_date = ( TODAY_MYSQL < $date_visible_mysql ) ? $date_visible_mysql : NULL ;
    $notification_contenu = 'Saisies pour l\'évaluation "'.$description.'" du '.$date_fr.' enregistrées par '.afficher_identite_initiale($_SESSION['USER_NOM'],FALSE,$_SESSION['USER_PRENOM'],TRUE,$_SESSION['USER_GENRE']).'.'."\r\n\r\n";
    $notification_lien = 'Voir le détail :'."\r\n".Sesamail::adresse_lien_profond('page=evaluation_voir&devoir_id='.$devoir_id.'&eleve_id='.$eleve_id);
    $tab_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_detail_abonnes_envois( $listing_abonnes , $listing_eleves , $listing_parents );
    foreach($tab_abonnes as $abonne_id => $tab_abonne)
    {
      foreach($tab_abonne as $eleve_id => $notification_intro_eleve)
      {
        if($presence)
        {
          DB_STRUCTURE_NOTIFICATION::DB_modifier_log_attente( $abonne_id , $abonnement_ref_saisie , $devoir_id , $notification_date , $notification_intro_eleve.$notification_contenu.$notification_lien , 'remplacer' );
        }
        else
        {
          DB_STRUCTURE_NOTIFICATION::DB_supprimer_log_attente( $abonnement_ref_saisie , $devoir_id , $abonne_id );
        }
      }
    }
  }
  // Retour
  $retour = ($msg_data) ? $url_dossier_devoir.$fichier_nom : 'supprimé' ;
  exit('ok'.']¤['.$retour);
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if(empty($_POST))
{
Esempio n. 12
0
 /**
  * Tâches pseudo-planifiées exécutées lors de la connexion d'un utilisateur d'un établissement
  * 
  * @param void
  * @return void
  */
 public static function cron()
 {
   // On essaye de faire en sorte que plusieurs connexions ne lancent pas ces procédures simultanément
   $fichier_lock = CHEMIN_DOSSIER_TMP.'lock.txt';
   if(!file_exists($fichier_lock))
   {
     // On écrit un marqueur
     FileSystem::ecrire_fichier($fichier_lock,'');
     // On efface les fichiers temporaires obsolètes
     FileSystem::nettoyer_fichiers_temporaires($_SESSION['BASE']);
     // On rend visibles les notifications en attente et on supprime les notifications obsolètes
     Sesamail::envoyer_notifications();
     DB_STRUCTURE_NOTIFICATION::DB_supprimer_log_anciens();
     // On efface le marqueur
     FileSystem::supprimer_fichier($fichier_lock);
   }
   // Si le fichier témoin du nettoyage existe, on vérifie que sa présence n'est pas anormale (cela s'est déjà produit...)
   else
   {
     if( $_SERVER['REQUEST_TIME'] - filemtime($fichier_lock) > 30 )
     {
       FileSystem::supprimer_fichier($fichier_lock);
     }
   }
 }
Esempio n. 13
0
 /**
  * Envoyer ou rendre disponibles les notifications en attente.
  * 
  * @param void
  * @return void
  */
 public static function envoyer_notifications()
 {
     $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_notifications_a_publier();
     if (!empty($DB_TAB)) {
         foreach ($DB_TAB as $DB_ROW) {
             $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable';
             DB_STRUCTURE_NOTIFICATION::DB_modifier_statut($DB_ROW['notification_id'], $DB_ROW['user_id'], $notification_statut);
             if ($notification_statut == 'envoyée') {
                 $mail_user = $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>';
                 $mail_objet = 'Notification - ' . $DB_ROW['abonnement_objet'];
                 $mail_contenu = $DB_ROW['notification_contenu'] . Sesamail::texte_pied_courriel(array('no_reply', 'notif_individuelle', 'signature'), $DB_ROW['user_email']);
                 $courriel_bilan = Sesamail::mail($mail_user, $mail_objet, $mail_contenu, $mail_user);
             }
         }
     }
 }
Esempio n. 14
0
<form id="form_abonnements" action="#" method="post">
  <table id="table_abonnements" class="form">
    <thead>
      <tr>
        <th class="hc">Description</th>
        <th class="hc">non merci</th>
        <th class="hc">indication<br />en page d'accueil</th>
        <th class="hc">envoi<br />par courriel</th>
      </tr>
    </thead>
    <tbody>
      <?php 
$tab_choix = array('non', 'accueil', 'courriel');
$DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_abonnements_profil($_SESSION['USER_PROFIL_TYPE'], $_SESSION['USER_ID']);
$DB_JOIN = DB_STRUCTURE_NOTIFICATION::DB_lister_abonnements_user($_SESSION['USER_ID']);
foreach ($DB_TAB as $DB_ROW) {
    $DB_ROW['jointure_mode'] = isset($DB_JOIN[$DB_ROW['abonnement_ref']]) ? $DB_JOIN[$DB_ROW['abonnement_ref']]['jointure_mode'] : 'non';
    echo '<tr><td>' . $DB_ROW['abonnement_descriptif'] . '</td>';
    foreach ($tab_choix as $radio_key) {
        $checked = $radio_key == $DB_ROW['jointure_mode'] ? ' checked' : '';
        if ($radio_key == 'non') {
            $disabled = $DB_ROW['abonnement_obligatoire'] ? ' disabled' : '';
        } else {
            if ($radio_key == 'accueil') {
                $disabled = $DB_ROW['abonnement_courriel_only'] ? ' disabled' : '';
            } else {
                $disabled = '';
            }
        }
        echo '<td class="hc"><input type="radio" name="' . $DB_ROW['abonnement_ref'] . '" id="' . $DB_ROW['abonnement_ref'] . 'X' . $radio_key . '" value="' . $radio_key . '"' . $checked . $disabled . ' /></td>';
Esempio n. 15
0
        exit('Erreur avec les données transmises !');
    }
    // Notification (qui est envoyée de suite)
    $abonnement_ref = 'bilan_officiel_appreciation';
    $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_avec_informations($abonnement_ref, $destinataire_id);
    $destinataires_nb = count($DB_TAB);
    if (!$destinataires_nb) {
        // Normalement impossible, l'abonnement des personnels à ce type de de notification étant obligatoire
        exit('Erreur : destinataire non trouvé !');
    }
    $notification_debut = $action == 'signaler_faute' ? 'Signalement effectué par ' : 'Correction apportée par ';
    $notification_contenu = $notification_debut . afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']) . ' :' . "\r\n\r\n" . $message_contenu . "\r\n";
    foreach ($DB_TAB as $DB_ROW) {
        // 1 seul passage en fait
        $notification_statut = COURRIEL_NOTIFICATION == 'oui' && $DB_ROW['jointure_mode'] == 'courriel' && $DB_ROW['user_email'] ? 'envoyée' : 'consultable';
        DB_STRUCTURE_NOTIFICATION::DB_ajouter_log_visible($DB_ROW['user_id'], $abonnement_ref, $notification_statut, $notification_contenu);
        if ($notification_statut == 'envoyée') {
            $destinataire = $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>';
            $notification_contenu .= Sesamail::texte_pied_courriel(array('no_reply', 'notif_individuelle', 'signature'), $DB_ROW['user_email']);
            $courriel_bilan = Sesamail::mail($destinataire, 'Notification - Erreur appréciation bilan officiel', $notification_contenu, $destinataire);
        }
    }
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Générer un archivage des saisies
// ////////////////////////////////////////////////////////////////////////////////////////////////////
$tab_actions = array('imprimer_donnees_eleves_prof' => 'Mes appréciations pour chaque élève et le groupe classe', 'imprimer_donnees_eleves_collegues' => 'Appréciations des collègues pour chaque élève', 'imprimer_donnees_classe_collegues' => 'Appréciations des collègues sur le groupe classe', 'imprimer_donnees_eleves_syntheses' => 'Appréciations de synthèse générale pour chaque élève', 'imprimer_donnees_eleves_moyennes' => 'Tableau des moyennes pour chaque élève', 'imprimer_donnees_eleves_recapitulatif' => 'Récapitulatif annuel des moyennes et appréciations par élève');
if (isset($tab_actions[$action])) {
    require CHEMIN_DOSSIER_INCLUDE . 'code_officiel_archiver.php';
    exit;
Esempio n. 16
0
      $listing_eleves = implode(',',$tab_notif);
      $listing_parents = DB_STRUCTURE_NOTIFICATION::DB_lister_parents_listing_id($listing_eleves);
      $listing_users = ($listing_parents) ? $listing_eleves.','.$listing_parents : $listing_eleves ;
      $listing_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_listing_id( $abonnement_ref , $listing_users );
      if($listing_abonnes)
      {
        $notification_contenu = 'Bilan officiel disponible : ['.$classe_nom.'] ['.$tab_types[$BILAN_TYPE]['titre'].'] ['.$periode_nom.'].'."\r\n\r\n";
        $notification_contenu.= 'Y accéder :'."\r\n".Sesamail::adresse_lien_profond('page=officiel_voir_archive');
        $tab_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_detail_abonnes_envois( $listing_abonnes , $listing_eleves , $listing_parents );
        foreach($tab_abonnes as $abonne_id => $tab_abonne)
        {
          foreach($tab_abonne as $eleve_id => $notification_intro_eleve)
          {
            if( ( $is_acces_parent && $notification_intro_eleve ) || ( $is_acces_enfant && !$notification_intro_eleve ) )
            {
              DB_STRUCTURE_NOTIFICATION::DB_ajouter_log_attente( $abonne_id , $abonnement_ref , 0 , NULL , $notification_contenu );
            }
          }
        }
      }
    }
  }
  // Retour
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// IMPRIMER ETAPE 3/4 - Le PDF complet est généré ; on découpe individuellement les bilans par responsables puis on zippe l'ensemble
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($ACTION=='imprimer') && ($etape==3) )
      $notification_contenu.= 'Y accéder :'."\r\n".$adresse_lien_profond.$devoir_saisie;
    }
    $tab_item_infos = array();
    $tab_abonnes = explode(',',$listing_abonnes);
    foreach($tab_abonnes as $abonne_id)
    {
      foreach($tab_item_for_user[$abonne_id] as $item_id)
      {
        if(!isset($tab_item_infos[$item_id]))
        {
          // Récupérer la référence et le nom de l'item
          $DB_ROW = DB_STRUCTURE_DEMANDE::DB_recuperer_item_infos($item_id);
          $tab_item_infos[$item_id] = $DB_ROW['item_ref'].' "'.$DB_ROW['item_nom'].'"';
        }
        $notification_intro = 'Demande '.$tab_item_infos[$item_id].' ';
        DB_STRUCTURE_NOTIFICATION::DB_ajouter_log_attente( $abonne_id , $abonnement_ref , $devoir_saisie , NULL , $notification_intro.$notification_contenu );
      }
    }
  }
  // Retour
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Actualiser un score
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='actualiser_score') && ($nb_demandes==1) && ($nb_users==1) && ($nb_items==1) && ($score>-2) )
{
  $tab_devoirs = array();
  $DB_TAB = DB_STRUCTURE_DEMANDE::DB_lister_result_eleve_item( $tab_user_id[0] , $tab_item_id[0] );
     }
 }
 // Vérifier le domaine du serveur mail seulement en mode multi-structures car ce peut être sinon une installation sur un serveur local non ouvert sur l'extérieur.
 if ($courriel) {
     if (HEBERGEUR_INSTALLATION == 'multi-structures') {
         list($mail_domaine, $is_domaine_valide) = tester_domaine_courriel_valide($courriel);
         if (!$is_domaine_valide) {
             exit('Erreur avec le domaine "' . $mail_domaine . '" !');
         }
     }
 }
 $user_email_origine = $courriel ? 'admin' : '';
 // Insérer l'enregistrement
 $user_id = DB_STRUCTURE_COMMUN::DB_ajouter_utilisateur($sconet_id, 0, $reference, $profil, $genre, $nom, $prenom, NULL, $courriel, $user_email_origine, $login, crypter_mdp($password), 0, $id_ent, $id_gepi);
 // Pour les professeurs et directeurs, abonnement obligatoire aux signalements d'un souci pour une appréciation d'un bilan officiel
 DB_STRUCTURE_NOTIFICATION::DB_ajouter_abonnement($user_id, 'bilan_officiel_appreciation', 'accueil');
 // Il peut (déjà !) falloir lui affecter une date de sortie...
 if ($box_date) {
     $sortie_date = '-';
     $sortie_date_mysql = SORTIE_DEFAUT_MYSQL;
 } else {
     $sortie_date_mysql = convert_date_french_to_mysql($sortie_date);
     DB_STRUCTURE_ADMINISTRATEUR::DB_modifier_user($user_id, array(':sortie_date' => $sortie_date_mysql));
 }
 // Afficher le retour
 echo '<tr id="id_' . $user_id . '" class="new">';
 echo '<td class="nu"><input type="checkbox" name="f_ids" value="' . $user_id . '" /></td>';
 echo '<td class="label">' . html($id_ent) . '</td>';
 echo '<td class="label">' . html($id_gepi) . '</td>';
 echo '<td class="label">' . html($sconet_id) . '</td>';
 echo '<td class="label">' . html($reference) . '</td>';
        } elseif ($presence_saisie != $note_val) {
            DB_STRUCTURE_PROFESSEUR::DB_modifier_saisie($_SESSION['USER_ID'], $eleve_id, $devoir_id, $item_id, $note_val, $info);
            $notif_eleve = TRUE;
        }
    }
    // Notifications (rendues visibles ultérieurement) ; le mode discret ne d'applique volontairement pas ici car les modifications sont chirurgicales
    if ($notif_eleve) {
        $abonnement_ref = 'devoir_saisie';
        $listing_eleves = (string) $eleve_id;
        $listing_parents = DB_STRUCTURE_NOTIFICATION::DB_lister_parents_listing_id($listing_eleves);
        $listing_users = $listing_parents ? $listing_eleves . ',' . $listing_parents : $listing_eleves;
        $listing_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_listing_id($abonnement_ref, $listing_users);
        if ($listing_abonnes) {
            $adresse_lien_profond = Sesamail::adresse_lien_profond('page=evaluation_voir&devoir_id=' . $devoir_id . '&eleve_id=');
            $notification_contenu = 'Saisie "à la volée" enregistrée par ' . afficher_identite_initiale($_SESSION['USER_NOM'], FALSE, $_SESSION['USER_PRENOM'], TRUE, $_SESSION['USER_GENRE']) . '.' . "\r\n\r\n";
            $tab_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_detail_abonnes_envois($listing_abonnes, $listing_eleves, $listing_parents);
            foreach ($tab_abonnes as $abonne_id => $tab_abonne) {
                foreach ($tab_abonne as $eleve_id => $notification_intro_eleve) {
                    $notification_lien = 'Voir le détail :' . "\r\n" . $adresse_lien_profond . $eleve_id;
                    DB_STRUCTURE_NOTIFICATION::DB_modifier_log_attente($abonne_id, $abonnement_ref, $devoir_id, NULL, $notification_intro_eleve . $notification_contenu . $notification_lien, 'remplacer');
                }
            }
        }
    }
    // Afficher le retour
    exit_json(TRUE, array('devoir_id' => $devoir_id, 'groupe_id' => $groupe_id));
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit_json(FALSE, 'Erreur avec les données transmises !');
 * 
 */

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']) : '';
$notification_id = (isset($_POST['f_id']))     ? Clean::entier($_POST['f_id'])    : 0;

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Mémoriser qu'une notification a été consultée
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='memoriser_consultation') && $notification_id )
{
  $is_modif = DB_STRUCTURE_NOTIFICATION::DB_modifier_statut( $notification_id , $_SESSION['USER_ID'] , 'consultée' );
  // Afficher le retour
  if($is_modif)
  {
    exit_json( TRUE );
  }
  else
  {
    exit_json( FALSE , 'Erreur : notification non trouvée ou pas associée à ce compte !' );
  }
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là !
// ////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * Enregistrer une action effectuée par un autre administrateur.
 *
 * @param string   $notification_contenu
 * @param int      $admin_id
 * @return void
 */
public static function enregistrer_action_admin($notification_contenu,$admin_id)
{
  $abonnement_ref = 'action_admin';
  $listing_abonnes = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_listing_id( $abonnement_ref , $admin_id , FALSE );
  if($listing_abonnes)
  {
    $tab_abonnes = explode(',',$listing_abonnes);
    foreach($tab_abonnes as $abonne_id)
    {
      DB_STRUCTURE_NOTIFICATION::DB_modifier_log_attente( $abonne_id , $abonnement_ref , 0 , NULL , $notification_contenu , 'compléter' , FALSE /*sep*/ );
    }
  }
}