public static function sendReminders($vars)
{
global $whups_driver;
if ($vars->get('id')) {
$info = array('id' => $vars->get('id'));
} elseif ($vars->get('queue')) {
$info['queue'] = $vars->get('queue');
if ($vars->get('category')) {
$info['category'] = $vars->get('category');
} else {
// Make sure that resolved tickets aren't returned.
$info['category'] = array('unconfirmed', 'new', 'assigned');
}
} else {
throw new Whups_Exception(_("You must select at least one queue to send reminders for."));
}
$tickets = $whups_driver->getTicketsByProperties($info);
self::sortTickets($tickets);
if (!count($tickets)) {
throw new Whups_Exception(_("No tickets matched your search criteria."));
}
$unassigned = $vars->get('unassigned');
$remind = array();
foreach ($tickets as $info) {
$info['link'] = self::urlFor('ticket', $info['id'], true, -1);
$owners = $whups_driver->getOwners($info['id']);
if (!empty($owners)) {
foreach (reset($owners) as $owner) {
$remind[$owner][] = $info;
}
} elseif (!empty($unassigned)) {
$remind['**' . $unassigned][] = $info;
}
}
/* Build message template. */
$view = new Horde_View(array('templatePath' => WHUPS_BASE . '/config'));
$view->date = strftime($GLOBALS['prefs']->getValue('date_format'));
/* Get queue specific notification message text, if available. */
$message_file = WHUPS_BASE . '/config/reminder_email.plain';
if (file_exists($message_file . '.local.php')) {
$message_file .= '.local.php';
} else {
$message_file .= '.php';
}
$message_file = basename($message_file);
foreach ($remind as $user => $utickets) {
if (empty($user) || !count($utickets)) {
continue;
}
$view->tickets = $utickets;
$subject = _("Reminder: Your open tickets");
$whups_driver->mail(array('recipients' => array($user => 'owner'), 'subject' => $subject, 'view' => $view, 'template' => $message_file, 'from' => $user));
}
}