1*8d31684bSSzymon Olewniczak<?php 2*8d31684bSSzymon Olewniczak 3*8d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/helper.php'; 4*8d31684bSSzymon Olewniczak 5*8d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/exceptions.php'; 6*8d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/interfaces.php'; 7*8d31684bSSzymon Olewniczak 8*8d31684bSSzymon Olewniczakrequire_once DOKU_PLUGIN.'bez/mdl/model.php'; 9*8d31684bSSzymon Olewniczak 10*8d31684bSSzymon Olewniczak$action = new class extends DokuWiki_Action_Plugin { 11*8d31684bSSzymon Olewniczak public function getPluginName() { 12*8d31684bSSzymon Olewniczak return 'bez'; 13*8d31684bSSzymon Olewniczak } 14*8d31684bSSzymon Olewniczak 15*8d31684bSSzymon Olewniczak public function id() { 16*8d31684bSSzymon Olewniczak $args = func_get_args(); 17*8d31684bSSzymon Olewniczak array_unshift($args, 'bez'); 18*8d31684bSSzymon Olewniczak 19*8d31684bSSzymon Olewniczak return implode(':', $args); 20*8d31684bSSzymon Olewniczak } 21*8d31684bSSzymon Olewniczak}; 22*8d31684bSSzymon Olewniczak$model = new BEZ_mdl_Model($auth, $dw_user, $action, $conf); 23*8d31684bSSzymon Olewniczak 24*8d31684bSSzymon Olewniczakfunction send_inactive_issue() { 25*8d31684bSSzymon Olewniczak global $model; 26*8d31684bSSzymon Olewniczak 27*8d31684bSSzymon Olewniczak $issues = $model->issues->get_all(array( 28*8d31684bSSzymon Olewniczak 'last_activity' => array('<=', 29*8d31684bSSzymon Olewniczak date('Y-m-d 00:00', strtotime('-30 days')) 30*8d31684bSSzymon Olewniczak ), 31*8d31684bSSzymon Olewniczak 'state' => '0' 32*8d31684bSSzymon Olewniczak )); 33*8d31684bSSzymon Olewniczak 34*8d31684bSSzymon Olewniczak foreach ($issues as $issue) { 35*8d31684bSSzymon Olewniczak //send reminder once a month 36*8d31684bSSzymon Olewniczak $day_of_issue_last_activity = date('d', strtotime($issue->last_activity)); 37*8d31684bSSzymon Olewniczak if ($day_of_issue_last_activity === date('d')) { 38*8d31684bSSzymon Olewniczak $issue->mail_notify_issue_inactive(); 39*8d31684bSSzymon Olewniczak } 40*8d31684bSSzymon Olewniczak } 41*8d31684bSSzymon Olewniczak} 42*8d31684bSSzymon Olewniczak 43*8d31684bSSzymon Olewniczakfunction send_one_day_task_reminder() { 44*8d31684bSSzymon Olewniczak global $model; 45*8d31684bSSzymon Olewniczak 46*8d31684bSSzymon Olewniczak $tasks = $model->tasks->get_all(array( 47*8d31684bSSzymon Olewniczak 'plan_date' => date('Y-m-d', strtotime('+1 day')), 48*8d31684bSSzymon Olewniczak 'state' => '0' //only open tasks 49*8d31684bSSzymon Olewniczak )); 50*8d31684bSSzymon Olewniczak 51*8d31684bSSzymon Olewniczak foreach ($tasks as $task) { 52*8d31684bSSzymon Olewniczak $task->mail_notify_remind(); 53*8d31684bSSzymon Olewniczak } 54*8d31684bSSzymon Olewniczak} 55*8d31684bSSzymon Olewniczak 56*8d31684bSSzymon Olewniczakfunction send_weekly_message($simulate=true) { 57*8d31684bSSzymon Olewniczak global $conf, $auth, $bezlang; 58*8d31684bSSzymon Olewniczak 59*8d31684bSSzymon Olewniczak $helper = new helper_plugin_bez(); 60*8d31684bSSzymon Olewniczak 61*8d31684bSSzymon Olewniczak //email => array('user' => array('issues' => array(), 'tasks' => array())) 62*8d31684bSSzymon Olewniczak $msg = array(); 63*8d31684bSSzymon Olewniczak $output = array(); 64*8d31684bSSzymon Olewniczak 65*8d31684bSSzymon Olewniczak try { 66*8d31684bSSzymon Olewniczak $isso = new Issues(); 67*8d31684bSSzymon Olewniczak $tasko = new Tasks(); 68*8d31684bSSzymon Olewniczak } catch (Exception $e) { 69*8d31684bSSzymon Olewniczak echo $e->getMessage().': '.$e->getFile(); 70*8d31684bSSzymon Olewniczak } 71*8d31684bSSzymon Olewniczak 72*8d31684bSSzymon Olewniczak $issues = $isso->cron_get_unsolved(); 73*8d31684bSSzymon Olewniczak 74*8d31684bSSzymon Olewniczak foreach ($issues as $issue) { 75*8d31684bSSzymon Olewniczak $key = $issue['coordinator']; 76*8d31684bSSzymon Olewniczak if (!isset($msg[$key])) 77*8d31684bSSzymon Olewniczak $msg[$key] = array('issues' => array(), 'coming_tasks' => array(), 78*8d31684bSSzymon Olewniczak 'outdated_tasks' => array()); 79*8d31684bSSzymon Olewniczak 80*8d31684bSSzymon Olewniczak $msg[$key]['issues'][] = $issue; 81*8d31684bSSzymon Olewniczak } 82*8d31684bSSzymon Olewniczak 83*8d31684bSSzymon Olewniczak $coming_tasks_all = $tasko->cron_get_coming_tasks(); 84*8d31684bSSzymon Olewniczak 85*8d31684bSSzymon Olewniczak foreach ($coming_tasks_all as $task) { 86*8d31684bSSzymon Olewniczak $key = $task['executor']; 87*8d31684bSSzymon Olewniczak if (!isset($msg[$key])) 88*8d31684bSSzymon Olewniczak $msg[$key] = array('issues' => array(), 'coming_tasks' => array(), 89*8d31684bSSzymon Olewniczak 'outdated_tasks' => array()); 90*8d31684bSSzymon Olewniczak 91*8d31684bSSzymon Olewniczak $msg[$key]['coming_tasks'][] = $task; 92*8d31684bSSzymon Olewniczak } 93*8d31684bSSzymon Olewniczak 94*8d31684bSSzymon Olewniczak $outdated_tasks_all = $tasko->cron_get_outdated_tasks(); 95*8d31684bSSzymon Olewniczak 96*8d31684bSSzymon Olewniczak foreach ($outdated_tasks_all as $task) { 97*8d31684bSSzymon Olewniczak $key = $task['executor']; 98*8d31684bSSzymon Olewniczak if (!isset($msg[$key])) 99*8d31684bSSzymon Olewniczak $msg[$key] = array('issues' => array(), 'coming_tasks' => array(), 100*8d31684bSSzymon Olewniczak 'outdated_tasks' => array()); 101*8d31684bSSzymon Olewniczak 102*8d31684bSSzymon Olewniczak $msg[$key]['outdated_tasks'][] = $task; 103*8d31684bSSzymon Olewniczak } 104*8d31684bSSzymon Olewniczak 105*8d31684bSSzymon Olewniczak //outdated_tasks, coming_tasks, open_tasks 106*8d31684bSSzymon Olewniczak 107*8d31684bSSzymon Olewniczak 108*8d31684bSSzymon Olewniczak foreach ($msg as $user => $data) { 109*8d31684bSSzymon Olewniczak $udata = $auth->getUserData($user); 110*8d31684bSSzymon Olewniczak 111*8d31684bSSzymon Olewniczak $his_issues = $data['issues']; 112*8d31684bSSzymon Olewniczak $outdated_tasks = $data['outdated_tasks']; 113*8d31684bSSzymon Olewniczak $coming_tasks = $data['coming_tasks']; 114*8d31684bSSzymon Olewniczak 115*8d31684bSSzymon Olewniczak 116*8d31684bSSzymon Olewniczak if (count($his_issues) + count($outdated_tasks) + count($coming_tasks) == 0) 117*8d31684bSSzymon Olewniczak continue; 118*8d31684bSSzymon Olewniczak 119*8d31684bSSzymon Olewniczak $to = $udata['name'].' <'.$udata['mail'].'>'; 120*8d31684bSSzymon Olewniczak 121*8d31684bSSzymon Olewniczak ob_start(); 122*8d31684bSSzymon Olewniczak include 'tpl/weekly-message.php'; 123*8d31684bSSzymon Olewniczak $body = ob_get_clean(); 124*8d31684bSSzymon Olewniczak 125*8d31684bSSzymon Olewniczak $mailer = new BEZ_Mailer(); 126*8d31684bSSzymon Olewniczak $rep = array(); 127*8d31684bSSzymon Olewniczak $mailer->setBody('', $rep, NULL, $body, false); 128*8d31684bSSzymon Olewniczak 129*8d31684bSSzymon Olewniczak $mailer->to($to); 130*8d31684bSSzymon Olewniczak $subject = 'Nadchodzące zadania'; 131*8d31684bSSzymon Olewniczak $mailer->subject($subject); 132*8d31684bSSzymon Olewniczak 133*8d31684bSSzymon Olewniczak if ($simulate === false) { 134*8d31684bSSzymon Olewniczak $send = $mailer->send(); 135*8d31684bSSzymon Olewniczak } 136*8d31684bSSzymon Olewniczak $output[] = array($to, $subject, $body, array()); 137*8d31684bSSzymon Olewniczak } 138*8d31684bSSzymon Olewniczak 139*8d31684bSSzymon Olewniczak return $output; 140*8d31684bSSzymon Olewniczak} 141