xref: /plugin/bez/cron/functions.php (revision b59c079300053661660671905e82efcd55beebab)
18d31684bSSzymon Olewniczak<?php
28d31684bSSzymon Olewniczak
38d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/helper.php';
48d31684bSSzymon Olewniczak
58d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/exceptions.php';
68d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/interfaces.php';
78d31684bSSzymon Olewniczak
88d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/mdl/model.php';
98d31684bSSzymon Olewniczak
10*b59c0793SSzymon Olewniczakclass Cron_dummy_action extends DokuWiki_Action_Plugin {
118d31684bSSzymon Olewniczak    public function getPluginName() {
128d31684bSSzymon Olewniczak        return 'bez';
138d31684bSSzymon Olewniczak    }
148d31684bSSzymon Olewniczak
158d31684bSSzymon Olewniczak    public function id() {
168d31684bSSzymon Olewniczak        $args = func_get_args();
178d31684bSSzymon Olewniczak        array_unshift($args, 'bez');
188d31684bSSzymon Olewniczak
198d31684bSSzymon Olewniczak        return implode(':', $args);
208d31684bSSzymon Olewniczak    }
218d31684bSSzymon Olewniczak};
2204f149d4SSzymon Olewniczak
23*b59c0793SSzymon Olewniczak$dummy_action = new Cron_dummy_action();
24*b59c0793SSzymon Olewniczak$model = new BEZ_mdl_Model($auth, $dw_user, $dummy_action, $conf);
258d31684bSSzymon Olewniczak
268d31684bSSzymon Olewniczakfunction send_inactive_issue() {
278d31684bSSzymon Olewniczak    global $model;
288d31684bSSzymon Olewniczak
298d31684bSSzymon Olewniczak    $issues = $model->issues->get_all(array(
308d31684bSSzymon Olewniczak        'last_activity' => array('<=',
31086a1b29SSzymon Olewniczak            date('Y-m-d', strtotime('-30 days')), 'date'
328d31684bSSzymon Olewniczak        ),
338d31684bSSzymon Olewniczak        'state' => '0'
348d31684bSSzymon Olewniczak    ));
358d31684bSSzymon Olewniczak
368d31684bSSzymon Olewniczak    foreach ($issues as $issue) {
378d31684bSSzymon Olewniczak        //send reminder once a month
388d31684bSSzymon Olewniczak        $day_of_issue_last_activity = date('d', strtotime($issue->last_activity));
398d31684bSSzymon Olewniczak        if ($day_of_issue_last_activity === date('d')) {
406e6a7f3dSSzymon Olewniczak            //send message to all
416e6a7f3dSSzymon Olewniczak            $issue->mail_notify_issue_inactive($issue->get_subscribents());
428d31684bSSzymon Olewniczak        }
438d31684bSSzymon Olewniczak    }
448d31684bSSzymon Olewniczak}
458d31684bSSzymon Olewniczak
468d31684bSSzymon Olewniczakfunction send_one_day_task_reminder() {
478d31684bSSzymon Olewniczak    global $model;
488d31684bSSzymon Olewniczak
498d31684bSSzymon Olewniczak    $tasks = $model->tasks->get_all(array(
508d31684bSSzymon Olewniczak        'plan_date' => date('Y-m-d', strtotime('+1 day')),
518d31684bSSzymon Olewniczak        'state'     => '0' //only open tasks
528d31684bSSzymon Olewniczak    ));
538d31684bSSzymon Olewniczak
548d31684bSSzymon Olewniczak    foreach ($tasks as $task) {
556e6a7f3dSSzymon Olewniczak        $task->mail_notify_remind($task->get_subscribents());
568d31684bSSzymon Olewniczak    }
578d31684bSSzymon Olewniczak}
588d31684bSSzymon Olewniczak
598d31684bSSzymon Olewniczakfunction send_weekly_message($simulate=true) {
608d31684bSSzymon Olewniczak    global $conf, $auth, $bezlang;
618d31684bSSzymon Olewniczak
628d31684bSSzymon Olewniczak    $helper = new helper_plugin_bez();
638d31684bSSzymon Olewniczak
648d31684bSSzymon Olewniczak   //email => array('user' => array('issues' => array(), 'tasks' => array()))
658d31684bSSzymon Olewniczak    $msg = array();
668d31684bSSzymon Olewniczak    $output = array();
678d31684bSSzymon Olewniczak
688d31684bSSzymon Olewniczak    try {
698d31684bSSzymon Olewniczak        $isso = new Issues();
708d31684bSSzymon Olewniczak        $tasko = new Tasks();
718d31684bSSzymon Olewniczak    } catch (Exception $e) {
728d31684bSSzymon Olewniczak        echo $e->getMessage().': '.$e->getFile();
738d31684bSSzymon Olewniczak    }
748d31684bSSzymon Olewniczak
758d31684bSSzymon Olewniczak    $issues = $isso->cron_get_unsolved();
768d31684bSSzymon Olewniczak
778d31684bSSzymon Olewniczak    foreach ($issues as $issue) {
788d31684bSSzymon Olewniczak        $key = $issue['coordinator'];
798d31684bSSzymon Olewniczak        if (!isset($msg[$key]))
808d31684bSSzymon Olewniczak            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
818d31684bSSzymon Olewniczak                                'outdated_tasks' => array());
828d31684bSSzymon Olewniczak
838d31684bSSzymon Olewniczak        $msg[$key]['issues'][] = $issue;
848d31684bSSzymon Olewniczak    }
858d31684bSSzymon Olewniczak
868d31684bSSzymon Olewniczak    $coming_tasks_all  = $tasko->cron_get_coming_tasks();
878d31684bSSzymon Olewniczak
888d31684bSSzymon Olewniczak    foreach ($coming_tasks_all as $task) {
898d31684bSSzymon Olewniczak        $key = $task['executor'];
908d31684bSSzymon Olewniczak        if (!isset($msg[$key]))
918d31684bSSzymon Olewniczak            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
928d31684bSSzymon Olewniczak                                'outdated_tasks' => array());
938d31684bSSzymon Olewniczak
948d31684bSSzymon Olewniczak        $msg[$key]['coming_tasks'][] = $task;
958d31684bSSzymon Olewniczak    }
968d31684bSSzymon Olewniczak
978d31684bSSzymon Olewniczak    $outdated_tasks_all  = $tasko->cron_get_outdated_tasks();
988d31684bSSzymon Olewniczak
998d31684bSSzymon Olewniczak    foreach ($outdated_tasks_all as $task) {
1008d31684bSSzymon Olewniczak        $key = $task['executor'];
1018d31684bSSzymon Olewniczak        if (!isset($msg[$key]))
1028d31684bSSzymon Olewniczak            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
1038d31684bSSzymon Olewniczak                                'outdated_tasks' => array());
1048d31684bSSzymon Olewniczak
1058d31684bSSzymon Olewniczak        $msg[$key]['outdated_tasks'][] = $task;
1068d31684bSSzymon Olewniczak    }
1078d31684bSSzymon Olewniczak
1088d31684bSSzymon Olewniczak    //outdated_tasks, coming_tasks, open_tasks
1098d31684bSSzymon Olewniczak
1108d31684bSSzymon Olewniczak
1118d31684bSSzymon Olewniczak    foreach ($msg as $user => $data) {
1128d31684bSSzymon Olewniczak        $udata = $auth->getUserData($user);
1138d31684bSSzymon Olewniczak
1148d31684bSSzymon Olewniczak        $his_issues = $data['issues'];
1158d31684bSSzymon Olewniczak        $outdated_tasks = $data['outdated_tasks'];
1168d31684bSSzymon Olewniczak        $coming_tasks = $data['coming_tasks'];
1178d31684bSSzymon Olewniczak
1188d31684bSSzymon Olewniczak
1198d31684bSSzymon Olewniczak        if (count($his_issues) + count($outdated_tasks) + count($coming_tasks) == 0)
1208d31684bSSzymon Olewniczak            continue;
1218d31684bSSzymon Olewniczak
1228d31684bSSzymon Olewniczak        $to = $udata['name'].' <'.$udata['mail'].'>';
1238d31684bSSzymon Olewniczak
1248d31684bSSzymon Olewniczak        ob_start();
1258d31684bSSzymon Olewniczak        include 'tpl/weekly-message.php';
1268d31684bSSzymon Olewniczak        $body = ob_get_clean();
1278d31684bSSzymon Olewniczak
1288d31684bSSzymon Olewniczak        $mailer = new BEZ_Mailer();
1298d31684bSSzymon Olewniczak        $rep = array();
1308d31684bSSzymon Olewniczak        $mailer->setBody('', $rep, NULL, $body, false);
1318d31684bSSzymon Olewniczak
1328d31684bSSzymon Olewniczak        $mailer->to($to);
1338d31684bSSzymon Olewniczak        $subject = 'Nadchodzące zadania';
1348d31684bSSzymon Olewniczak        $mailer->subject($subject);
1358d31684bSSzymon Olewniczak
1368d31684bSSzymon Olewniczak        if ($simulate === false) {
1378d31684bSSzymon Olewniczak            $send = $mailer->send();
1388d31684bSSzymon Olewniczak        }
1398d31684bSSzymon Olewniczak        $output[] = array($to, $subject, $body, array());
1408d31684bSSzymon Olewniczak    }
1418d31684bSSzymon Olewniczak
1428d31684bSSzymon Olewniczak    return $output;
1438d31684bSSzymon Olewniczak}
144