You are here

function availability_calendars_update_node_states in Availability Calendars 7.2

Same name and namespace in other branches
  1. 6.2 availability_calendars.inc \availability_calendars_update_node_states()

Update the states for the calendar for the given node in the given month.

Parameters

int $calendar_nid:

int $year:

int $month: $param array $states Array with 28 to 31 day states (string) keyed by the day of the month number (int).

1 call to availability_calendars_update_node_states()
availability_calendars_node_edit_calendar_month_form_submit in ./availability_calendars.node.inc
Callback function for submitting a node edit form.

File

./availability_calendars.inc, line 369
General helper methods for Availability Calendars, like database access and settings.

Code

function availability_calendars_update_node_states($calendar_nid, $year, $month, $states) {
  $start_date = date(AC_ISODATE, mktime(0, 0, 0, $month, 1, $year));
  $end_date = date(AC_ISODATE, mktime(0, 0, 0, $month + 1, 0, $year));

  // Delete all current states.
  db_delete('availability_calendars_day')
    ->condition('nid', $calendar_nid)
    ->condition('date', array(
    $start_date,
    $end_date,
  ), 'BETWEEN')
    ->execute();

  // Insert new states.
  $query = db_insert('availability_calendars_day');
  $values = array(
    'nid' => $calendar_nid,
  );
  $has_records = FALSE;
  foreach ($states as $day => $values['status']) {
    $values['date'] = date(AC_ISODATE, mktime(0, 0, 0, $month, $day, $year));
    if (!$has_records) {
      $query
        ->fields($values);
      $has_records = TRUE;
    }
    else {
      $query
        ->values($values);
    }
  }
  if ($has_records) {
    $query
      ->execute();
  }
}