Content Management System - CMS : eXV2 
Home
News
Forum
Downloads
Download Module
Sitemap
Partnerseiten
RSS News
Kontakt/Info
Sprache
EnglishFrench
Suchen
Login
Nickname
Passwort

Registrieren?
Passwort?
Navigation
 Home News  Forum Neueste Beiträge  Downloads Download Module eXV² Themes  Weblinks Tutorial Changelog 2.3.1 Jobcenter Gebrauchtmarkt OSMap  Sponsor Kalendersystem Sitemap Partnerseiten RSS News Kontakt/Info Webseiten Wetter
Willkommen im Free Web CMS : eXV² Forum!
  Forenarchiv
     eXV2 Module
  ecal-Benachrichtigung

Forum : eXV2 Module

Titel : ecal-Benachrichtigung

© 2004-2012 www.exv2.de
http://www.exv2.de

URL dieser Diskussion
http://www.exv2.de/modules/newbb_plus/viewtopic.php?topic_id=3078&forum=7


 BigGuy :

23.12.2005 23:24
 Hallo zusammen,

ich habe ecal 2.43 unter exV2 Vers. 2.0.4.1a zu laufen. Dabei tritt folgendes Problem auf:

Offenbar funktioniert die Terminbenachrichtigung nicht, d.h. die User bekommen nicht die "bestellte" Benachrichtigung gemailt.

In der SQL-Tabelle ecal_remind ist jedoch ein entsprechender Auftrag eingetragen.

FRAGE:
Bei welchem Ereignis werden die Erinnerungen eigentlich abgearbeitet? Oder muss auf dem Server ein Cronjob eingerichtet werden? Welche Datei müsste der Cron in diesem Fall ansprechen?

Vielen Dank für die Hilfe!

Alex

 user69 :

24.12.2005 00:17
 sobald ein user den kalender auf deiner seite aufruft wird das remindermail gesendet.

weis nicht ob meine info noch aktuell ist, aber bei meinen tests hat die funktion damals leider nicht immer richtig gefunzt... Sad

les dich hier mal durch:
http://www.exoops.de/modules/newbb_plus/viewtopic.php?topic_id=1590&forum=11

 BigGuy :

25.12.2005 01:23
 Hallo user69!

Vielen Dank für die Info - der verlinkte Thread war zwar nicht hilfreich, aber dafür deine Auskunft, dass die Erinnerung durch den Aufruf des Kalenders ausgelöst wird, um so mehr.

