You are here

function availability_calendars_get_settings in Availability Calendars 7.2

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

Utility function to get settings related to nodes or administration.

Parameters

object|int|NULL $node: A node object or a nid for if you want node specific settings, NULL (default) otherwise.

Return value

object An object with all settings for the given scope.

12 calls to availability_calendars_get_settings()
ac_update_check_prerequisites in ac_update/ac_update.module
ac_update_create_field_instances in ac_update/ac_update.module
AvailabilityCalendarsNodeEditCalendarFormHandler::__construct in ./availability_calendars.node.inc
availability_calendars_add_js in ./availability_calendars.module
Adds required js files, script, and settings.
availability_calendars_admin_settings in ./availability_calendars.admin.inc
Retrieve form callback for the admin/config/availability-calendars/settings page.

... See full list

File

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

Code

function availability_calendars_get_settings($node = NULL) {

  // Default settings.
  $states = availability_calendars_get_states();
  $first_state = reset($states);
  $settings = array(
    'states' => $states,
    'startofweek' => 1,
    'showteaser' => 1,
    'showkey' => 1,
    'showeditlink' => 1,
    'showweeknotes' => 1,
    'firstletter' => 0,
    'hideold' => 0,
    'defaultstatus' => $first_state['css_class'],
    'monthcount' => 12,
    'editormonthcount' => 18,
    'splitday' => 0,
    'nodeview' => variable_get('availability_calendars_settings_system_nodeview', 1),
    'pernodeoverride' => variable_get('availability_calendars_settings_system_pernodeoverride', 0),
  );

  // Override and extend with system wide settings.
  $settings = array_merge($settings, variable_get('availability_calendars_settings_system', array()));
  $settings['contenttypes'] = variable_get('availability_calendars_settings_content_types', array());

  // Override with node specific settings if we are in an existing node scope and allow to override per node.
  if ($node != NULL) {
    if (!is_object($node)) {
      $node = node_load($node);
    }
    $settings['nid'] = $node->nid;
    $settings['calendar_id'] = $node->tnid && $node->tnid != $node->nid ? $node->tnid : $node->nid;
    $settings = array_merge($settings, variable_get('availability_calendars_settings_node_' . $settings['calendar_id'], array()));
  }
  return (object) $settings;
}