コード例 #1
0
ファイル: brevet_fiches.php プロジェクト: Qwaseur/SACoche
            $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) {
    $tab_classe_etat[$DB_ROW['groupe_id']] = $DB_ROW['fiche_brevet'];
}
?>
コード例 #2
0
    $DB_ROW = DB_STRUCTURE_PUBLIC::DB_recuperer_user_for_new_mdp('user_id', $user_id);
    if (empty($DB_ROW)) {
        $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++;
        $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME'];
        exit_json(FALSE, 'Utilisateur inconnu ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.');
    }
    // On vérifie que l'adresse mail concorde
    if ($DB_ROW['user_email'] != $courriel) {
        $_SESSION['FORCEBRUTE'][$PAGE]['DELAI']++;
        $_SESSION['FORCEBRUTE'][$PAGE]['TIME'] = $_SERVER['REQUEST_TIME'];
        exit_json(FALSE, 'Adresse mail non concordante ! Nouvelle tentative autorisée dans ' . $_SESSION['FORCEBRUTE'][$PAGE]['DELAI'] . 's.');
    }
    // On enregistre un ticket pour cette demande
    $user_pass_key = crypter_mdp($DB_ROW['user_id'] . $DB_ROW['user_email'] . $DB_ROW['user_password'] . $DB_ROW['user_connexion_date']);
    $code_mdp = $BASE ? $user_pass_key . 'g' . $BASE : $user_pass_key;
    DB_STRUCTURE_PUBLIC::DB_modifier_user_password_or_key($DB_ROW['user_id'], '', $user_pass_key);
    // On envoi le courriel à l'utilisateur
    $mail_contenu = 'Bonjour,' . "\r\n";
    $mail_contenu .= "\r\n";
    $mail_contenu .= 'Une demande de nouveaux identifiants a été formulée pour le compte SACoche de ' . $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . '.' . "\r\n";
    $mail_contenu .= "\r\n";
    $mail_contenu .= 'Pour confirmer la génération d\'un nouveau mot de passe, veuillez cliquer sur ce lien :' . "\r\n";
    $mail_contenu .= URL_DIR_SACOCHE . '?code_mdp=' . $code_mdp . "\r\n";
    $mail_contenu .= Sesamail::texte_pied_courriel(array('excuses_derangement', 'info_connexion', 'no_reply', 'signature'), $DB_ROW['user_email']);
    $courriel_bilan = Sesamail::mail($DB_ROW['user_email'], 'Demande de nouveaux identifiants', $mail_contenu, $DB_ROW['user_email']);
    if (!$courriel_bilan) {
        exit_json(FALSE, 'Erreur lors de l\'envoi du courriel !');
    }
    // OK !
    exit_json(TRUE);
}
コード例 #3
0
 // Notifications (rendues visibles ultérieurement parce que plus simple comme cela)
 if(!empty($tab_notif))
 {
   $abonnement_ref = 'bilan_officiel_visible';
   $is_acces_parent = in_array( 'TUT' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? TRUE : FALSE ;
   $is_acces_enfant = in_array( 'ELV' , explode(',',$_SESSION['DROIT_OFFICIEL_'.$tab_types[$BILAN_TYPE]['droit'].'_VOIR_ARCHIVE']) ) ? TRUE : FALSE ;
   if( $is_acces_parent || $is_acces_enfant )
   {
     $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
コード例 #4
0
  $admin_login  = $DB_ROW['user_login'];
  // Générer un nouveau mdp de l'admin
  $admin_password = fabriquer_mdp();
  DB_STRUCTURE_WEBMESTRE::DB_modifier_admin_mdp($admin_id,crypter_mdp($admin_password));
  // Envoyer un courriel au contact et éventuellement une copie du courriel au webmestre
  $courriel_contenu = Webmestre::contenu_courriel_nouveau_mdp( $base_id , $denomination , $contact_nom , $contact_prenom , $admin_nom , $admin_prenom , $admin_login , $admin_password , URL_DIR_SACOCHE );
  $courriel_titre   = 'Modification mdp administrateur - Inscription n°'.$base_id;
  $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 );
    if(!$courriel_bilan)
    {
      exit('Erreur lors de l\'envoi du courriel !');
    }
  }
  // On affiche le retour
  echo'<ok>';
  echo'Le mot de passe de '.html($admin_prenom.' '.$admin_nom).',<BR />administrateur de l\'établissement '.html($denomination).',<BR />vient d\'être réinitialisé.<BR /><BR />';
  echo'Les nouveaux identifiants ont été envoyés au contact '.html($contact_prenom).' '.html($contact_nom).',<BR />à son adresse de courriel '.html($contact_courriel).'.';
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer une structure existante
// ////////////////////////////////////////////////////////////////////////////////////////////////////
コード例 #5
0
                exit('Erreur avec le domaine "' . $mail_domaine . '" !');
            }
        }
    }
    FileSystem::fabriquer_fichier_hebergeur_info(array('HEBERGEUR_MAILBOX_BOUNCE' => $bounce));
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Test d'envoi de courriel
// ////////////////////////////////////////////////////////////////////////////////////////////////////
if ($action == 'TestEnvoiCourriel' && $courriel) {
    list($mail_domaine, $is_domaine_valide) = tester_domaine_courriel_valide($courriel);
    if (!$is_domaine_valide) {
        exit('Erreur avec le domaine "' . $mail_domaine . '" ou serveur extérieur injoignable !');
    }
    // Test d'envoi d'un courriel d'inscription
    $courriel_bilan = Sesamail::mail($courriel, 'Test d\'envoi d\'un courriel d\'inscription', 'Avec par défaut les coordonnées du webmestre en Reply-To.');
    if (!$courriel_bilan) {
        exit('Erreur lors de l\'envoi du courriel de test n°1 !');
    }
    // Test d'envoi d'un courriel de notification
    $courriel_bilan = Sesamail::mail($courriel, 'Test d\'envoi d\'une notification', 'Avec soi-même en Reply-To.', $courriel);
    if (!$courriel_bilan) {
        exit('Erreur lors de l\'envoi du courriel de test n°2 !');
    }
    exit('ok');
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit('Erreur avec les données transmises !');
コード例 #6
0
            DB_STRUCTURE_PROFESSEUR::DB_supprimer_saisie($eleve_id, $devoir_id, $item_id);
            $notif_eleve = TRUE;
        } 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à...
