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