//in class.flyspray.conf touch(Flyspray::get_tmp_dir() . '/flysprayreminders.run'); $user = new User(0); $now = time(); ############ Task one: Send reminders ############ $reminders = $db->x->getAll("SELECT r.reminder_message AS message, r.*\n FROM {reminders} r\n INNER JOIN {users} u ON u.user_id = r.to_user_id\n INNER JOIN {tasks} t ON r.task_id = t.task_id\n INNER JOIN {projects} p ON t.project_id = p.project_id\n WHERE t.is_closed = '0' AND r.start_time < ?\n AND r.last_sent + r.how_often < ?\n ORDER BY r.reminder_id", null, array(time(), time())); foreach ($reminders as $row) { if (Notifications::send_now($row['to_user_id'], ADDRESS_USER, NOTIFY_REMINDER, $row)) { // Update the database with the time sent $db->x->execParam('UPDATE {reminders} SET last_sent = ? WHERE reminder_id = ?', null, array(time(), $row['reminder_id'])); } } ############ Task two: send stored notifications ############ Notifications::send_stored(); ############ Task three: send project manager digests ############ $sql = $db->x->getAll('SELECT project_id, project_title, last_digest, project_prefix FROM {projects} WHERE send_digest = 1 AND last_digest < ?', null, time() - 60 * 60 * 24 * 7); foreach ($sql as $project) { // find out all project managers $pms = $db->x->GetCol('SELECT uig.user_id FROM {users_in_groups} uig LEFT JOIN {groups} g ON uig.group_id = g.group_id WHERE g.project_id = ? AND g.manage_project = 1', null, $project['project_id']); // Now generate the message, we are interested in opened/reopened, closed and assigned tasks $opened = $reopened = $closed = $assigned = array(); $message = L('digestfor') . ' ' . $project['project_title'] . ":\n\n"; $evt = $db->x->getAll('SELECT h.event_type, lr.item_name AS resolution_name, t.task_id, t.item_summary, u.user_name, u.real_name, t.prefix_id