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