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