xref: /plugin/bez/cron/functions.php (revision 53df74e7ac5ae4234aac1fa716a33878a039026f)
18d31684bSSzymon Olewniczak<?php
28d31684bSSzymon Olewniczak
3b59c0793SSzymon Olewniczakclass Cron_dummy_action extends DokuWiki_Action_Plugin {
48d31684bSSzymon Olewniczak    public function getPluginName() {
58d31684bSSzymon Olewniczak        return 'bez';
68d31684bSSzymon Olewniczak    }
78d31684bSSzymon Olewniczak
8*53df74e7SSzymon Olewniczak    public static function id() {
98d31684bSSzymon Olewniczak        $args = func_get_args();
108d31684bSSzymon Olewniczak        array_unshift($args, 'bez');
118d31684bSSzymon Olewniczak
128d31684bSSzymon Olewniczak        return implode(':', $args);
138d31684bSSzymon Olewniczak    }
14*53df74e7SSzymon Olewniczak
15*53df74e7SSzymon Olewniczak    public static function url() {
16*53df74e7SSzymon Olewniczak        $args = func_get_args();
17*53df74e7SSzymon Olewniczak
18*53df74e7SSzymon Olewniczak        $id = call_user_func_array('Cron_dummy_action::id', $args);
19*53df74e7SSzymon Olewniczak        return DOKU_URL . 'doku.php?id=' . $id;
20*53df74e7SSzymon Olewniczak
21*53df74e7SSzymon Olewniczak
22*53df74e7SSzymon Olewniczak    }
238d31684bSSzymon Olewniczak};
2404f149d4SSzymon Olewniczak
25b59c0793SSzymon Olewniczak$dummy_action = new Cron_dummy_action();
26*53df74e7SSzymon Olewniczak$model = new \dokuwiki\plugin\bez\mdl\Model($auth, $dw_user, $dummy_action, $conf);
278d31684bSSzymon Olewniczak
288d31684bSSzymon Olewniczakfunction send_inactive_issue() {
298d31684bSSzymon Olewniczak    global $model;
308d31684bSSzymon Olewniczak
31*53df74e7SSzymon Olewniczak    $threads = $model->threadFactory->get_all(array(
32*53df74e7SSzymon Olewniczak        'last_activity_date' => array('<=', date('c', strtotime('-26 days'))),
33*53df74e7SSzymon Olewniczak        'state' => 'opened'
348d31684bSSzymon Olewniczak    ));
358d31684bSSzymon Olewniczak
36*53df74e7SSzymon Olewniczak    foreach ($threads as $thread) {
378d31684bSSzymon Olewniczak        //send reminder once a month
38*53df74e7SSzymon Olewniczak        $day_of_issue_last_activity = date('d', strtotime($thread->last_activity_date));
39*53df74e7SSzymon Olewniczak        if ($day_of_issue_last_activity == date('d')) {
406e6a7f3dSSzymon Olewniczak            //send message to all
41*53df74e7SSzymon Olewniczak            $thread->mail_notify_issue_inactive($thread->get_participants('subscribent'));
428d31684bSSzymon Olewniczak        }
438d31684bSSzymon Olewniczak    }
448d31684bSSzymon Olewniczak}
458d31684bSSzymon Olewniczak
468d31684bSSzymon Olewniczakfunction send_one_day_task_reminder() {
478d31684bSSzymon Olewniczak    global $model;
488d31684bSSzymon Olewniczak
49*53df74e7SSzymon Olewniczak    $tasks = $model->taskFactory->get_all(array(
508d31684bSSzymon Olewniczak        'plan_date' => date('Y-m-d', strtotime('+1 day')),
51*53df74e7SSzymon Olewniczak        'state'     => 'opened'
528d31684bSSzymon Olewniczak    ));
538d31684bSSzymon Olewniczak
548d31684bSSzymon Olewniczak    foreach ($tasks as $task) {
55*53df74e7SSzymon Olewniczak        $task->mail_notify_remind($task->get_participants('subscribent'));
568d31684bSSzymon Olewniczak    }
578d31684bSSzymon Olewniczak}
588d31684bSSzymon Olewniczak
59*53df74e7SSzymon Olewniczak//function send_weekly_message($simulate=true) {
60*53df74e7SSzymon Olewniczak//    global $conf, $auth;
61*53df74e7SSzymon Olewniczak//
62*53df74e7SSzymon Olewniczak//    //$helper = new helper_plugin_bez();
63*53df74e7SSzymon Olewniczak//
64*53df74e7SSzymon Olewniczak//   //email => array('user' => array('issues' => array(), 'tasks' => array()))
65*53df74e7SSzymon Olewniczak//    $msg = array();
66*53df74e7SSzymon Olewniczak//    $output = array();
67*53df74e7SSzymon Olewniczak//
68*53df74e7SSzymon Olewniczak//    try {
69*53df74e7SSzymon Olewniczak//        $isso = new Issues();
70*53df74e7SSzymon Olewniczak//        $tasko = new Tasks();
71*53df74e7SSzymon Olewniczak//    } catch (Exception $e) {
72*53df74e7SSzymon Olewniczak//        echo $e->getMessage().': '.$e->getFile();
73*53df74e7SSzymon Olewniczak//    }
74*53df74e7SSzymon Olewniczak//
75*53df74e7SSzymon Olewniczak//    $issues = $isso->cron_get_unsolved();
76*53df74e7SSzymon Olewniczak//
77*53df74e7SSzymon Olewniczak//    foreach ($issues as $issue) {
78*53df74e7SSzymon Olewniczak//        $key = $issue['coordinator'];
79*53df74e7SSzymon Olewniczak//        if (!isset($msg[$key]))
80*53df74e7SSzymon Olewniczak//            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
81*53df74e7SSzymon Olewniczak//                                'outdated_tasks' => array());
82*53df74e7SSzymon Olewniczak//
83*53df74e7SSzymon Olewniczak//        $msg[$key]['issues'][] = $issue;
84*53df74e7SSzymon Olewniczak//    }
85*53df74e7SSzymon Olewniczak//
86*53df74e7SSzymon Olewniczak//    $coming_tasks_all  = $tasko->cron_get_coming_tasks();
87*53df74e7SSzymon Olewniczak//
88*53df74e7SSzymon Olewniczak//    foreach ($coming_tasks_all as $task) {
89*53df74e7SSzymon Olewniczak//        $key = $task['executor'];
90*53df74e7SSzymon Olewniczak//        if (!isset($msg[$key]))
91*53df74e7SSzymon Olewniczak//            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
92*53df74e7SSzymon Olewniczak//                                'outdated_tasks' => array());
93*53df74e7SSzymon Olewniczak//
94*53df74e7SSzymon Olewniczak//        $msg[$key]['coming_tasks'][] = $task;
95*53df74e7SSzymon Olewniczak//    }
96*53df74e7SSzymon Olewniczak//
97*53df74e7SSzymon Olewniczak//    $outdated_tasks_all  = $tasko->cron_get_outdated_tasks();
98*53df74e7SSzymon Olewniczak//
99*53df74e7SSzymon Olewniczak//    foreach ($outdated_tasks_all as $task) {
100*53df74e7SSzymon Olewniczak//        $key = $task['executor'];
101*53df74e7SSzymon Olewniczak//        if (!isset($msg[$key]))
102*53df74e7SSzymon Olewniczak//            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
103*53df74e7SSzymon Olewniczak//                                'outdated_tasks' => array());
104*53df74e7SSzymon Olewniczak//
105*53df74e7SSzymon Olewniczak//        $msg[$key]['outdated_tasks'][] = $task;
106*53df74e7SSzymon Olewniczak//    }
107*53df74e7SSzymon Olewniczak//
108*53df74e7SSzymon Olewniczak//    //outdated_tasks, coming_tasks, open_tasks
109*53df74e7SSzymon Olewniczak//
110*53df74e7SSzymon Olewniczak//
111*53df74e7SSzymon Olewniczak//    foreach ($msg as $user => $data) {
112*53df74e7SSzymon Olewniczak//        $udata = $auth->getUserData($user);
113*53df74e7SSzymon Olewniczak//
114*53df74e7SSzymon Olewniczak//        $his_issues = $data['issues'];
115*53df74e7SSzymon Olewniczak//        $outdated_tasks = $data['outdated_tasks'];
116*53df74e7SSzymon Olewniczak//        $coming_tasks = $data['coming_tasks'];
117*53df74e7SSzymon Olewniczak//
118*53df74e7SSzymon Olewniczak//
119*53df74e7SSzymon Olewniczak//        if (count($his_issues) + count($outdated_tasks) + count($coming_tasks) == 0)
120*53df74e7SSzymon Olewniczak//            continue;
121*53df74e7SSzymon Olewniczak//
122*53df74e7SSzymon Olewniczak//        $to = $udata['name'].' <'.$udata['mail'].'>';
123*53df74e7SSzymon Olewniczak//
124*53df74e7SSzymon Olewniczak//        ob_start();
125*53df74e7SSzymon Olewniczak//        include 'tpl/weekly-message.php';
126*53df74e7SSzymon Olewniczak//        $body = ob_get_clean();
127*53df74e7SSzymon Olewniczak//
128*53df74e7SSzymon Olewniczak//        $mailer = new \dokuwiki\plugin\bez\meta\Mailer();
129*53df74e7SSzymon Olewniczak//        $rep = array();
130*53df74e7SSzymon Olewniczak//        $mailer->setBody('', $rep, NULL, $body, false);
131*53df74e7SSzymon Olewniczak//
132*53df74e7SSzymon Olewniczak//        $mailer->to($to);
133*53df74e7SSzymon Olewniczak//        $subject = 'Nadchodzące zadania';
134*53df74e7SSzymon Olewniczak//        $mailer->subject($subject);
135*53df74e7SSzymon Olewniczak//
136*53df74e7SSzymon Olewniczak//        if ($simulate === false) {
137*53df74e7SSzymon Olewniczak//            $send = $mailer->send();
138*53df74e7SSzymon Olewniczak//        }
139*53df74e7SSzymon Olewniczak//        $output[] = array($to, $subject, $body, array());
140*53df74e7SSzymon Olewniczak//    }
141*53df74e7SSzymon Olewniczak//
142*53df74e7SSzymon Olewniczak//    return $output;
143*53df74e7SSzymon Olewniczak//}
144