Phenix Agenda

Agenda en ligne

Soutenez ce projet
Nous sommes le 18 Oct 2018 00:09

Heures au format UTC + 1 heure [ Heure d’été ]




Poster un nouveau sujet Répondre au sujet  [ 20 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Rappel de note
MessagePosté: 12 Juin 2005 09:14 
Hors ligne
Donateur / Contributeur
Donateur / Contributeur

Inscription: 10 Mai 2005 16:44
Messages: 17
Localisation: 17
Bonjour,

Petit problème qui existait aussi certaine fois avec TC. La notification par mail prévue à 16h00 arrive le lendemain à 8h00 du matin.
Une idée ?

Merci


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 12 Juin 2005 15:34 
Hors ligne
Administrateur
Avatar de l’utilisateur

Inscription: 05 Mai 2005 20:21
Messages: 1707
Localisation: Bordeaux
Bonjour,

L'envoi d'une alerte par mail n'est possible que lorsqu'un untilisateur (quel qu'il soit) est connecté à l'application. Si le jour J à 16h, personne n'est connecté et que le premier à le faire ne le fait que le lendemain à 8h alors toutes les alertes prévues entre 16h (jour J) et 8h (jour J+1) ne seront "générées" qu'à ce moment là (8h J+1).

Pour pallier à cela, il est possible de passer via Webcron et de créer un script qui serait appeler par Webcron et donc qui ne nécessiterait pas qu'un utilisateur soit connecté.
En fait, pour réaliser cela il suffit d'épurer un peu le fichier info_surveille.php et d'y ajouter les paramètres de connexions afin d'en faire une version "standalone"

Voici un code que je peux proposer mais il n'a pas été testé
Code:
<?php
  // Gestion des rapports d'erreurs
  error_reporting(E_ALL ^ E_NOTICE);

  // Parametres BDD
  // Recopier à l'identique le contenu de ces variables depuis le fichier inc/conf.inc.php
  $cfgHote = "localhost";  // Serveur MySQL
  $cfgUser = "";           // Utilisateur
  $cfgPass = "";           // Mot de passe
  $cfgBase = "phenix";    // Nom de la base
  $PREFIX_TABLE = "px_";   // Préfixe de vos tables
  $DB_CX = mysql_connect($cfgHote, $cfgUser, $cfgPass);
  mysql_select_db($cfgBase, $DB_CX);

// ----------------------------------------------------------------------------
function rfcDate() {
  $tn = time(0);
  $zone = gmdate("H", $tn) * 60 + gmdate("i", $tn);
  $julian = gmdate("z", $tn);
  $t = getdate($tn);
  $zone = $t["hours"] * 60 + $t["minutes"] - $zone;
  if ($julian = $t["yday"] - $julian) {
    $zone += (($julian < 0) == (abs($julian) == 1)) ? -24*60 : 24*60;
  }
  $zone_sign = ($zone > 0 ? "+" : "-");
  return date('D, d M Y H:i:s ', $tn).$zone_sign.sprintf("%02d%02d", abs($zone)/60, abs($zone)%60)." (".strftime("%Z").")";
}
// ----------------------------------------------------------------------------
function quote_printable($str,$WithCharset) {
  $str = str_replace("%","=",rawurlencode($str));
  return "=?${WithCharset}?Q?${str}?=";
}
// ----------------------------------------------------------------------------
function enteteMail($expediteurNom,$expediteurMail) {
  $Charset = "iso-8859-1";
  $expediteurNom = quote_printable($expediteurNom,$Charset);
  $mailDate = rfcDate();
  $Headers = "From: ".$expediteurNom." <".$expediteurMail.">\n";
  $Headers .= "X-Sender: <".$expediteurMail.">\n";
  $Headers .= "X-Mailer: PHP/".phpversion()."\n";
  $Headers .= "Return-Path: <".$expediteurMail.">\n";
  $Headers .= "Date: ".$mailDate."\n";
  $Headers .= "Mime-Version: 1.0\n";
  $Headers .= "Content-Type: text/html; charset=".$Charset."\n";
  return $Headers;
}
// ----------------------------------------------------------------------------
function signatureMail() {
  $signature = "\n\n<CENTER><HR size=\"1\" color=\"#000000\">";
  $signature .= "<FONT color=\"gray\" size=\"-1\">Mail automatique g&eacute;n&eacute;r&eacute; par Phenix 3.0a [<A href=\"http://www.phenix.gapi.fr\"><FONT color=\"black\">phenix.gapi.fr</FONT></A>]</FONT></CENTER>\n</BODY></HTML>";
  return $signature;
}

  // Recherche des notes ayant un rappel à notifier
  $res = mysql_query("SELECT age_id, age_util_id, DATE_FORMAT(age_date,'%d/%m/%Y'), age_heure_debut, age_libelle, age_detail, age_rappel, age_rappel_coeff, age_email, aco_util_id, dest.util_email, exp.util_email FROM ${PREFIX_TABLE}agenda, ${PREFIX_TABLE}agenda_concerne, ${PREFIX_TABLE}utilisateur dest, ${PREFIX_TABLE}utilisateur exp WHERE aco_rappel_ok=0 AND aco_termine=0 AND age_id=aco_age_id AND age_aty_id=2 AND age_rappel>0 AND TO_DAYS(age_date)-TO_DAYS(now()) < 60 AND dest.util_id=aco_util_id AND exp.util_id=age_util_id ORDER BY age_date, age_heure_debut",$DB_CX);
  $noteID    = 0;
  $sujetMail = "";
  $corpsMail = "";
  $destMail  = "";
  while ($enr = mysql_fetch_array($res)) {
    $tabDate = explode("/",$enr[2]);
    $tsNote = mktime($enr[3],($enr[3]*60)%60,0,$tabDate[1],$tabDate[0],$tabDate[2]);
    $tsNow  = mktime(date("H"),date("i")+($enr[6]*$enr[7]),0,date("n"),date("j"),date("Y"));
    if ($tsNote<=$tsNow) {
      $res2 = mysql_query("INSERT INTO ${PREFIX_TABLE}information (info_emetteur_id, info_destinataire_id, info_age_id, info_date, info_commentaire) VALUES (".$enr[1].",".$enr[9].",".$enr[0].",'".date("Y-m-d H:i",$tsNote)."', '".$tsNote."@".addslashes($enr[4])."')",$DB_CX);
      $res2 = mysql_query("UPDATE ${PREFIX_TABLE}agenda_concerne SET aco_rappel_ok=1 WHERE aco_age_id=".$enr[0]." AND aco_util_id=".$enr[9],$DB_CX);
      if ($enr[0]!=$noteID) {
        $destMail = substr($destMail,1);
        if (!empty($destMail)) {
          @mail($destMail, $sujetMail, $corpsMail, $Entete);
        }
        $noteID    = $enr[0];
        $sujetMail = date("[d/m/Y à H:i]",$tsNote)." : Notification de rappel d'une note";
        $corpsMail = nl2br("<HTML><BODY>La note suivante doit d&eacute;buter le <B>".date("d/m/Y à H:i",$tsNote)."</B>\n\n<U>Libell&eacute;</U>:&nbsp;".$enr[4]."\n<U>D&eacute;tail</U>:&nbsp;&nbsp;".$enr[5].signatureMail());
        $destMail  = "";
        $Entete    = enteteMail("Phenix 3.0a",$enr[11]);
      }
      if ($enr[8]==1 && !empty($enr[10]) && function_exists("mail")) {
        $destMail .= ",".$enr[10];
      }
    }
  }
  $destMail = substr($destMail,1);
  if (!empty($destMail)) {
    @mail($destMail, $sujetMail, $corpsMail, $Entete);
  }

  // Fermeture BDD
  mysql_close($DB_CX);
?>

Enregistrez le dans une page php que vous adresserez via votre serveur Webcron à la fréquence que vous souhaitez.

:!: Ce script est livré tel quel et ne sera pas maintenu en fonction des évolutions des futures versions. :!:

_________________
Stéphane
PxTeam


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 13 Juin 2005 23:00 
Hors ligne
Donateur / Contributeur
Donateur / Contributeur

Inscription: 10 Mai 2005 05:10
Messages: 220
Localisation: Issy
Stéphane a écrit:
:!: Ce script est livré tel quel et ne sera pas maintenu en fonction des évolutions des futures versions. :!:


Pourquoi pas finalement, ne serait-ce pas une fonction intéressante à garder par la suite. Tu as déjà fait le plus gros du boulot en plus... ;)


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 14 Juin 2005 08:28 
Hors ligne
Administrateur
Avatar de l’utilisateur

Inscription: 05 Mai 2005 20:21
Messages: 1707
Localisation: Bordeaux
C'est que je n'aime pas les scripts redondants où lorsque tu fais une modification à l'un, il ne faut pas oublier les autres sous peine d'engendrer des bugs...

Tu ne connais d'autres sites comme Webcron, parce que ce dernier n'arrive pas à charger ma page de test (script ci-dessus) via mon adresse dyndns ?

_________________
Stéphane
PxTeam


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 14 Juin 2005 10:26 
Hors ligne
Donateur / Contributeur
Donateur / Contributeur

Inscription: 10 Mai 2005 05:10
Messages: 220
Localisation: Issy
Non je n'en connais pas. J'avais regardé Webcron quand je me suis intéressé à TC mais cela ne m'était pas utile dans la mesure où je sais que j'ai toujours au moins un user de connecté : moi ! :)

