You are here

function datereminder_alter_node_type_form in Date Reminder 6

Same name and namespace in other branches
  1. 6.2 includes/node_form.inc \datereminder_alter_node_type_form()
  2. 7 includes/node_form.inc \datereminder_alter_node_type_form()

Implements hook_node_type().

Parameters

array $form: The current form

array $form_state: ...and state

string $nodetype: Type of node

1 call to datereminder_alter_node_type_form()
datereminder_form_alter in ./datereminder.module
Implements hook_form_alter().

File

includes/node_form.inc, line 89
Functions that support node type edit forms.

Code

function datereminder_alter_node_type_form(&$form, &$form_state, $nodetype) {
  module_load_include('inc', 'datereminder', 'includes/defines');
  module_load_include('inc', 'datereminder', 'includes/date');
  $thisype = content_types($nodetype);
  $datetypes = _datereminder_supported_date_field_types();
  $fields = $thisype['fields'];
  if (!empty($fields) & is_array($fields)) {
    foreach ($thisype['fields'] as $afield) {
      if (array_key_exists($afield['type'], $datetypes)) {
        $datefields[$afield['field_name']] = $afield['widget']['label'];
        $lastkey = $afield['field_name'];
      }
    }
  }
  if (count($datefields) == 0) {
    $form['datereminder_enabled'] = array(
      '#type' => 'hidden',
      '#value' => DATEREMINDER_TYPE_DISABLED,
    );
  }
  else {

    // What is current setting?
    $enabled = _datereminder_type_enabled($nodetype);
    $currentfield = variable_get("datereminder_datefield_{$nodetype}", $lastkey);

    /*
     * One would certainly not expect the following to be necessary.
     * It means that the variable is set to something that isn't an
     * existing date key. One user reported that this happened. I suspect
     * some kind of operator error, but this should clean it up
     * if that happens.
     */
    if (!in_array($currentfield, $datefields)) {
      $currentfield = $lastkey;
    }
    $form['reminder'] = array(
      '#type' => 'fieldset',
      '#title' => t('Reminder settings'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#weight' => 20,
    );
    $radios[DATEREMINDER_TYPE_DISABLED] = t('Disabled');
    $radios[DATEREMINDER_TYPE_RETAIN] = t('Disabled, but retain any existing reminders');
    $radios[DATEREMINDER_TYPE_ALLOWED] = t('Allowed, off unless explicitly enabled');
    $radios[DATEREMINDER_TYPE_ON] = t('Allowed, automatically enabled for new nodes');
    $form['reminder']['datereminder_enabled'] = array(
      '#type' => 'radios',
      '#options' => $radios,
      '#default_value' => $enabled,
    );
    $form['reminder']['datereminder_all_on'] = array(
      '#type' => 'checkbox',
      '#title' => t('Enable reminders for existing nodes'),
      '#description' => t('Check if you want to enable reminders for existing nodes.'),
      '#default_value' => FALSE,
    );
    if (count($datefields) > 1) {
      $form['reminder']['datereminder_datefield'] = array(
        '#type' => 'select',
        '#options' => $datefields,
        '#default_value' => $currentfield,
        '#description' => t('Select which of several date fields to use for reminders'),
      );
      $lbl = t('Enable allowing users to request reminders for an event');
    }
    else {
      $form['reminder']['datereminder_datefield'] = array(
        '#type' => 'hidden',
        '#value' => $currentfield,
      );
      $lbl = t('Enable allowing users to request reminders for an event, based on field %date', array(
        '%date' => $datefields[$lastkey],
      ));
    }
    $form['reminder']['datereminder_enabled']['#description'] = $lbl;
    $form['#validate'][] = '_datereminder_form_validate_node_type';
    $form['#submit'][] = '_datereminder_form_submit_node_type';
  }
}