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 23*16f337ceSSzymon 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('<=', 308d31684bSSzymon Olewniczak date('Y-m-d 00:00', strtotime('-30 days')) 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