18d31684bSSzymon Olewniczak<?php 28d31684bSSzymon Olewniczak 3b59c0793SSzymon Olewniczakclass Cron_dummy_action extends DokuWiki_Action_Plugin { 48d31684bSSzymon Olewniczak public function getPluginName() { 58d31684bSSzymon Olewniczak return 'bez'; 68d31684bSSzymon Olewniczak } 78d31684bSSzymon Olewniczak 8*53df74e7SSzymon Olewniczak public static function id() { 98d31684bSSzymon Olewniczak $args = func_get_args(); 108d31684bSSzymon Olewniczak array_unshift($args, 'bez'); 118d31684bSSzymon Olewniczak 128d31684bSSzymon Olewniczak return implode(':', $args); 138d31684bSSzymon Olewniczak } 14*53df74e7SSzymon Olewniczak 15*53df74e7SSzymon Olewniczak public static function url() { 16*53df74e7SSzymon Olewniczak $args = func_get_args(); 17*53df74e7SSzymon Olewniczak 18*53df74e7SSzymon Olewniczak $id = call_user_func_array('Cron_dummy_action::id', $args); 19*53df74e7SSzymon Olewniczak return DOKU_URL . 'doku.php?id=' . $id; 20*53df74e7SSzymon Olewniczak 21*53df74e7SSzymon Olewniczak 22*53df74e7SSzymon Olewniczak } 238d31684bSSzymon Olewniczak}; 2404f149d4SSzymon Olewniczak 25b59c0793SSzymon Olewniczak$dummy_action = new Cron_dummy_action(); 26*53df74e7SSzymon Olewniczak$model = new \dokuwiki\plugin\bez\mdl\Model($auth, $dw_user, $dummy_action, $conf); 278d31684bSSzymon Olewniczak 288d31684bSSzymon Olewniczakfunction send_inactive_issue() { 298d31684bSSzymon Olewniczak global $model; 308d31684bSSzymon Olewniczak 31*53df74e7SSzymon Olewniczak $threads = $model->threadFactory->get_all(array( 32*53df74e7SSzymon Olewniczak 'last_activity_date' => array('<=', date('c', strtotime('-26 days'))), 33*53df74e7SSzymon Olewniczak 'state' => 'opened' 348d31684bSSzymon Olewniczak )); 358d31684bSSzymon Olewniczak 36*53df74e7SSzymon Olewniczak foreach ($threads as $thread) { 378d31684bSSzymon Olewniczak //send reminder once a month 38*53df74e7SSzymon Olewniczak $day_of_issue_last_activity = date('d', strtotime($thread->last_activity_date)); 39*53df74e7SSzymon Olewniczak if ($day_of_issue_last_activity == date('d')) { 406e6a7f3dSSzymon Olewniczak //send message to all 41*53df74e7SSzymon Olewniczak $thread->mail_notify_issue_inactive($thread->get_participants('subscribent')); 428d31684bSSzymon Olewniczak } 438d31684bSSzymon Olewniczak } 448d31684bSSzymon Olewniczak} 458d31684bSSzymon Olewniczak 468d31684bSSzymon Olewniczakfunction send_one_day_task_reminder() { 478d31684bSSzymon Olewniczak global $model; 488d31684bSSzymon Olewniczak 49*53df74e7SSzymon Olewniczak $tasks = $model->taskFactory->get_all(array( 508d31684bSSzymon Olewniczak 'plan_date' => date('Y-m-d', strtotime('+1 day')), 51*53df74e7SSzymon Olewniczak 'state' => 'opened' 528d31684bSSzymon Olewniczak )); 538d31684bSSzymon Olewniczak 548d31684bSSzymon Olewniczak foreach ($tasks as $task) { 55*53df74e7SSzymon Olewniczak $task->mail_notify_remind($task->get_participants('subscribent')); 568d31684bSSzymon Olewniczak } 578d31684bSSzymon Olewniczak} 588d31684bSSzymon Olewniczak 59*53df74e7SSzymon Olewniczak//function send_weekly_message($simulate=true) { 60*53df74e7SSzymon Olewniczak// global $conf, $auth; 61*53df74e7SSzymon Olewniczak// 62*53df74e7SSzymon Olewniczak// //$helper = new helper_plugin_bez(); 63*53df74e7SSzymon Olewniczak// 64*53df74e7SSzymon Olewniczak// //email => array('user' => array('issues' => array(), 'tasks' => array())) 65*53df74e7SSzymon Olewniczak// $msg = array(); 66*53df74e7SSzymon Olewniczak// $output = array(); 67*53df74e7SSzymon Olewniczak// 68*53df74e7SSzymon Olewniczak// try { 69*53df74e7SSzymon Olewniczak// $isso = new Issues(); 70*53df74e7SSzymon Olewniczak// $tasko = new Tasks(); 71*53df74e7SSzymon Olewniczak// } catch (Exception $e) { 72*53df74e7SSzymon Olewniczak// echo $e->getMessage().': '.$e->getFile(); 73*53df74e7SSzymon Olewniczak// } 74*53df74e7SSzymon Olewniczak// 75*53df74e7SSzymon Olewniczak// $issues = $isso->cron_get_unsolved(); 76*53df74e7SSzymon Olewniczak// 77*53df74e7SSzymon Olewniczak// foreach ($issues as $issue) { 78*53df74e7SSzymon Olewniczak// $key = $issue['coordinator']; 79*53df74e7SSzymon Olewniczak// if (!isset($msg[$key])) 80*53df74e7SSzymon Olewniczak// $msg[$key] = array('issues' => array(), 'coming_tasks' => array(), 81*53df74e7SSzymon Olewniczak// 'outdated_tasks' => array()); 82*53df74e7SSzymon Olewniczak// 83*53df74e7SSzymon Olewniczak// $msg[$key]['issues'][] = $issue; 84*53df74e7SSzymon Olewniczak// } 85*53df74e7SSzymon Olewniczak// 86*53df74e7SSzymon Olewniczak// $coming_tasks_all = $tasko->cron_get_coming_tasks(); 87*53df74e7SSzymon Olewniczak// 88*53df74e7SSzymon Olewniczak// foreach ($coming_tasks_all as $task) { 89*53df74e7SSzymon Olewniczak// $key = $task['executor']; 90*53df74e7SSzymon Olewniczak// if (!isset($msg[$key])) 91*53df74e7SSzymon Olewniczak// $msg[$key] = array('issues' => array(), 'coming_tasks' => array(), 92*53df74e7SSzymon Olewniczak// 'outdated_tasks' => array()); 93*53df74e7SSzymon Olewniczak// 94*53df74e7SSzymon Olewniczak// $msg[$key]['coming_tasks'][] = $task; 95*53df74e7SSzymon Olewniczak// } 96*53df74e7SSzymon Olewniczak// 97*53df74e7SSzymon Olewniczak// $outdated_tasks_all = $tasko->cron_get_outdated_tasks(); 98*53df74e7SSzymon Olewniczak// 99*53df74e7SSzymon Olewniczak// foreach ($outdated_tasks_all as $task) { 100*53df74e7SSzymon Olewniczak// $key = $task['executor']; 101*53df74e7SSzymon Olewniczak// if (!isset($msg[$key])) 102*53df74e7SSzymon Olewniczak// $msg[$key] = array('issues' => array(), 'coming_tasks' => array(), 103*53df74e7SSzymon Olewniczak// 'outdated_tasks' => array()); 104*53df74e7SSzymon Olewniczak// 105*53df74e7SSzymon Olewniczak// $msg[$key]['outdated_tasks'][] = $task; 106*53df74e7SSzymon Olewniczak// } 107*53df74e7SSzymon Olewniczak// 108*53df74e7SSzymon Olewniczak// //outdated_tasks, coming_tasks, open_tasks 109*53df74e7SSzymon Olewniczak// 110*53df74e7SSzymon Olewniczak// 111*53df74e7SSzymon Olewniczak// foreach ($msg as $user => $data) { 112*53df74e7SSzymon Olewniczak// $udata = $auth->getUserData($user); 113*53df74e7SSzymon Olewniczak// 114*53df74e7SSzymon Olewniczak// $his_issues = $data['issues']; 115*53df74e7SSzymon Olewniczak// $outdated_tasks = $data['outdated_tasks']; 116*53df74e7SSzymon Olewniczak// $coming_tasks = $data['coming_tasks']; 117*53df74e7SSzymon Olewniczak// 118*53df74e7SSzymon Olewniczak// 119*53df74e7SSzymon Olewniczak// if (count($his_issues) + count($outdated_tasks) + count($coming_tasks) == 0) 120*53df74e7SSzymon Olewniczak// continue; 121*53df74e7SSzymon Olewniczak// 122*53df74e7SSzymon Olewniczak// $to = $udata['name'].' <'.$udata['mail'].'>'; 123*53df74e7SSzymon Olewniczak// 124*53df74e7SSzymon Olewniczak// ob_start(); 125*53df74e7SSzymon Olewniczak// include 'tpl/weekly-message.php'; 126*53df74e7SSzymon Olewniczak// $body = ob_get_clean(); 127*53df74e7SSzymon Olewniczak// 128*53df74e7SSzymon Olewniczak// $mailer = new \dokuwiki\plugin\bez\meta\Mailer(); 129*53df74e7SSzymon Olewniczak// $rep = array(); 130*53df74e7SSzymon Olewniczak// $mailer->setBody('', $rep, NULL, $body, false); 131*53df74e7SSzymon Olewniczak// 132*53df74e7SSzymon Olewniczak// $mailer->to($to); 133*53df74e7SSzymon Olewniczak// $subject = 'Nadchodzące zadania'; 134*53df74e7SSzymon Olewniczak// $mailer->subject($subject); 135*53df74e7SSzymon Olewniczak// 136*53df74e7SSzymon Olewniczak// if ($simulate === false) { 137*53df74e7SSzymon Olewniczak// $send = $mailer->send(); 138*53df74e7SSzymon Olewniczak// } 139*53df74e7SSzymon Olewniczak// $output[] = array($to, $subject, $body, array()); 140*53df74e7SSzymon Olewniczak// } 141*53df74e7SSzymon Olewniczak// 142*53df74e7SSzymon Olewniczak// return $output; 143*53df74e7SSzymon Olewniczak//} 144