diff options
author | Arun Persaud <arun@nubati.net> | 2009-06-21 23:23:15 -0700 |
---|---|---|
committer | Arun Persaud <arun@nubati.net> | 2009-06-23 00:17:00 -0700 |
commit | c757506a0a598593115c377a6e4acf399f4d2b83 (patch) | |
tree | ae26d5aca8ae536e5754781a3341422bfa07b632 /digest.php | |
parent | 1a44bc0d058016a093a112f064bac63a570c400d (diff) | |
download | e-DoKo-c757506a0a598593115c377a6e4acf399f4d2b83.tar.gz e-DoKo-c757506a0a598593115c377a6e4acf399f4d2b83.tar.bz2 e-DoKo-c757506a0a598593115c377a6e4acf399f4d2b83.zip |
added option for email digest
you can now select to get emails only every N hours. They are saved in the database and a cron script will send them out.
Diffstat (limited to 'digest.php')
-rw-r--r-- | digest.php | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/digest.php b/digest.php new file mode 100644 index 0000000..c93117a --- /dev/null +++ b/digest.php @@ -0,0 +1,104 @@ +<?php +error_reporting(E_ALL); + +include_once("config.php"); /* needs to be first in list, since other includes use this */ +include_once("./include/output.php"); /* html output only */ +include_once("./include/db.php"); /* database only */ +include_once("./include/functions.php"); /* the rest */ + +/* make sure that user has set all variables in config.php */ +config_check(); + +/* open the database */ +if(DB_open()<0) + exit(); + +/* only callable via cron or CLI */ +if(isset($_SERVER['REMOTE_ADDR'])) + exit(); + +/* get userid for users that have digest set != digest-off */ +$users = DB_get_digest_users(); + +global $defaulttimezone; +foreach($users as $uid) + { + // get local time + + $zone = DB_get_user_timezone($uid); + date_default_timezone_set($zone); + $time = (int)(date("H")); + + // calculate mod by digest-time + $PREF = DB_get_PREF($uid); + switch($PREF['digest']) + { + case 'digest-off': + break; + case 'digest-1h': + $every = 1; + break; + case 'digest-2h': + $every = 2; + break; + case 'digest-3h': + $every = 3; + break; + case 'digest-4h': + $every = 4; + break; + case 'digest-6h': + $every = 6; + break; + case 'digest-12h': + $every = 12; + break; + case 'digest-24h': + $every = 24; + break; + } + + // make default time to send email 18:00 + if( ( ($time-18) % $every) == 0 ) + { + $email = DB_get_email('userid',$uid); + + // get messages + $messages = DB_get_digest_message_by_email($email); + + // add them together + if(sizeof($messages)) + { + $text = array(); + $i=0; + foreach($messages as $mess ) + { + $text[$i] = $mess[1]."\n++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"; + $i++; + } + + $text = implode("\n",$text); + + // add header, footer, sent out + $name = DB_get_name('userid',$uid); + $header = "Hello $name\n\nHere is a digest of the latest emails:\n\n"; + + $footer = "\nHave a nice day\n". + " your E-Doko digester\n\n". + "-- \n". + "You can change your mail delivery mode in the preference menu.\n". + 'web: http://doko.nubati.net '. + 'help: http://wiki.nubati.net/EmailDoko '. + 'bugs: http://wiki.nubati.net/EmailDokoIssues'; + + $subject = "$EmailName Digest"; + + sendmail($email,$subject,$header.$text.$footer); + } + + // delete all messages + foreach($messages as $mess ) + DB_digest_delete_message($mess[0]); + } + } /* end foreach users */ +?>
\ No newline at end of file |