Sinon pour ta page cron, ne serait-il pas possible d'extraire de info_surveille ce qui sert pour cette nouvelle fonction et de faire un include dans info_surveille de cette page. Ce qui évite de modifier 2 fois le code.

Ou bien à contrario, de faire une page pour le cron qui ne contient que les param de connexion (avec une variable en plus) et qui appelle la page info_surveille et des if (fonction de cette variable) pour éviter les lignes que le cron ne nécessite pas ?

Comme cela la fonction de cron pourrait être gardée sans nécessiter un travail de maintenance considérable.


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 14 Juin 2005 10:45 
Hors ligne
Administrateur
Avatar de l’utilisateur

Inscription: 05 Mai 2005 20:21
Messages: 1707
Localisation: Bordeaux
En cherchant un peu j'ai trouvé CronJobs, il propose davantage d'options que Webcron notamment d'appeler la page toutes les 5 minutes au lieu de toutes les heures (Webcron), un inconvénient, il a l'air payant selon les options choisies...

Sinon pour le script, ce que tu proposes est évidemment la solution, y a plus qu'à la coder :P

_________________
Stéphane
PxTeam


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 14 Juin 2005 19:19 
Hors ligne
Donateur / Contributeur
Donateur / Contributeur

Inscription: 10 Mai 2005 05:10
Messages: 220
Localisation: Issy
Bah alors au boulot Stef, pfff kestatan ?!! :P

