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