コード例 #7
0
if( ($action=='envoyer') && $num && $max && ($num<$max) )
{
  // Envoyer une série de courriels
  $i_min = ($num-1)*10;
  $i_max = min( $_SESSION['tmp']['nombre'] , $num*10);
  for($i=$i_min ; $i<$i_max ; $i++)
  {
    extract($_SESSION['tmp']['infos'][$i]); // $base_id $contact_nom $contact_prenom $contact_courriel
    $texte = 'Bonjour '.$contact_prenom.' '.$contact_nom.','."\r\n\r\n";
    $texte.= $_SESSION['tmp']['contenu']."\r\n\r\n";
    $texte.= 'Cordialement,'."\r\n".WEBMESTRE_PRENOM.' '.WEBMESTRE_NOM."\r\n\r\n";
    $texte.= 'Rappel des adresses à utiliser :'."\r\n";
    $texte.= URL_DIR_SACOCHE.'?id='.$base_id.' (hébergement de l\'établissement)'."\r\n";
    $texte.= SERVEUR_PROJET.' (site du projet SACoche)'."\r\n\r\n";
    $courriel_bilan = Sesamail::mail( $contact_courriel , $_SESSION['tmp']['titre'] , $texte );
    if(!$courriel_bilan)
    {
      exit('Erreur lors de l\'envoi du courriel !');
    }
  }
  exit('ok');
}
if( ($action=='envoyer') && $num && $max && ($num==$max) )
{
  unset($_SESSION['tmp']);
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Supprimer plusieurs structures existantes
コード例 #8
0
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Générer un nouveau mdp d'un partenaire conventionné et lui envoyer par courriel
// ////////////////////////////////////////////////////////////////////////////////////////////////////

if( ($action=='initialiser_mdp') && $partenaire_id && $denomination && $nom && $prenom && $courriel )
{
  // Générer un nouveau mdp
  $password = fabriquer_mdp();
  // Mettre à jour l'enregistrement
  DB_WEBMESTRE_WEBMESTRE::DB_modifier_partenaire_conventionne_mdp($partenaire_id,crypter_mdp($password));
  // Envoyer un courriel
  $courriel_contenu = Webmestre::contenu_courriel_partenaire_nouveau_mdp( $denomination , $nom , $prenom , $password , URL_DIR_SACOCHE );
  $courriel_bilan = Sesamail::mail( $courriel , 'Modification mdp compte partenaire ENT' , $courriel_contenu );
  if(!$courriel_bilan)
  {
    exit('Erreur lors de l\'envoi du courriel !');
  }
  // On affiche le retour
  echo'<ok>';
  echo'Le mot de passe de<BR />'.html($prenom.' '.$nom).',<BR />partenaire conventionné<BR />"'.html($denomination).'",<BR />vient d\'être réinitialisé.<BR /><BR />';
  echo'Les nouveaux identifiants<BR />ont été envoyés<BR />à son adresse de courriel<BR />'.html($courriel).'.';
  exit();
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Retirer un partenaire conventionné existant
// ////////////////////////////////////////////////////////////////////////////////////////////////////
コード例 #9
0
    $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;
    // Normalement, on n'arrive pas jusque là.
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Il se peut que rien n'ait été récupéré à cause de l'upload d'un fichier trop lourd
コード例 #10
0
        $texte .= URL_DIR_SACOCHE . '?id=' . $_SESSION['BASE'] . "\r\n";
        $texte .= "\r\n";
        if ($DB_ROW['convention_date_debut'] < TODAY_MYSQL) {
            $texte .= 'Dès réception du contrat (ou perception du règlement), votre connecteur ENT sera automatiquement activé.' . "\r\n";
        } else {
            $texte .= 'La réception du contrat (ou la perception du règlement) entrainera l\'activation automatique de votre connecteur ENT au ' . convert_date_mysql_to_french($DB_ROW['convention_date_debut']) . ' (changement d\'année scolaire).' . "\r\n";
        }
        $texte .= 'Un courriel est alors envoyé au contact référent pour l\'en informer.' . "\r\n";
        $texte .= 'Vous disposez de 2 mois à compter de l\'activation du connecteur ENT pour le tester et nous faire parvenir votre règlement (ou le contrat).' . "\r\n";
        $texte .= "\r\n";
        $texte .= 'Nous vous remercions de votre confiance et de votre soutien.' . "\r\n";
        $texte .= "\r\n";
        $texte .= 'Remarque : si vous ne souhaitez pas donner suite à cette convention, il vous suffit de ne rien envoyer et de sélectionner une connexion avec les identifiants de SACoche.' . "\r\n";
        $texte .= "\r\n";
        $texte .= 'Cordialement,' . "\r\n";
        $texte .= WEBMESTRE_PRENOM . ' ' . WEBMESTRE_NOM . "\r\n";
        $texte .= 'Responsable SACoche pour Sésamath' . "\r\n";
        $texte .= "\r\n";
        $courriel_bilan = Sesamail::mail($DB_ROW2['structure_contact_courriel'], $titre, $texte);
        // Ce serait mieux si le Reply-To était MAIL_SACOCHE_CONTACT mais cette contante n'est pas connue ici...
        if (!$courriel_bilan) {
            exit_json(FALSE, 'Envoi du courriel infructueux !');
        }
    }
    // Retour des informations.
    exit_json(TRUE, array('fichier_contrat' => URL_DIR_EXPORT . $contrat_fichier_nom, 'fichier_facture' => URL_DIR_EXPORT . $facture_fichier_nom));
}
// ////////////////////////////////////////////////////////////////////////////////////////////////////
// On ne devrait pas en arriver là...
// ////////////////////////////////////////////////////////////////////////////////////////////////////
exit_json(FALSE, 'Erreur avec les données transmises !');
コード例 #11
0
    // Notification (qui a la particularité d'être envoyée de suite, et avec tous les admins en destinataires du mail)
    $abonnement_ref = 'contact_externe';
    $DB_TAB = DB_STRUCTURE_NOTIFICATION::DB_lister_destinataires_avec_informations($abonnement_ref);
    $destinataires_nb = count($DB_TAB);
    if (!$destinataires_nb) {
        // Normalement impossible, l'abonnement des admins à ce type de de notification étant obligatoire
        exit_json(FALSE, 'Aucun destinataire trouvé.');
    }
    $tab_destinataires = array();
    $notification_contenu = 'Message de ' . $prenom . ' ' . $nom . ' (' . $courriel . ') :' . "\r\n\r\n" . $message . "\r\n";
    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_ajouter_log_visible($DB_ROW['user_id'], $abonnement_ref, $notification_statut, $notification_contenu);
        if ($notification_statut == 'envoyée') {
            $tab_destinataires[] = $DB_ROW['user_prenom'] . ' ' . $DB_ROW['user_nom'] . ' <' . $DB_ROW['user_email'] . '>';
        }
    }
    if (count($tab_destinataires)) {
        /**
         * L'envoi d'un contact externe depuis la page d'authentification est une exception à plusieurs titres :
         * - le numéro de base n'est pas en session
         * - envoi possible à plusieurs destinataires simultanéments
         * - notification obligatoire et immédiate
         * Du coup, le paramètre 'notif_individuelle' n'est pas transmis dans le tableau pour texte_pied_courriel().
         */
        $notification_contenu .= Sesamail::texte_pied_courriel(array('no_reply', 'signature'));
        $courriel_bilan = Sesamail::mail($tab_destinataires, 'Notification - Contact externe', $notification_contenu, $tab_destinataires);
    }
    $admin_txt = $destinataires_nb > 1 ? 'aux ' . $destinataires_nb . ' administrateurs' : 'à l\'administrateur';
    exit_json(TRUE, $admin_txt);
}
コード例 #12
0
   else
   {
     DB_STRUCTURE_COMMENTAIRE::DB_supprimer_devoir_commentaire( $devoir_id , $eleve_id );
     $presence = FALSE;
   }
 }
 // Notifications (rendues visibles ultérieurement) ; le mode discret ne d'applique volontairement pas ici car les modifications sont chirurgicales
 $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_saisie , $listing_users );
 if($listing_abonnes)
 {
   $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 );
       }
     }
   }
