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