You are here

function merci_incomplete_reservations_for_item_nid in MERCI (Manage Equipment Reservations, Checkout and Inventory) 7.2

Same name and namespace in other branches
  1. 6.2 includes/database.inc \merci_incomplete_reservations_for_item_nid()

@todo Please document this function.

See also

http://drupal.org/node/1354

1 call to merci_incomplete_reservations_for_item_nid()
merci_validate_default_availability in includes/api.inc
Validates the state change of a reservable item.

File

includes/database.inc, line 276
MERCI - Managed Equipment Reservation Checkout and Inventory

Code

function merci_incomplete_reservations_for_item_nid($nid) {

  // Determine CCK table and columns the date data is stored in.
  $field = field_info_field('field_merci_date');
  $table = key($field['storage']['details']['sql']['FIELD_LOAD_CURRENT']);
  $column_start_date = $field['storage']['details']['sql']['FIELD_LOAD_CURRENT'][$table]['value'];
  $column_end_date = $field['storage']['details']['sql']['FIELD_LOAD_CURRENT'][$table]['value2'];
  $time = gmdate('Y-m-d H:i:s');

  // Pull any incomplete reservations that use the item in question
  // TODO Please convert this statement to the D7 database API syntax.
  $reservations = db_query("SELECT n.nid, n.title FROM {node} n INNER JOIN {" . $table . "} ct ON ct.revision_id = n.vid INNER JOIN {merci_reservation_detail} md ON ct.revision_id = md.vid WHERE md.merci_item_nid = :merci_item_nid AND " . $column_end_date . " >= :end AND NOT (md.merci_item_status <= :merci_item_status)", array(
    ':merci_item_nid' => $nid,
    ':end' => $time,
    ':merci_item_status' => MERCI_ITEM_STATUS_AVAILABLE,
  ));
  $bad_reservations = array();
  foreach ($reservations as $reservation) {
    $bad_reservations[] = l($reservation->title, "node/{$reservation->nid}/edit", array(
      'query' => drupal_get_destination(),
    ));
  }
  return $bad_reservations;
}