コード例 #13
0
ファイル: class.SessionUser.php プロジェクト: rhertzog/lcs
 /**
  * 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);
     }
   }
 }
コード例 #14
0
ファイル: class.Sesamail.php プロジェクト: Qwaseur/SACoche
 /**
  * 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);
             }
         }
     }
 }
コード例 #15
0
ファイル: brevet_fiches.ajax.php プロジェクト: rhertzog/lcs
  {
    // 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 fiche brevet' , $notification_contenu , $destinataire );
    }
  }
  exit('ok');
}

// ////////////////////////////////////////////////////////////////////////////////////////////////////
// Générer un archivage des saisies
// ////////////////////////////////////////////////////////////////////////////////////////////////////

$tab_actions = array
(
  'imprimer_donnees_eleves_epreuves'  => 'Appréciations par épreuve pour chaque élève',
  'imprimer_donnees_eleves_syntheses' => 'Avis de synthèse pour chaque élève',
  'imprimer_donnees_eleves_moyennes'  => 'Tableau des notes pour chaque élève',
);
コード例 #16
0
    else
    {
      $texte.= 'La réception du contrat (ou la perception du règlement) entrainera l\'activation automatique de votre connecteur ENT au '.convert_date_mysql_to_french($DB_ROW['convention_date_debut']).' (changement d\'année scolaire).'."\r\n";
    }
    $texte.= 'Un courriel est alors envoyé au contact référent pour l\'en informer.'."\r\n";
    $texte.= 'Vous disposez de 2 mois à compter de l\'activation du connecteur ENT pour le tester et nous faire parvenir votre règlement (ou le contrat).'."\r\n";
    $texte.= "\r\n";
    $texte.= 'Nous vous remercions de votre confiance et de votre soutien.'."\r\n";
    $texte.= "\r\n";
    $texte.= 'Remarque : si vous ne souhaitez pas donner suite à cette convention, il vous suffit de ne rien envoyer et de sélectionner une connexion avec les identifiants de SACoche.'."\r\n";
    $texte.= "\r\n";
    $texte.= 'Cordialement,'."\r\n";
    $texte.= WEBMESTRE_PRENOM.' '.WEBMESTRE_NOM."\r\n";
    $texte.= 'Responsable SACoche pour Sésamath'."\r\n";
    $texte.= "\r\n";
    $courriel_bilan = Sesamail::mail( $DB_ROW2['structure_contact_courriel'] , $titre , $texte ); // Ce serait mieux si le Reply-To était MAIL_SACOCHE_CONTACT mais cette contante n'est pas connue ici...
    if(!$courriel_bilan)
    {
      exit_json( FALSE , 'Envoi du courriel infructueux !' );
    }
  }
  // Retour des informations.
  exit_json( TRUE ,  array( 'fichier_contrat'=>URL_DIR_EXPORT.$contrat_fichier_nom , 'fichier_facture'=>URL_DIR_EXPORT.$facture_fichier_nom ) );
}

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

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