Heu pardon chef :oops: pas taper !!! Je rigolais ;) :lol:


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 15 Juin 2005 08:32 
Hors ligne
Administrateur
Avatar de l’utilisateur

Inscription: 05 Mai 2005 20:21
Messages: 1707
Localisation: Bordeaux
Stéphane a écrit:
y a plus qu'à la coder
Ca s'adressait à toi :wink:
Mais bon je veux bien y jeter un oeil...

_________________
Stéphane
PxTeam


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 15 Juin 2005 13:50 
Hors ligne
Administrateur
Avatar de l’utilisateur

Inscription: 05 Mai 2005 20:21
Messages: 1707
Localisation: Bordeaux
Je suis bon prince, (ou bonne poire :P)
J'ai réécrit le fichier info_surveille.php pour qu'il puisse fonctionner à la fois quand il est appelé par l'application lorsqu'un utilisateur est connecté et également pour qu'il fonctionne en version autonome si il est appelé via une crontab (ou des sites tels que WebCron et CronJobs).
Il sera dispo avec la prochaine version (avant que l'on me le demande : pas de date de sortie définie...)

_________________
Stéphane
PxTeam


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 17 Juin 2005 09:40 
Hors ligne
Donateur / Contributeur
Donateur / Contributeur

Inscription: 10 Mai 2005 05:10
Messages: 220
Localisation: Issy
Il faut quand même avouer que Stef est grand !!! :P :) :D

Merci et encore une fois bravo...


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 20 Juin 2005 23:19 
Hors ligne

Inscription: 20 Juin 2005 17:40
Messages: 23
Localisation: Illkirch (67)
Bonjour à tous,

J'ai vraiment hâte que la nouvelle version sorte car c'est vraiment un outil génial que j'ai adopté et que je recommande à tous!

Bonne continuation.


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 13 Oct 2005 23:00 
Hors ligne

Inscription: 13 Oct 2005 20:03
Messages: 4
Localisation: Hauts de Seine
La fonction fonctionne t elle avec la version 3.0b ?

Je suis chez Free. Est ce que ça marche chez eux et comment paramétrer cronjobs pour la tâche à exécuter ?

Merci d'avance de vos réponses.

_________________
Allez faire un tour sur ma galerie photo http://ikario.net


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 23 Déc 2005 16:46 
Hors ligne
Donateur / Contributeur
Donateur / Contributeur
Avatar de l’utilisateur

Inscription: 26 Sep 2005 19:23
Messages: 480
Localisation: AMIENS 80
:D
Bonjour,
voir egalement onlinecron.fr comme site proposant l'automatisation de taches

Salut et bonnes fêtes de fin d'année à toutes et tous

daniel80


Haut
 Profil  
 
MessagePosté: 03 Mar 2006 11:02 
Hors ligne

Inscription: 30 Nov 2005 10:35
Messages: 48
l'adresse de ce site est plus exactement : http://www.onlinecron.com/

2 tâches automatiques gratuites autorisées


MAIS ...................... ils disent dans l'email d'inscription que mon FAI (Fr.....) n'est pas compatible !!!!!!

voici le texte :
"Votre hébergeur actuel ne permet pas d'exécuter des tâches cron comme vous le souhaitez."

chez WEBCRON cela fonctionne pourtant bien !!!! (mais le minimum d'automatisation de tâches est de 1h00)

Solution ???


Haut
 Profil  
 
 Sujet du message:
MessagePosté: 11 Avr 2006 01:31 
Hors ligne
Donateur / Contributeur
Donateur / Contributeur

Inscription: 10 Mai 2005 05:10
Messages: 220
Localisation: Issy
solution... un cron sur un PC sous linux ou bien une tâche planifiée sur ton PC sous win (là c'est moins propre je l'avoue). 8) :lol:


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 20 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Powered by phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com