xref: /plugin/bez/cron/functions.php (revision 14a1f0a435358d79e2e5814db93baefc0cfe6877)
18d31684bSSzymon Olewniczak<?php
28d31684bSSzymon Olewniczak
3*14a1f0a4SSzymon Olewniczak$action = new action_plugin_bez_base();
4*14a1f0a4SSzymon Olewniczak$action->createObjects();
58d31684bSSzymon Olewniczak
68d31684bSSzymon Olewniczakfunction send_inactive_issue() {
7*14a1f0a4SSzymon Olewniczak    global $action;
88d31684bSSzymon Olewniczak
9*14a1f0a4SSzymon Olewniczak    $threads = $action->get_model()->threadFactory->get_all(array(
1053df74e7SSzymon Olewniczak        'last_activity_date' => array('<=', date('c', strtotime('-26 days'))),
1153df74e7SSzymon Olewniczak        'state' => 'opened'
128d31684bSSzymon Olewniczak    ));
138d31684bSSzymon Olewniczak
1453df74e7SSzymon Olewniczak    foreach ($threads as $thread) {
158d31684bSSzymon Olewniczak        //send reminder once a month
1653df74e7SSzymon Olewniczak        $day_of_issue_last_activity = date('d', strtotime($thread->last_activity_date));
1753df74e7SSzymon Olewniczak        if ($day_of_issue_last_activity == date('d')) {
186e6a7f3dSSzymon Olewniczak            //send message to all
1953df74e7SSzymon Olewniczak            $thread->mail_notify_issue_inactive($thread->get_participants('subscribent'));
208d31684bSSzymon Olewniczak        }
218d31684bSSzymon Olewniczak    }
228d31684bSSzymon Olewniczak}
238d31684bSSzymon Olewniczak
248d31684bSSzymon Olewniczakfunction send_one_day_task_reminder() {
25*14a1f0a4SSzymon Olewniczak    global $action;
268d31684bSSzymon Olewniczak
27*14a1f0a4SSzymon Olewniczak    $tasks = $action->get_model()->taskFactory->get_all(array(
288d31684bSSzymon Olewniczak        'plan_date' => date('Y-m-d', strtotime('+1 day')),
2953df74e7SSzymon Olewniczak        'state'     => 'opened'
308d31684bSSzymon Olewniczak    ));
318d31684bSSzymon Olewniczak
328d31684bSSzymon Olewniczak    foreach ($tasks as $task) {
3353df74e7SSzymon Olewniczak        $task->mail_notify_remind($task->get_participants('subscribent'));
348d31684bSSzymon Olewniczak    }
358d31684bSSzymon Olewniczak}
368d31684bSSzymon Olewniczak
37*14a1f0a4SSzymon Olewniczakfunction send_weekly_message() {
38*14a1f0a4SSzymon Olewniczak    global $action;
39*14a1f0a4SSzymon Olewniczak    global $auth;
40*14a1f0a4SSzymon Olewniczak
41*14a1f0a4SSzymon Olewniczak    //email => array('user' => array('issues' => array(), 'tasks' => array()))
42*14a1f0a4SSzymon Olewniczak    $msg = array();
43*14a1f0a4SSzymon Olewniczak    $output = array();
44*14a1f0a4SSzymon Olewniczak
45*14a1f0a4SSzymon Olewniczak    $threads = $action->get_model()->threadFactory->get_all(array(
46*14a1f0a4SSzymon Olewniczak          'type' => 'issue',
47*14a1f0a4SSzymon Olewniczak          'priority' => array('OR', array('2', '1'))
48*14a1f0a4SSzymon Olewniczak      ));
49*14a1f0a4SSzymon Olewniczak
50*14a1f0a4SSzymon Olewniczak    foreach ($threads as $thread) {
51*14a1f0a4SSzymon Olewniczak        $key = $thread->coordinator;
52*14a1f0a4SSzymon Olewniczak        if (!isset($msg[$key])) {
53*14a1f0a4SSzymon Olewniczak            $msg[$key] = array(
54*14a1f0a4SSzymon Olewniczak                'issues'          => array(),
55*14a1f0a4SSzymon Olewniczak                'coming_tasks'    => array(),
56*14a1f0a4SSzymon Olewniczak                'outdated_tasks'  => array()
57*14a1f0a4SSzymon Olewniczak            );
58*14a1f0a4SSzymon Olewniczak        }
59*14a1f0a4SSzymon Olewniczak        $msg[$key]['issues'][] = $thread;
60*14a1f0a4SSzymon Olewniczak    }
61*14a1f0a4SSzymon Olewniczak
62*14a1f0a4SSzymon Olewniczak    $tasks  = $action->get_model()->taskFactory->get_all(array(
63*14a1f0a4SSzymon Olewniczak        'priority' => array('OR', array('2', '1'))
64*14a1f0a4SSzymon Olewniczak    ));
65*14a1f0a4SSzymon Olewniczak
66*14a1f0a4SSzymon Olewniczak    foreach ($tasks as $task) {
67*14a1f0a4SSzymon Olewniczak        $key = $task->assignee;
68*14a1f0a4SSzymon Olewniczak        if (!isset($msg[$key])) {
69*14a1f0a4SSzymon Olewniczak            $msg[$key] = array(
70*14a1f0a4SSzymon Olewniczak                'issues'          => array(),
71*14a1f0a4SSzymon Olewniczak                'coming_tasks'    => array(),
72*14a1f0a4SSzymon Olewniczak                'outdated_tasks'  => array()
73*14a1f0a4SSzymon Olewniczak            );
74*14a1f0a4SSzymon Olewniczak        }
75*14a1f0a4SSzymon Olewniczak
76*14a1f0a4SSzymon Olewniczak        if ($task->priority == '1') {
77*14a1f0a4SSzymon Olewniczak            $msg[$key]['coming_tasks'][] = $task;
78*14a1f0a4SSzymon Olewniczak        } else {
79*14a1f0a4SSzymon Olewniczak            $msg[$key]['outdated_tasks'][] = $task;
80*14a1f0a4SSzymon Olewniczak        }
81*14a1f0a4SSzymon Olewniczak    }
82*14a1f0a4SSzymon Olewniczak
83*14a1f0a4SSzymon Olewniczak    //outdated_tasks, coming_tasks, open_tasks
84*14a1f0a4SSzymon Olewniczak
85*14a1f0a4SSzymon Olewniczak
86*14a1f0a4SSzymon Olewniczak    foreach ($msg as $user => $data) {
87*14a1f0a4SSzymon Olewniczak        $udata = $auth->getUserData($user);
88*14a1f0a4SSzymon Olewniczak
89*14a1f0a4SSzymon Olewniczak        $issues = $data['issues'];
90*14a1f0a4SSzymon Olewniczak        $outdated_tasks = $data['outdated_tasks'];
91*14a1f0a4SSzymon Olewniczak        $coming_tasks = $data['coming_tasks'];
92*14a1f0a4SSzymon Olewniczak
93*14a1f0a4SSzymon Olewniczak
94*14a1f0a4SSzymon Olewniczak        if (count($issues) + count($outdated_tasks) + count($coming_tasks) == 0)
95*14a1f0a4SSzymon Olewniczak            continue;
96*14a1f0a4SSzymon Olewniczak
97*14a1f0a4SSzymon Olewniczak        $to = $udata['name'].' <'.$udata['mail'].'>';
98*14a1f0a4SSzymon Olewniczak
99*14a1f0a4SSzymon Olewniczak        $tpl = $action->get_tpl();
100*14a1f0a4SSzymon Olewniczak        $tpl->set('issues', $issues);
101*14a1f0a4SSzymon Olewniczak        $tpl->set('outdated_tasks', $outdated_tasks);
102*14a1f0a4SSzymon Olewniczak        $tpl->set('coming_tasks', $coming_tasks);
103*14a1f0a4SSzymon Olewniczak        $body = $action->bez_tpl_include('cron/weekly-message', true);
104*14a1f0a4SSzymon Olewniczak
105*14a1f0a4SSzymon Olewniczak        $mailer = new \dokuwiki\plugin\bez\meta\Mailer();
106*14a1f0a4SSzymon Olewniczak        $rep = array();
107*14a1f0a4SSzymon Olewniczak        $mailer->setBody('', $rep, NULL, $body, false);
108*14a1f0a4SSzymon Olewniczak
109*14a1f0a4SSzymon Olewniczak        $mailer->to($to);
110*14a1f0a4SSzymon Olewniczak        $subject = 'Nadchodzące zadania';
111*14a1f0a4SSzymon Olewniczak        $mailer->subject($subject);
112*14a1f0a4SSzymon Olewniczak
113*14a1f0a4SSzymon Olewniczak        $mailer->send();
114*14a1f0a4SSzymon Olewniczak        $output[] = array($to, $subject, $body, array());
115*14a1f0a4SSzymon Olewniczak    }
116*14a1f0a4SSzymon Olewniczak
117*14a1f0a4SSzymon Olewniczak    return $output;
118*14a1f0a4SSzymon Olewniczak}
119