highlight the call if this is the last round where you can make this call
[e-DoKo.git] / digest.php
1 <?php
2 error_reporting(E_ALL);
3
4 include_once("config.php");                /* needs to be first in list, since other includes use this */
5 include_once("./include/output.php");      /* html output only */
6 include_once("./include/db.php");          /* database only */
7 include_once("./include/functions.php");   /* the rest */
8
9 /* make sure that user has set all variables in config.php */
10 config_check();
11
12 /* open the database */
13 if(DB_open()<0)
14   exit();
15
16 /* only callable via cron or CLI */
17 if(isset($_SERVER['REMOTE_ADDR']))
18   exit();
19
20 /* get userid for users that have digest set != digest-off */
21 $users = DB_get_digest_users();
22
23 global $defaulttimezone;
24 foreach($users as $uid)
25   {
26     // get local time
27
28     $zone  = DB_get_user_timezone($uid);
29     date_default_timezone_set($zone);
30     $time = (int)(date("H"));
31
32     // calculate mod by digest-time
33     $PREF = DB_get_PREF($uid);
34     switch($PREF['digest'])
35       {
36       case 'digest-off':
37         break;
38       case 'digest-1h':
39         $every = 1;
40         break;
41       case 'digest-2h':
42         $every = 2;
43         break;
44       case 'digest-3h':
45         $every = 3;
46         break;
47       case 'digest-4h':
48         $every = 4;
49         break;
50       case 'digest-6h':
51         $every = 6;
52         break;
53       case 'digest-12h':
54         $every = 12;
55         break;
56       case 'digest-24h':
57         $every = 24;
58         break;
59       }
60
61     // make default time to send email 18:00
62     if( ( ($time-18) % $every) == 0 )
63       {
64         $email = DB_get_email('userid',$uid);
65
66         // get messages
67         $messages = DB_get_digest_message_by_email($email);
68
69         // add them together
70         if(sizeof($messages))
71           {
72             $text = array();
73             $i=0;
74             foreach($messages as $mess )
75               {
76                 $text[$i] = $mess[1]."\n++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
77                 $i++;
78               }
79
80             $text = implode("\n",$text);
81
82             // add header, footer, sent out
83             $name    = DB_get_name('userid',$uid);
84             $header  = "Hello $name\n\nHere is a digest of the latest emails:\n\n";
85
86             $footer  = "\nHave a nice day\n".
87               "   your E-Doko digester\n\n".
88               "-- \n".
89               "You can change your mail delivery mode in the preference menu.\n".
90               'web: http://doko.nubati.net   '.
91               'help: http://wiki.nubati.net/EmailDoko   '.
92               'bugs: http://wiki.nubati.net/EmailDokoIssues';
93
94             $subject = "$EmailName Digest";
95
96             sendmail($email,$subject,$header.$text.$footer);
97           }
98
99         // delete all messages
100         foreach($messages as $mess )
101           DB_digest_delete_message($mess[0]);
102       }
103   } /* end foreach users */
104 ?>