forked from flyspray/flyspray
-
Notifications
You must be signed in to change notification settings - Fork 0
/
schedule.php
82 lines (67 loc) · 3.07 KB
/
schedule.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/* * ******************************************************\
| Scheduled Jobs (poor man's cron) |
| ~~~~~~~~~~~~~~ |
| This script checks for pending scheduled notifications |
| and sends them at the right time. |
\******************************************************* */
define('IN_FS', true);
if (php_sapi_name() !== 'cli') {
die("Reminder daemon must run in the CLI SAPI only");
}
require_once 'header.php';
include_once BASEDIR . '/includes/class.notify.php';
function send_reminders() {
global $db, $fs, $proj;
$notify = & new Notifications;
$user = & new User(0);
$now = time();
$lang = $fs->prefs['lang_code'];
$get_reminders = $db->Query("SELECT r.*, t.*, u.*
FROM {reminders} r
INNER JOIN {users} u ON u.user_id = r.to_user_id
INNER JOIN {tasks} t ON r.task_id = t.task_id
INNER JOIN {projects} p ON t.project_id = p.project_id
WHERE t.is_closed = '0' AND r.start_time < ?
AND r.last_sent + r.how_often < ?
ORDER BY r.reminder_id", array(time(), time())
);
while ($row = $db->FetchRow($get_reminders)) {
// So that the sender in emails will is the right project, not 'Default project'
// and also to get the projects default language, if needed.
$proj = new Project($row['project_id']);
$jabber_users = array();
$email_users = array();
if (( $fs->prefs['user_notify'] == 1 || $fs->prefs['user_notify'] == 2 ) && ($row['notify_type'] == 1 || $row['notify_type'] == 3 )) {
$email_users[] = $row['email_address'];
}
if (( $fs->prefs['user_notify'] == 1 || $fs->prefs['user_notify'] == 3 ) && ($row['notify_type'] == 2 || $row['notify_type'] == 3 )) {
$jabber_users[] = $row['jabber_id'];
}
if (!empty($row['lang_code'])) {
$lang = $row['lang_code'];
} else if (!empty($proj->prefs['lang_code'])) {
$lang = $proj->prefs['lang_code'];
} else {
$lang = $fs->prefs['lang_code'];
}
$subject = tL('notifyfromfs', $lang);
$message = $row['reminder_message'];
// Pass the recipients and message onto the notification function
$notify->SendEmail($email_users, $subject, $message);
$notify->StoreJabber($jabber_users, $subject, $message);
// Update the database with the time sent
$update_db = $db->Query("UPDATE {reminders}
SET last_sent = ?
WHERE reminder_id = ?", array(time(), $row['reminder_id']));
}
// send those stored notifications
$notify->SendJabber();
unset($notify, $user);
}
if (isset($conf['general']['reminder_daemon']) && ($conf['general']['reminder_daemon'] == 1)) {
send_reminders();
} else {
die("reminder daemon is disabled");
}
?>