You are here

function xbbcode_settings_handlers_save_submit in Extensible BBCode 8

Same name and namespace in other branches
  1. 7 xbbcode.admin.inc \xbbcode_settings_handlers_save_submit()

Save the handler settings.

2 string references to 'xbbcode_settings_handlers_save_submit'
xbbcode_filter_settings in ./xbbcode.module
Settings callback for the filter settings of xbbcode.
xbbcode_settings_handlers in ./xbbcode.admin.inc
Modify the global handler settings.

File

./xbbcode.admin.inc, line 405
Administrative interface for modifying tags and settings.

Code

function xbbcode_settings_handlers_save_submit($form, $form_state) {

  // Determine if the settings are edited globally or in a text format.
  if (isset($form['#format'])) {

    // If a format has just been created, the #format info is still empty.
    if (!empty($form['#format']->format)) {
      $format_id = $form['#format']->format;
    }
    else {
      $format_id = $form_state['values']['format'];
    }
    $settings = $form_state['values']['filters']['xbbcode']['settings'];
  }
  else {
    $format_id = XBBCODE_GLOBAL;
    $settings = $form_state['values'];
  }
  if ($format_id == XBBCODE_GLOBAL || $settings['override']) {

    // Change the global settings or a format with specific settings.
    $enabled = $settings['tags']['_enabled'];
    unset($settings['tags']['_enabled']);
    foreach ($settings['tags'] as $name => $values) {
      if (is_array($values)) {
        $values['name'] = $name;
        $values['enabled'] = $enabled[$name] ? 1 : 0;
        xbbcode_handler_save((object) $values, $format_id);
      }
    }
    drupal_set_message(t('The tag settings were updated.'));
    xbbcode_rebuild_tags($format_id);
  }
  else {

    // If the format doesn't override, remove any specific settings.
    if (xbbcode_handlers_delete_format($format_id)) {
      drupal_set_message(t('The format-specific tag settings were reset.'));
      xbbcode_rebuild_tags($format_id);
    }
  }
}