xref: /plugin/bez/cron/functions.php (revision 6e6a7f3d0aaf4e171aa66fc7fe7d493ef8f0d677)
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
108d31684bSSzymon Olewniczak$action = new class 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
2316f337ceSSzymon Olewniczak$model = new BEZ_mdl_Model($auth, $dw_user, $action, $conf);
248d31684bSSzymon Olewniczak
258d31684bSSzymon Olewniczakfunction send_inactive_issue() {
268d31684bSSzymon Olewniczak    global $model;
278d31684bSSzymon Olewniczak
288d31684bSSzymon Olewniczak    $issues = $model->issues->get_all(array(
298d31684bSSzymon Olewniczak        'last_activity' => array('<=',
30086a1b29SSzymon Olewniczak            date('Y-m-d', strtotime('-30 days')), 'date'
318d31684bSSzymon Olewniczak        ),
328d31684bSSzymon Olewniczak        'state' => '0'
338d31684bSSzymon Olewniczak    ));
348d31684bSSzymon Olewniczak
358d31684bSSzymon Olewniczak    foreach ($issues as $issue) {
368d31684bSSzymon Olewniczak        //send reminder once a month
378d31684bSSzymon Olewniczak        $day_of_issue_last_activity = date('d', strtotime($issue->last_activity));
388d31684bSSzymon Olewniczak        if ($day_of_issue_last_activity === date('d')) {
39*6e6a7f3dSSzymon Olewniczak            //send message to all
40*6e6a7f3dSSzymon Olewniczak            $issue->mail_notify_issue_inactive($issue->get_subscribents());
418d31684bSSzymon Olewniczak        }
428d31684bSSzymon Olewniczak    }
438d31684bSSzymon Olewniczak}
448d31684bSSzymon Olewniczak
458d31684bSSzymon Olewniczakfunction send_one_day_task_reminder() {
468d31684bSSzymon Olewniczak    global $model;
478d31684bSSzymon Olewniczak
488d31684bSSzymon Olewniczak    $tasks = $model->tasks->get_all(array(
498d31684bSSzymon Olewniczak        'plan_date' => date('Y-m-d', strtotime('+1 day')),
508d31684bSSzymon Olewniczak        'state'     => '0' //only open tasks
518d31684bSSzymon Olewniczak    ));
528d31684bSSzymon Olewniczak
538d31684bSSzymon Olewniczak    foreach ($tasks as $task) {
54*6e6a7f3dSSzymon Olewniczak        $task->mail_notify_remind($task->get_subscribents());
558d31684bSSzymon Olewniczak    }
568d31684bSSzymon Olewniczak}
578d31684bSSzymon Olewniczak
588d31684bSSzymon Olewniczakfunction send_weekly_message($simulate=true) {
598d31684bSSzymon Olewniczak    global $conf, $auth, $bezlang;
608d31684bSSzymon Olewniczak
618d31684bSSzymon Olewniczak    $helper = new helper_plugin_bez();
628d31684bSSzymon Olewniczak
638d31684bSSzymon Olewniczak   //email => array('user' => array('issues' => array(), 'tasks' => array()))
648d31684bSSzymon Olewniczak    $msg = array();
658d31684bSSzymon Olewniczak    $output = array();
668d31684bSSzymon Olewniczak
678d31684bSSzymon Olewniczak    try {
688d31684bSSzymon Olewniczak        $isso = new Issues();
698d31684bSSzymon Olewniczak        $tasko = new Tasks();
708d31684bSSzymon Olewniczak    } catch (Exception $e) {
718d31684bSSzymon Olewniczak        echo $e->getMessage().': '.$e->getFile();
728d31684bSSzymon Olewniczak    }
738d31684bSSzymon Olewniczak
748d31684bSSzymon Olewniczak    $issues = $isso->cron_get_unsolved();
758d31684bSSzymon Olewniczak
768d31684bSSzymon Olewniczak    foreach ($issues as $issue) {
778d31684bSSzymon Olewniczak        $key = $issue['coordinator'];
788d31684bSSzymon Olewniczak        if (!isset($msg[$key]))
798d31684bSSzymon Olewniczak            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
808d31684bSSzymon Olewniczak                                'outdated_tasks' => array());
818d31684bSSzymon Olewniczak
828d31684bSSzymon Olewniczak        $msg[$key]['issues'][] = $issue;
838d31684bSSzymon Olewniczak    }
848d31684bSSzymon Olewniczak
858d31684bSSzymon Olewniczak    $coming_tasks_all  = $tasko->cron_get_coming_tasks();
868d31684bSSzymon Olewniczak
878d31684bSSzymon Olewniczak    foreach ($coming_tasks_all as $task) {
888d31684bSSzymon Olewniczak        $key = $task['executor'];
898d31684bSSzymon Olewniczak        if (!isset($msg[$key]))
908d31684bSSzymon Olewniczak            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
918d31684bSSzymon Olewniczak                                'outdated_tasks' => array());
928d31684bSSzymon Olewniczak
938d31684bSSzymon Olewniczak        $msg[$key]['coming_tasks'][] = $task;
948d31684bSSzymon Olewniczak    }
958d31684bSSzymon Olewniczak
968d31684bSSzymon Olewniczak    $outdated_tasks_all  = $tasko->cron_get_outdated_tasks();
978d31684bSSzymon Olewniczak
988d31684bSSzymon Olewniczak    foreach ($outdated_tasks_all as $task) {
998d31684bSSzymon Olewniczak        $key = $task['executor'];
1008d31684bSSzymon Olewniczak        if (!isset($msg[$key]))
1018d31684bSSzymon Olewniczak            $msg[$key] = array('issues' => array(), 'coming_tasks' => array(),
1028d31684bSSzymon Olewniczak                                'outdated_tasks' => array());
1038d31684bSSzymon Olewniczak
1048d31684bSSzymon Olewniczak        $msg[$key]['outdated_tasks'][] = $task;
1058d31684bSSzymon Olewniczak    }
1068d31684bSSzymon Olewniczak
1078d31684bSSzymon Olewniczak    //outdated_tasks, coming_tasks, open_tasks
1088d31684bSSzymon Olewniczak
1098d31684bSSzymon Olewniczak
1108d31684bSSzymon Olewniczak    foreach ($msg as $user => $data) {
1118d31684bSSzymon Olewniczak        $udata = $auth->getUserData($user);
1128d31684bSSzymon Olewniczak
1138d31684bSSzymon Olewniczak        $his_issues = $data['issues'];
1148d31684bSSzymon Olewniczak        $outdated_tasks = $data['outdated_tasks'];
1158d31684bSSzymon Olewniczak        $coming_tasks = $data['coming_tasks'];
1168d31684bSSzymon Olewniczak
1178d31684bSSzymon Olewniczak
1188d31684bSSzymon Olewniczak        if (count($his_issues) + count($outdated_tasks) + count($coming_tasks) == 0)
1198d31684bSSzymon Olewniczak            continue;
1208d31684bSSzymon Olewniczak
1218d31684bSSzymon Olewniczak        $to = $udata['name'].' <'.$udata['mail'].'>';
1228d31684bSSzymon Olewniczak
1238d31684bSSzymon Olewniczak        ob_start();
1248d31684bSSzymon Olewniczak        include 'tpl/weekly-message.php';
1258d31684bSSzymon Olewniczak        $body = ob_get_clean();
1268d31684bSSzymon Olewniczak
1278d31684bSSzymon Olewniczak        $mailer = new BEZ_Mailer();
1288d31684bSSzymon Olewniczak        $rep = array();
1298d31684bSSzymon Olewniczak        $mailer->setBody('', $rep, NULL, $body, false);
1308d31684bSSzymon Olewniczak
1318d31684bSSzymon Olewniczak        $mailer->to($to);
1328d31684bSSzymon Olewniczak        $subject = 'Nadchodzące zadania';
1338d31684bSSzymon Olewniczak        $mailer->subject($subject);
1348d31684bSSzymon Olewniczak
1358d31684bSSzymon Olewniczak        if ($simulate === false) {
1368d31684bSSzymon Olewniczak            $send = $mailer->send();
1378d31684bSSzymon Olewniczak        }
1388d31684bSSzymon Olewniczak        $output[] = array($to, $subject, $body, array());
1398d31684bSSzymon Olewniczak    }
1408d31684bSSzymon Olewniczak
1418d31684bSSzymon Olewniczak    return $output;
1428d31684bSSzymon Olewniczak}
143