function availability_calendars_update_node_states in Availability Calendars 7.2
Same name and namespace in other branches
- 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();
}
}