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