/** * Print out week being viewed above schedule tables * @param array $d array of date information about this schedule * @param string $title title of schedule */ function print_date_span($d, $title) { // Print out current week being viewed // echo '<h3 align="center">' . $title . '<br/>' . Time::formatDate($d['firstDayTs']) . ' - ' . Time::formatDate($d['lastDayTs']) . '</h3>'; // AK: Updated version. We want to display current date only. echo '<h3 align="center">' . Time::formatDate($d['todayTs']) . '</h3>'; }
/** * This function prints out the announcement table * * @param array announcements * @global $conf * @global $link */ function showAnnouncementTable($announcements) { global $link; global $conf; ?> <table width="100%" border="0" cellspacing="0" cellpadding="1" align="center"> <tr> <td class="tableBorder"> <table width="100%" border="0" cellspacing="1" cellpadding="0"> <tr> <td class="tableTitle"> <a href="javascript: void(0);" onclick="showHideCpanelTable('announcements');">› <?php echo translate('My Announcements'); ?> </a> </td> <td class="tableTitle"> <div align="right"> <?php $link->doLink('javascript: help(\'my_announcements\');', '?', '', 'color: #FFFFFF;', translate('Help') . ' - ' . translate('My Announcements')); ?> </div> </td> </tr> </table> <div id="announcements" style="display: <?php echo getShowHide('announcements'); ?> "> <table width="100%" border="0" cellspacing="1" cellpadding="0"> <tr class="cellColor"> <td colspan="2"><b><?php echo translate('Announcements as of', array(Time::formatDate(mktime()))); ?> </b> <ul style="margin-bottom: 0px; margin-left: 20px; margin-top: 5px"> <?php // Cycle through and print out announcements if (!$announcements) { echo "<li>" . translate('There are no announcements') . ".</li>\n"; } else { // For each reservation, clean up the date/time and print it for ($i = 0; is_array($announcements) && $i < count($announcements); $i++) { $rs = $announcements[$i]; echo '<li>' . $rs['announcement'] . '</li>'; } unset($announcements); } ?> </ul> </td> </tr> </table> </div> </td> </tr> </table> <?php }
function _buildBody($reminder) { return translate_email('Reminder Body', $reminder->resource_name, Time::formatDate($reminder->start_date), Time::formatTime($reminder->start_time), Time::formatDate($reminder->end_date), Time::formatTime($reminder->end_time)); }
$mailer = new PHPMailer(); $mailer->From = $conf['app']['adminEmail']; $mailer->FromName = $conf['app']['title']; $mailer->Subject = translate($translate_index, array($user->get_name(), Time::formatDate($res->start_date))); $mailer->IsHTML(false); $mailer->AddAddress($owner->get_email()); $mailer->Body = translate($translate_index, array($user->get_name(), Time::formatDate($res->start_date))); $mailer->Send(); if (count($failed) > 0) { echo '<p>' . translate('You are not participating on the following reservation dates because they are at full capacity.') . '</p>'; for ($i = 0; $i < count($failed); $i++) { echo '<p>' . Time::formatDate($failed[$i]['start_date']) . '</p>'; } } $msg = ''; $msg .= translate($translate_index, array($user->get_name(), Time::formatDate($res->start_date))) . '<br/>'; if (Auth::is_logged_in()) { $msg .= Link::getLink('ctrlpnl.php', translate('Return to My Control Panel')); } else { $msg .= Link::getLink('index.php', translate('Login to manage all of your invitiations')); } CmnFns::do_message_box($msg); } } else { CmnFns::do_error_box(translate('That record could not be found.'), '', false); } } else { CmnFns::do_error_box(translate('That reservation is at full capacity.'), '', false); } } } else {
/** * Provides ability to generate an iCalendar export file for a reservation or reservations within a date range * @author Nick Korbel <*****@*****.**> * @version 04-24-06 * @package phpScheduleIt.iCalendar * * Copyright (C) 2003 - 2007 phpScheduleIt * License: GPL, see LICENSE */ function print_export_table() { ?> <table width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom:10px;"> <tr> <td class="tableTitle"> <?php echo translate('Select reservations to export'); ?> </td> </tr> </table> <table style="background-color:#CCCCCC;" cellspacing="1"> <tr class="cellColor"> <td width="70" class="formNames" style="font-weight:bold;"><?php echo translate('Starting Date'); ?> </td> <td width="120"> <div id="div_start_date" style="float:left;" class="textbox"><?php echo Time::formatDate(mktime()); ?> </div><a href="javascript:void(0);"><img src="img/calendar.gif" style="padding-left:10px;" border="0" id="img_start_date" alt="' <?php echo translate('Start'); ?> "/></a> <input type="hidden" id="hdn_start_date" name="start_date" value="<?php echo date('m' . INTERNAL_DATE_SEPERATOR . 'd' . INTERNAL_DATE_SEPERATOR . 'Y', mktime()); ?> "/> </td> <td width="70" class="formNames" style="font-weight:bold;"><?php echo translate('Ending Date'); ?> </td> <td width="120"> <div id="div_end_date" style="float:left;" class="textbox"><?php echo Time::formatDate(mktime()); ?> </div><a href="javascript:void(0);"><img src="img/calendar.gif" style="padding-left:10px;" border="0" id="img_end_date" alt="' <?php echo translate('End'); ?> " /></a> <input type="hidden" id="hdn_end_date" name="end_date" value="<?php echo date('m' . INTERNAL_DATE_SEPERATOR . 'd' . INTERNAL_DATE_SEPERATOR . 'Y', mktime()); ?> " /> </td> <td width="70" class="formNames" style="font-weight:bold;"><?php echo translate('Export Format'); ?> :</td> <td width="120"> <select name="type" id="type" class="textbox"> <option value="ical">iCalendar</option> <option value="vcal">vCalendar</option> </select> </td> </tr> <tr class="cellColor"> <td colspan="2"><?php echo translate('None'); ?> <input type="checkbox" name="nostart" id="nostart" value="nostart" onclick="blurDiv(this, 'div_start_date');" /></td> <td colspan="2"><?php echo translate('None'); ?> <input type="checkbox" name="noend" id="noend" value="noend" onclick="blurDiv(this, 'div_end_date');" /></td> <td colspan="2"> </td> </tr> <tr class="cellColor"> <td colspan="6" align="right"> <input type="button" value="<?php echo translate('Export'); ?> " class="button" onclick="exportSearch();" /> </td> </tr> </table> <?php }
/** * Interface to add or edit announcement information * @param mixed $rs array of schedule data * @param boolean $edit whether this is an edit or not * @param object $pager Pager object */ function print_announce_edit($rs, $edit, &$pager) { global $conf; $start_date_ok = isset($rs['start_datetime']) && !empty($rs['start_datetime']); $end_date_ok = isset($rs['end_datetime']) && !empty($rs['end_datetime']); $start_date = $start_date_ok ? $rs['start_datetime'] : mktime(); $end_date = $end_date_ok ? $rs['end_datetime'] : mktime(); ?> <form name="addAnnouncement" method="post" action="admin_update.php" <?php echo $edit ? "" : "onsubmit=\"return checkAddAnnouncement();\""; ?> > <table width="100%" border="0" cellspacing="0" cellpadding="1" align="center"> <tr> <td class="tableBorder"> <table width="100%" border="0" cellspacing="1" cellpadding="0"> <tr> <td class="formNames"><?php echo translate('Announcement'); ?> </td> <td class="cellColor"><input type="text" name="announcement" class="textbox" size="50" maxlength="300" value="<?php echo isset($rs['announcement']) ? htmlspecialchars($rs['announcement']) : ''; ?> " /> </td> </tr> <tr> <td width="200" class="formNames"><?php echo translate('Number'); ?> </td> <td class="cellColor"><input type="text" name="number" class="textbox" size="3" maxlength="3" value="<?php echo isset($rs['number']) ? $rs['number'] : ''; ?> " /> </td> </tr> <tr> <td class="formNames"><?php echo translate('Start Date'); ?> </td> <td class="cellColor"> <?php echo '<div id="div_start_date" style="float:left;width:70px;">' . Time::formatDate($start_date) . '</div><input type="hidden" id="hdn_start_date" name="start_date" value="' . date('m' . INTERNAL_DATE_SEPERATOR . 'd' . INTERNAL_DATE_SEPERATOR . 'Y', $start_date) . '"/> <a href="javascript:void(0);"><img src="img/calendar.gif" border="0" id="img_start_date" alt="' . translate('Start') . '"/></a>'; $s_hour = $start_date_ok ? date('h', $rs['start_datetime']) : ''; $s_min = $start_date_ok ? date('i', $rs['start_datetime']) : ''; $s_pm = $start_date_ok ? intval(date('H', $rs['start_datetime'])) >= 12 : false; echo ' @ <input type="text" maxlength="2" size="2" class="textbox" name="start_hour" value="' . $s_hour . '"/> : <input type="text" maxlength="2" size="2" class="textbox" name="start_min" value="' . $s_min . '"/>'; echo ' <select name="start_ampm" class="textbox"><option value="am">' . translate('am') . '</option><option value="pm"' . ($s_pm ? ' selected="selected"' : '') . '>' . translate('pm') . '</option></select>'; echo ' <input type="checkbox" name="use_start_time"' . ($start_date_ok ? ' checked="checked"' : '') . '/> ' . translate('Use start date/time?'); ?> </td> </tr> <tr> <td class="formNames"><?php echo translate('End Date'); ?> </td> <td class="cellColor"> <?php echo '<div id="div_end_date" style="float:left;width:70px;">' . Time::formatDate($end_date) . '</div><input type="hidden" id="hdn_end_date" name="end_date" value="' . date('m' . INTERNAL_DATE_SEPERATOR . 'd' . INTERNAL_DATE_SEPERATOR . 'Y', $end_date) . '"/> <a href="javascript:void(0);"><img src="img/calendar.gif" border="0" id="img_end_date" alt="' . translate('End') . '"/></a>'; $s_hour = $end_date_ok ? date('h', $rs['end_datetime']) : ''; $s_min = $end_date_ok ? date('i', $rs['end_datetime']) : ''; $s_pm = $end_date_ok ? intval(date('H', $rs['end_datetime'])) >= 12 : false; echo ' @ <input type="text" maxlength="2" size="2" class="textbox" name="end_hour" value="' . $s_hour . '"/> : <input type="text" maxlength="2" size="2" class="textbox" name="end_min" value="' . $s_min . '"/>'; echo ' <select name="end_ampm" class="textbox"><option value="am">' . translate('am') . '</option><option value="pm"' . ($s_pm ? ' selected="selected"' : '') . '>' . translate('pm') . '</option></select>'; echo ' <input type="checkbox" name="use_end_time"' . ($end_date_ok ? ' checked="checked"' : '') . '/> ' . translate('Use end date/time?'); ?> </td> </tr> </table> </td> </tr> </table> <br /> <?php // Print out correct buttons if (!$edit) { echo submit_button(translate('Add Announcement'), 'announcementid') . hidden_fn('addAnnouncement') . ' <input type="reset" name="reset" value="' . translate('Clear') . '" class="button" />' . "\n"; } else { echo submit_button(translate('Edit Announcement'), 'announcementid') . cancel_button($pager) . hidden_fn('editAnnouncement') . '<input type="hidden" name="announcementid" value="' . $rs['announcementid'] . '" />' . "\n"; } echo "</form>\n"; print_jscalendar_setup($start_date_ok ? $rs['start_datetime'] : null, $end_date_ok ? $rs['end_datetime'] : null); // Set up the javascript calendars // Unset variables unset($rs); }
/** * Send an email informing the users they have been dropped from the reservation * @param array $emails array of email addresses * @param array $dates that have been dropped */ function remove_users_email($emails, $dates) { global $conf; $mailer = new PHPMailer(); $mailer->From = $this->user->get_email(); $mailer->FromName = $this->user->get_name(); $mailer->Subject = $conf['app']['title'] . ' ' . translate('Reservation Participation Change'); $mailer->IsHTML(false); $url = CmnFns::getScriptURL(); // Format dates $start_date = Time::formatDate($this->start_date); $end_date = Time::formatDate($this->end_date); $start = Time::formatTime($this->get_start()); $end = Time::formatTime($this->get_end()); $dates_text = ''; for ($d = 1; $d < count($dates); $d++) { $dates_text .= Time::formatDate($dates) . ","; } foreach ($emails as $email) { $mailer->ClearAllRecipients(); $mailer->AddAddress($email); $mailer->Body = translate_email('reservation_removal', $this->resource->properties['name'], $start_date, $start, $end_date, $end, $this->summary, $dates_text); $mailer->Send(); } }
/** * Perform search and print out results * This function will perform the search for given * criteria and print out formatted results. * @param string $type output type * @global $_POST['memberid'] array array of memberid's * @global $_POST['piid'] array array of piID's * @global $_POST['machid'] array array of machID's * @global $_POST['startYear'] int starting year * @global $_POST['startMonth'] int starting month * @global $_POST['startDay'] int starting day * @global $_POST['endYear'] int ending year * @global $_POST['endMonth'] int ending month * @global $_POST['endDay'] int ending day * @global $_POST['starttime'] double starting time * @global $_POST['endtime'] double ending time */ function search($type, $searchtype) { global $db; global $link; $html = $type == 'html'; // Store form vars for easy access $scheduleids = $_POST['scheduleid']; // Array of scheduleids $memberids = $_POST['memberid']; // Array of memberID's $machids = $_POST['machid']; // Array of machID's $startDateMin = mktime(0, 0, 0, intval($_POST['startMonthMin']), intval($_POST['startDayMin']), intval($_POST['startYearMin'])); $startDateMax = mktime(0, 0, 0, intval($_POST['startMonthMax']), intval($_POST['startDayMax']), intval($_POST['startYearMax'])); $endDateMin = mktime(0, 0, 0, intval($_POST['endMonthMin']), intval($_POST['endDayMin']), intval($_POST['endYearMin'])); $endDateMax = mktime(0, 0, 0, intval($_POST['endMonthMax']), intval($_POST['endDayMax']), intval($_POST['endYearMax'])); $starttimeMin = intval($_POST['starttimeMin']); $starttimeMax = intval($_POST['starttimeMax']); $endtimeMin = intval($_POST['endtimeMin']); $endtimeMax = intval($_POST['endtimeMax']); $percent = 0; $summarysearch = $_POST['summarysearch']; $summarytype = $_POST['summarytype']; //die($startDateMin . ' ' . $startDateMax . ' ' . $endDateMin . ' ' . $endDateMax); $res = $db->get_reservations($scheduleids, $memberids, $machids, $startDateMin, $startDateMax, $endDateMin, $endDateMax, $starttimeMin, $starttimeMax, $endtimeMin, $endtimeMax, $summarysearch, $summarytype); $rs_hours = $db->get_resource_times($machids); // Number of records returned $recs = count($res); // Print number of results found and a link to the text version echo '<h3 align="center">' . translate('Search Results found', array($recs)) . "</h3>\n" . '<h5 align="center">' . $link->getLink($_SERVER['PHP_SELF'], translate('Try a different search')) . "</h5>\n"; print_change_output($_POST); echo "<hr noshade size=\"1\">\n"; // If there were no results found, exit if ($recs <= 0) { return; } // Set up initial booleans $newUser = false; $newMach = false; $totalHours = 0; $resNo = 1; // Get first row $rs = $res[0]; // Set up initial previous user/machine variables $prevUser = $rs['memberid']; $prevMach = $rs['machid']; /* Text file variables */ // Create text output // Make global to share with other functions if ($type == 'text') { $GLOBALS['dblStr'] = str_repeat('=', 50) . "\n"; $GLOBALS['sglStr'] = str_repeat('-', 50) . "\n"; } if ($type != 'html') { // Plain-text view echo '<pre>'; echo translate('Search Run On') . ' ' . date('M jS, Y - h:i:s a') . "\r\n\r\n"; } // Print out first table with this information printUserInfo($rs['fname'], $rs['lname'], $rs['memberid'], $type); printTableHeader($rs['fname'], $rs['lname'], $rs['name'], $type, $rs['scheduletitle']); if ($type == 'csv') { // Print record id line for csv output print_csv_header(); } // Repeat for each record for ($i = 0; $i < count($res); $i++) { $rs = $res[$i]; // Current reservation // If we are at a new user, set them to prevUser if ($prevUser != $rs['memberid']) { $prevUser = $rs['memberid']; $newUser = true; } // If we are at a new resource, set it to prevMach if ($prevMach != $rs['machid']) { $prevMach = $rs['machid']; $newMach = true; } // If we are making a new table (by advancing to new user or resource) if ($newUser || $newMach) { // Write total hours row and close table // Write out total hours for this machine printTableFooter($totalHours, $type, $percent); $totalHours = 0; // Reset total hours $resNo = 1; // Reset total reservations // If it is a new user, write a comment, a extra break, and the user info if ($newUser) { // Write extra break to text output if ($type == 'text') { echo "\r\n\r\n"; } if ($html) { echo '<p> </p>'; } printUserInfo($rs['fname'], $rs['lname'], $rs['memberid'], $type); } // Set both newUser and newResource to false $newUser = false; $newMach = false; // Write next table header printTableHeader($rs['fname'], $rs['lname'], $rs['name'], $type, $rs['scheduletitle']); } // Keep running total of hours on this machine $totalHours = $totalHours + ($rs['end_date'] / 60 + $rs['endtime'] - ($rs['start_date'] / 60 + $rs['starttime'])); // Calculate what percentage that is of total machine time $percent = sprintf('%.02f', $totalHours / $rs_hours[$rs['machid']] * 100); // Store variables $start_date = Time::formatDate($rs['start_date'], null, false); $end_date = Time::formatDate($rs['end_date'], null, false); $created = Time::formatDateTime($rs['created'], null, false); $modified = !empty($rs['modified']) ? Time::formatDateTime($rs['modified'], null, false) : translate('N/A'); $starttime = Time::formatTime($rs['starttime'], false); $endtime = Time::formatTime($rs['endtime'], false); $totTime = $rs['end_date'] / 60 + $rs['endtime'] - ($rs['start_date'] / 60 + $rs['starttime']); print_reservation_data($type, $link, $resNo++, $start_date, $end_date, $created, $modified, $starttime, $endtime, $totTime, $rs['resid'], $rs['fname'], $rs['lname'], $rs['name'], $rs['memberid'], $rs['scheduletitle']); } unset($rs); // On last record, print out total hours // Write out total hours for this machine printTableFooter($totalHours, $type, $percent); if (!$html) { echo '</pre>'; } }
* @package phpScheduleIt * * Copyright (C) 2003 - 2007 phpScheduleIt * License: GPL, see LICENSE */ include_once 'lib/DBEngine.class.php'; if (!(bool) $conf['app']['allowRss'] || (bool) $conf['app']['allowRss'] && !isset($_GET['id'])) { die; } $db = new DBEngine(); $res = $db->get_user_reservations($_GET['id'], 'res.start_date', 'DESC', true); global $charset; header('Content-Type: text/xml'); echo "<?xml version=\"1.0\" encoding=\"{$charset}\"?" . ">\n<rss version=\"2.0\">\n"; echo "<channel>\n<title>{$conf['app']['title']} Reservations</title>\n"; if (!$res) { echo "<item>\n"; echo '<title>' . $db->err_msg . "</title>\n"; echo '<link>' . CmnFns::getScriptURL() . "</link>\n"; echo '<description>' . $db->err_msg . "</description>\n"; echo "</item>\n"; } for ($i = 0; $i < count($res) && $res != false; $i++) { $cur = $res[$i]; echo "<item>\n"; echo '<title>' . $cur['name'] . ' [' . Time::formatDate($cur['start_date']) . ' @ ' . Time::formatTime($cur['starttime']) . "]</title>\n"; echo '<link>' . CmnFns::getScriptURL() . "/reserve.php?type=m&resid={$cur['resid']}&scheduleid={$cur['scheduleid']}" . "</link>\n"; echo '<description>' . "</description>\n"; echo "</item>\n"; } echo "</channel>\n</rss>";
/** * Print out available times or current reservation's time * This function will print out all available times to make * a reservation or will print out the selected reservation's time * (if this is a view). * @param array $res resource data array * @param object $rs reservation object * @param bool $print_min_max bool whether to print the min_max cells * @param bool $allow_multi bool if multiple day reseravtions are allowed * @global $conf */ function print_time_info($res, $rs, $print_min_max = true, $allow_multi = false) { global $conf; $type = $res->get_type(); $interval = $res->sched['timespan']; $startDay = $res->sched['daystart']; $endDay = $res->sched['dayend']; ?> <table width="100%" border="0" cellspacing="0" cellpadding="1"> <tr class="tableBorder"> <td> <table width="100%" border="0" cellspacing="1" cellpadding="0"> <tr> <td colspan="2" class="cellColor"> <h5 align='left'> <?php // Print message depending on viewing type switch ($type) { case RES_TYPE_ADD: $msg = translate('Please select the starting and ending times'); break; case RES_TYPE_MODIFY: $msg = translate('Please change the starting and ending times'); break; default: $msg = translate('Reserved time'); break; } if ((bool) $res->get_pending()) { $msg .= ' (' . translate('Pending Approval') . ')'; } echo $msg; ?> </h5> </td> </tr> <tr> <td class="formNames"><?php echo translate('Start'); ?> </td> <td class="formNames"><?php echo translate('End'); ?> </td> </tr> <tr> <?php $start_date = $res->get_start_date(); $end_date = $res->get_end_date(); $display_start_date = Time::getAdjustedDate($res->get_start_date(), $res->get_start()); $display_end_date = Time::getAdjustedDate($res->get_end_date(), $res->get_end()); // Show reserved time or select boxes depending on type if ($type == RES_TYPE_ADD || $type == RES_TYPE_MODIFY || $type == RES_TYPE_APPROVE) { // Start time select box echo '<td class="formNames" width="50%"><div id="div_start_date" style="float:left;width:86px;">' . Time::formatDate($display_start_date, '', false) . '</div><input type="hidden" id="hdn_start_date" name="start_date" value="' . date('m' . INTERNAL_DATE_SEPERATOR . 'd' . INTERNAL_DATE_SEPERATOR . 'Y', $start_date) . '" onchange="checkCalendarDates();"/>'; if ($allow_multi) { echo '<a href="javascript:void(0);"><img src="img/calendar.gif" border="0" id="img_start_date" alt="' . translate('Start') . '"/></a>' . '<br/><br/>'; } echo "<select name=\"starttime\" class=\"textbox\">\n"; // Start at startDay time, end 30 min before endDay for ($i = $startDay; $i < $endDay + $interval; $i += $interval) { echo '<option value="' . $i . '"'; // If this is a modification, select corrent time if ($res->get_start() == $i) { echo ' selected="selected" '; } echo '>' . Time::formatTime($i) . '</option>'; } echo "</select>\n</td>\n"; // End time select box echo '<td class="formNames"><div id="div_end_date" style="float:left;width:86px;">' . Time::formatDate($display_end_date, '', false) . '</div><input type="hidden" id="hdn_end_date" name="end_date" value="' . date('m' . INTERNAL_DATE_SEPERATOR . 'd' . INTERNAL_DATE_SEPERATOR . 'Y', $end_date) . '" onchange="checkCalendarDates();"/>'; if ($allow_multi) { echo '<a href="javascript:void(0);"><img src="img/calendar.gif" border="0" id="img_end_date" alt="' . translate('End') . '"/></a>' . '<br/><br/>'; } echo "<select name=\"endtime\" class=\"textbox\">\n"; // Start at 30 after startDay time, end 30 at endDay time for ($i = $startDay; $i < $endDay + $interval; $i += $interval) { echo "<option value=\"{$i}\""; // If this is a modification, select corrent time if ($res->get_end() == $i) { echo ' selected="selected" '; } echo '>' . Time::formatTime($i) . "</option>\n"; } echo "</select>\n</td>\n"; if ($print_min_max & !$allow_multi) { echo '</tr><tr class="noshow">' . '<td colspan="2">' . translate('Minimum Reservation Length') . ' ' . Time::minutes_to_hours($rs['minres']) . '</td></tr>' . '<tr class="noshow">' . '<td colspan="2">' . translate('Maximum Reservation Length') . ' ' . Time::minutes_to_hours($rs['maxres']) . '</td>'; } } else { echo '<td class="formNames" width="50%"><div id="div_start_date" style="float:left;width:86px;">' . Time::formatDate($start_date, '', false) . '</div>' . Time::formatTime($res->get_start()) . "</td>\n" . '<td class="formNames"><div id="div_end_date" style="float:left;width:86px;">' . Time::formatDate($end_date, '', false) . '</div>' . Time::formatTime($res->get_end()) . "</td>\n"; } // Close off table echo "</tr>\n</table>\n</td>\n</tr>\n</table>\n<p> </p>\n"; }