function merci_load_reservations_for_type_in_timespan in MERCI (Manage Equipment Reservations, Checkout and Inventory) 6
Builds an array representing reservations for a given bucket within a given timespan
Return value
An associative array with keys as times (in MySQL datetime format) and values as number of reservations.
1 call to merci_load_reservations_for_type_in_timespan()
- merci_node_validate in ./
merci.module - Implementation of hook_validate().
File
- ./
merci.module, line 2498 - MERCI - Managed Equipment Reservation Checkout and Inventory
Code
function merci_load_reservations_for_type_in_timespan($type, $start_date, $end_date) {
$timezone_offset = variable_get('date_default_timezone', 0);
$reservation_counts = array();
$datetime = strtotime($start_date . ' 00:00:00');
while (date('Y-m-d', $datetime) < $end_date) {
$date = date('Y-m-d', $datetime);
$time = date('H:i:s', $datetime);
if (!isset($reservation_counts[$date])) {
$reservation_counts[$date] = array();
}
$reservation_counts[$date][$time] = 0;
$datetime = strtotime($date . ' ' . $time . ' +15 minutes');
}
// while
// ! Get reservation times from database
$reservation_times = array();
$sql = "SELECT r.field_merci_date_value AS start, r.field_merci_date_value2 AS end\n FROM {merci_reservation_detail} d\n JOIN {node} n\n ON n.nid = d.placeholder_nid\n JOIN {content_type_merci_reservation} r\n ON r.vid = d.vid\n WHERE n.type = '%s'\n AND r.field_merci_date_value < '%s'\n AND r.field_merci_date_value2 >= '%s'";
$times = db_query($sql, $type, $end_date, $start_date);
while ($reservation_time = db_fetch_object($times)) {
$reservation_times[] = $reservation_time;
}
// ! Update reservation count
foreach ($reservation_times as $reservation_time) {
$datetime = $reservation_time->start;
while ($datetime < $reservation_time->end) {
list($date, $time) = explode(' ', $datetime);
$time = date('H:i:s', strtotime($time) + $timezone_offset);
if (isset($reservation_counts[$date][$time])) {
$reservation_counts[$date][$time]++;
}
$datetime = date('Y-m-d H:i:s', strtotime($datetime . ' +15 minutes'));
}
// while
}
// foreach
return $reservation_counts;
}