<?php require_once('./include/view.php'); header('Content-Type: text/html; charset=UTF-8'); $cron = new Cron(time()); $cron->run(); class Cron { private $kvs; private $now = 0; public function __construct($now) { $this->now = $now; $this->kvs = new Kvs(); } public function run() { $lastrun = $this->kvs->get_value('lastrun'); $interval = 3600*24; //1 day in seconds if($lastrun && $this->now - $lastrun < $interval) { return; } $this->kvs->set_key('lastrun', $this->now); $users = get_items('user'); foreach($users as $user) { $this->check_loans($user); } } private function check_loans($user) { $overdue = $user->get_overdue_loans(); if($overdue) { $this->send_reminder($user, $overdue); } } private function send_reminder($user, $loans) { $subject_template = "DSV Helpdesk: Du har ¤count¤ ¤late¤ lån"; $reminder_template = "¤name¤, försenad sedan ¤due¤\n"; $message_template = <<<EOF Hej ¤name¤ Vi vill påminna dig om att ditt lån av följande ¤product¤ har gått ut: ¤list¤ Vänligen återlämna dem till Helpdesk så snart som möjligt, alternativt kontakta oss för att få lånet förlängt. Mvh DSV Helpdesk helpdesk@dsv.su.se 08 - 16 16 48 EOF; $overdue_count = count($loans); $reminder_list = ''; $late = 'försenat'; $product = 'artikel'; if($count > 1) { $late = 'försenade'; $product = 'artiklar'; } foreach($loans as $loan) { $replacements = array('name' => $loan->get_product()->get_name(), 'due' => $loan->get_duration()['end']); $reminder_list .= replace($replacements, $reminder_template); } $subject = replace(array('count' => $overdue_count, 'late' => $late), $subject_template); $message = replace(array('name' => $user->get_displayname(), 'list' => $reminder_list, 'product' => $product), $message_template); try { mb_send_mail($user->get_email(), $subject, $message, 'From: noreply-boka@dsv.su.se'); } catch(Exception $e) { mb_send_mail('root@dsv.su.se', "Kunde inte skicka påminnelse", "Påminnelse kunde inte skickas till " .$user->get_name()); } } } ?>