You are here

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;
}