18d31684bSSzymon Olewniczak<?php 28d31684bSSzymon Olewniczak 3*67fdb426SSzymon Olewniczakuse PHPMailer\PHPMailer\PHPMailer; 4*67fdb426SSzymon Olewniczak 5*67fdb426SSzymon Olewniczakrequire_once DOKU_PLUGIN . 'bez/vendor/phpmailer/phpmailer/src/Exception.php'; 6*67fdb426SSzymon Olewniczakrequire_once DOKU_PLUGIN . 'bez/vendor/phpmailer/phpmailer/src/PHPMailer.php'; 7*67fdb426SSzymon Olewniczakrequire_once DOKU_PLUGIN . 'bez/vendor/phpmailer/phpmailer/src/SMTP.php'; 8*67fdb426SSzymon Olewniczak 914a1f0a4SSzymon Olewniczak$action = new action_plugin_bez_base(); 10522c019cSSzymon Olewniczak$action->createObjects(true); 118d31684bSSzymon Olewniczak 128d31684bSSzymon Olewniczakfunction send_inactive_issue() { 1314a1f0a4SSzymon Olewniczak global $action; 148d31684bSSzymon Olewniczak 1514a1f0a4SSzymon Olewniczak $threads = $action->get_model()->threadFactory->get_all(array( 1653df74e7SSzymon Olewniczak 'last_activity_date' => array('<=', date('c', strtotime('-26 days'))), 1753df74e7SSzymon Olewniczak 'state' => 'opened' 188d31684bSSzymon Olewniczak )); 198d31684bSSzymon Olewniczak 2053df74e7SSzymon Olewniczak foreach ($threads as $thread) { 218d31684bSSzymon Olewniczak //send reminder once a month 2253df74e7SSzymon Olewniczak $day_of_issue_last_activity = date('d', strtotime($thread->last_activity_date)); 2353df74e7SSzymon Olewniczak if ($day_of_issue_last_activity == date('d')) { 246e6a7f3dSSzymon Olewniczak //send message to all 25f9ff7301SSzymon Olewniczak $thread->mail_notify_inactive($thread->get_participants('subscribent')); 268d31684bSSzymon Olewniczak } 278d31684bSSzymon Olewniczak } 288d31684bSSzymon Olewniczak} 298d31684bSSzymon Olewniczak 30d571026cSSzymon Olewniczakfunction send_task_reminder() { 3114a1f0a4SSzymon Olewniczak global $action; 328d31684bSSzymon Olewniczak 33d571026cSSzymon Olewniczak $filters = array('state' => 'opened', 'plan_date' => array('OR', array())); 348d31684bSSzymon Olewniczak 35d571026cSSzymon Olewniczak $days_before = $action->getConf('task_remaind_days_before'); 36d571026cSSzymon Olewniczak $days_before = array_map('trim', explode(',', $days_before)); 37d571026cSSzymon Olewniczak 38d571026cSSzymon Olewniczak if (count($days_before) == 0) { 39d571026cSSzymon Olewniczak return; 40d571026cSSzymon Olewniczak } 41d571026cSSzymon Olewniczak 42d571026cSSzymon Olewniczak foreach($days_before as $day) { 43d571026cSSzymon Olewniczak $filters['plan_date'][1][] = date('Y-m-d', strtotime("+$day day")); 44d571026cSSzymon Olewniczak } 45d571026cSSzymon Olewniczak 46d571026cSSzymon Olewniczak 47d571026cSSzymon Olewniczak $tasks = $action->get_model()->taskFactory->get_all($filters); 48d571026cSSzymon Olewniczak 49d571026cSSzymon Olewniczak $now = new DateTime(date('Y-m-d')); 508d31684bSSzymon Olewniczak foreach ($tasks as $task) { 51d571026cSSzymon Olewniczak $plan_date = new DateTime($task->plan_date); 52d571026cSSzymon Olewniczak $task->mail_notify_remind($task->get_participants('subscribent'), $plan_date->diff($now)->format('%a')); 538d31684bSSzymon Olewniczak } 548d31684bSSzymon Olewniczak} 558d31684bSSzymon Olewniczak 5614a1f0a4SSzymon Olewniczakfunction send_weekly_message() { 5714a1f0a4SSzymon Olewniczak global $action; 5814a1f0a4SSzymon Olewniczak global $auth; 59*67fdb426SSzymon Olewniczak global $conf; 6014a1f0a4SSzymon Olewniczak 6114a1f0a4SSzymon Olewniczak //email => array('user' => array('issues' => array(), 'tasks' => array())) 6214a1f0a4SSzymon Olewniczak $msg = array(); 6314a1f0a4SSzymon Olewniczak $output = array(); 6414a1f0a4SSzymon Olewniczak 6514a1f0a4SSzymon Olewniczak $threads = $action->get_model()->threadFactory->get_all(array( 6614a1f0a4SSzymon Olewniczak 'type' => 'issue', 6714a1f0a4SSzymon Olewniczak 'priority' => array('OR', array('2', '1')) 6814a1f0a4SSzymon Olewniczak )); 6914a1f0a4SSzymon Olewniczak 7014a1f0a4SSzymon Olewniczak foreach ($threads as $thread) { 7114a1f0a4SSzymon Olewniczak $key = $thread->coordinator; 7214a1f0a4SSzymon Olewniczak if (!isset($msg[$key])) { 7314a1f0a4SSzymon Olewniczak $msg[$key] = array( 7414a1f0a4SSzymon Olewniczak 'issues' => array(), 7514a1f0a4SSzymon Olewniczak 'coming_tasks' => array(), 7614a1f0a4SSzymon Olewniczak 'outdated_tasks' => array() 7714a1f0a4SSzymon Olewniczak ); 7814a1f0a4SSzymon Olewniczak } 7914a1f0a4SSzymon Olewniczak $msg[$key]['issues'][] = $thread; 8014a1f0a4SSzymon Olewniczak } 8114a1f0a4SSzymon Olewniczak 8214a1f0a4SSzymon Olewniczak $tasks = $action->get_model()->taskFactory->get_all(array( 8314a1f0a4SSzymon Olewniczak 'priority' => array('OR', array('2', '1')) 8414a1f0a4SSzymon Olewniczak )); 8514a1f0a4SSzymon Olewniczak 8614a1f0a4SSzymon Olewniczak foreach ($tasks as $task) { 8714a1f0a4SSzymon Olewniczak $key = $task->assignee; 8814a1f0a4SSzymon Olewniczak if (!isset($msg[$key])) { 8914a1f0a4SSzymon Olewniczak $msg[$key] = array( 9014a1f0a4SSzymon Olewniczak 'issues' => array(), 9114a1f0a4SSzymon Olewniczak 'coming_tasks' => array(), 9214a1f0a4SSzymon Olewniczak 'outdated_tasks' => array() 9314a1f0a4SSzymon Olewniczak ); 9414a1f0a4SSzymon Olewniczak } 9514a1f0a4SSzymon Olewniczak 9614a1f0a4SSzymon Olewniczak if ($task->priority == '1') { 9714a1f0a4SSzymon Olewniczak $msg[$key]['coming_tasks'][] = $task; 9814a1f0a4SSzymon Olewniczak } else { 9914a1f0a4SSzymon Olewniczak $msg[$key]['outdated_tasks'][] = $task; 10014a1f0a4SSzymon Olewniczak } 10114a1f0a4SSzymon Olewniczak } 10214a1f0a4SSzymon Olewniczak 10314a1f0a4SSzymon Olewniczak //outdated_tasks, coming_tasks, open_tasks 10414a1f0a4SSzymon Olewniczak 10514a1f0a4SSzymon Olewniczak 10614a1f0a4SSzymon Olewniczak foreach ($msg as $user => $data) { 10714a1f0a4SSzymon Olewniczak $udata = $auth->getUserData($user); 108*67fdb426SSzymon Olewniczak if (!$udata) continue; 10914a1f0a4SSzymon Olewniczak 11014a1f0a4SSzymon Olewniczak $issues = $data['issues']; 11114a1f0a4SSzymon Olewniczak $outdated_tasks = $data['outdated_tasks']; 11214a1f0a4SSzymon Olewniczak $coming_tasks = $data['coming_tasks']; 11314a1f0a4SSzymon Olewniczak 11414a1f0a4SSzymon Olewniczak 11514a1f0a4SSzymon Olewniczak if (count($issues) + count($outdated_tasks) + count($coming_tasks) == 0) 11614a1f0a4SSzymon Olewniczak continue; 11714a1f0a4SSzymon Olewniczak 118*67fdb426SSzymon Olewniczak $to = 11914a1f0a4SSzymon Olewniczak 12014a1f0a4SSzymon Olewniczak $tpl = $action->get_tpl(); 12114a1f0a4SSzymon Olewniczak $tpl->set('issues', $issues); 12214a1f0a4SSzymon Olewniczak $tpl->set('outdated_tasks', $outdated_tasks); 12314a1f0a4SSzymon Olewniczak $tpl->set('coming_tasks', $coming_tasks); 12414a1f0a4SSzymon Olewniczak $body = $action->bez_tpl_include('cron/weekly-message', true); 12514a1f0a4SSzymon Olewniczak 126*67fdb426SSzymon Olewniczak $mailer = new PHPMailer; 127*67fdb426SSzymon Olewniczak $mailer->CharSet = 'utf-8'; 12814a1f0a4SSzymon Olewniczak 129*67fdb426SSzymon Olewniczak $mailer->setFrom($conf['mailfrom']); 130*67fdb426SSzymon Olewniczak $mailer->addReplyTo($conf['mailfrom']); 131*67fdb426SSzymon Olewniczak 132*67fdb426SSzymon Olewniczak $mailer->msgHTML($body); 133*67fdb426SSzymon Olewniczak 134*67fdb426SSzymon Olewniczak $mailer->addAddress($udata['mail'], $udata['name']); 135*67fdb426SSzymon Olewniczak $subject = $conf['title'] . ' Nadchodzące zadania'; 136*67fdb426SSzymon Olewniczak $mailer->Subject = $subject; 13714a1f0a4SSzymon Olewniczak 13814a1f0a4SSzymon Olewniczak $mailer->send(); 139*67fdb426SSzymon Olewniczak $mailer->clearAddresses(); 140*67fdb426SSzymon Olewniczak $output[] = array($udata['name'].' <'.$udata['mail'].'>', $subject, $body, array()); 14114a1f0a4SSzymon Olewniczak } 14214a1f0a4SSzymon Olewniczak 14314a1f0a4SSzymon Olewniczak return $output; 14414a1f0a4SSzymon Olewniczak} 145