Es ist mir gelungen, das File remind_mail.php so zu verändern, dass es nun zuverlässig ausgeführt wird. Zunächst folgende Zeilen am Anfang des Scripts entfernen:
Zitat:
$query = $db->query("SELECT date FROM ".$db->prefix("ecal_remind")." WHERE uid= 0");
list($numrows) = $db->fetch_row($query);
if (!$numrows) {
$remindstart = strtotime ("+1 Day",strtotime(date("Y/m/d 0:0:0",time())));
$newid = $db->genId($db->prefix('ecal_remind')."_id_seq");
$db->query("INSERT INTO ".$db->prefix("ecal_remind")." SET id = $newid, tid = 0, uid = 0, date = $remindstart ");

}elseif ($numrows < strtotime(date("Y/m/d 0:0:0",time()))){



Mir ist völlig unklar, weshalb Nobse hier einen Datumseintrag unter UID 0 anlegt, zumal er später im Script nicht auf dieses Datum sondern auf das aktuelle Server-Datum zugreift (was auch Sinn macht). Wie auch immer: durch Entfernen der o.a. Zeilen funxt es wieder - natürlich muss auch noch eine der beiden geschweiften Klammern am Ende des Scripts entfernt werden... Wink

Außerdem habe ich noch folgende Zeilen angepasst:

Zitat:
$start = strtotime(date("Y/m/d 0:0:0",time()))+86400;


Nun wird auch tatsächlich rechtzeitig erinnert (beim Eintragen der Erinnerung wird scheinbar nicht ganz korrekt gezählt - sprich: um einen Tag falsch).

Zitat:
$query = $db->query("SELECT * FROM ".$db->prefix("ecal_remind")." WHERE date <= $start and date < $end and uid > 0");


Ursprünglich hieß es "WHERE date >= $start". Dies führte dazu, dass "verpasste" Erinnerungen auf ewig in der Datenbank hängen blieben. Nun werden alle fälligen UND alle überfälligen Erinnerungen versandt (z.B. wenn zur Fälligkeit der Server down war).

Wenn man nun sicher sein will, dass Erinnerungen pünktlich versandt werden, dann kann man folgenden Cronjob auf dem Server anlegen:

5 0 * * * lynx -dump http://www.domain.tld/modules/ecal/

Damit wird sicher gestellt, dass der Kalender auch wirklich mind. einmal täglich (hier um 0:05 Uhr) aufgerufen und damit die Erinnerungen auch pünktlich versandt werden. Ich denke, das ist besonders für Sites mit mittleren bis kleinen Besucherzahlen wichtig (nicht jeder Besucher klickt ja auch zwangsläufig den Kalender an!).

ACH JA:
Es wäre evtl. ratsam, alte Erinnerungstermine einmalig von Hand aus der SQL-Tabelle ecal_remind zu entfernen, bevor man die oben beschriebenen Änderungen vornimmt. Wäre ja unschön, wenn die User beim erstmaligen Ausführen des neuen Scripts Erinnerungen für Termine aus 1999 bekommen... Wink


Viele Grüße aus Berlin

A L E X
*** Frohes Fest und guten Rutsch! ***
party

[ Geändert von BigGuy an 25.12.2005 02:34 ]

 user69 :

25.12.2005 15:03
 hallo BigGuy.

werde mir deinen code mal näher ansehen.

soweit ich gesehen habe muss nach deinen änderungen diese zeile auch noch entfernet werden (ziemlich am ende der remind_mail.php)

Code:
$db->query("UPDATE ".$db->prefix("ecal_remind")." SET date = $end WHERE uid = 0 ");

 BigGuy :

25.12.2005 19:22
 Hallo user69,

stimmt, habe ich glatt übersehen! Dafür habe ich jetzt noch ein bisschen weiter gebastelt:

Bisher enthielt die Benachrichtigungsmail nur das Datum des Termins und einen Link auf den jeweiligen Tag. Schön wäre es, wenn auch der Titel des Termins mit angegeben würde. Also folgende Anpassungen:

Zitat:
[...]
$termindatum = strftime(_CAL_EVEDATESHORT,strtotime($termindata['stamp']));
$terminbetreff = $termindata['subject'];
$terminlink = XOOPS_URL."/modules/ecal/display.php?day=$day&month=$month&year=$year";

[...]

$xoopsMailer->assign("TERMINDATUM", $termindatum);
$xoopsMailer->assign("TERMINBETREFF", $terminbetreff);
$xoopsMailer->assign("TERMINLINK", $terminlink);


So, und nun basteln wir in unsere Erinnerungsmail die neue Variable ein und erhalten eine tolle, aussagekräftige Erinnerung! Cool
Komisch nur, dass im Originalscript schon der Titel des Termins ausgelesen wurde (SUBJECT), aber an keiner späteren Stelle dann auch verwendet wurde...


Viele Grüße aus Berlin
ALEX
Partnerseiten
http://www.exv2-filecenter.de/modules/news_ml/

Vote für eXV2
php
Kontakt/Info
  Kontakt
  Impressum
  Link zu uns
  AGB
  Datenschutzhinweis
Downloads
  eXV² Core
  Core Sprachfiles
eXV² Filecenter
  Downloads
  Download Module
  eXV² Themes
  Multilanguage Module
  Sprachfiles eXV² Module
eXV² Support
  France