You are here

public static function CronPluginMultiple::jobSettingsForm in Ultimate Cron 8.2

Job settings form.

File

src/CronPluginMultiple.php, line 29

Class

CronPluginMultiple

Namespace

Drupal\ultimate_cron

Code

public static function jobSettingsForm(&$form, &$form_state, $plugin_type, $job) {

  // Check valid plugins.
  $plugins = ultimate_cron_plugin_load_all($plugin_type);
  foreach ($plugins as $name => $plugin) {
    if (!$plugin
      ->isValid($job)) {
      unset($plugins[$name]);
    }
  }

  // No plugins = no settings = no vertical tabs for you mister!
  if (empty($plugins)) {
    return;
  }
  $weight = 10;
  $form_state['default_values']['settings'][$plugin_type] = array();
  $form['settings'][$plugin_type]['#tree'] = TRUE;
  foreach ($plugins as $name => $plugin) {
    $form_state['default_values']['settings'][$plugin_type][$name] = array();
    if (empty($form_state['values']['settings'][$plugin_type][$name])) {
      $form_state['values']['settings'][$plugin_type][$name] = array();
    }
    $form['settings'][$plugin_type][$name] = array(
      '#title' => $plugin->title,
      '#group' => 'settings_tabs',
      '#type' => 'fieldset',
      '#tree' => TRUE,
      '#visible' => TRUE,
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#weight' => $weight++,
    );
    $defaults = $plugin
      ->getDefaultSettings($job);
    $form_state['default_values']['settings'][$plugin_type][$name] += $defaults;
    $form_state['values']['settings'][$plugin_type][$name] += ultimate_cron_blank_values($defaults);
    $plugin
      ->settingsForm($form, $form_state, $job);
    if (empty($form['settings'][$plugin_type][$name]['no_settings'])) {
      $plugin
        ->fallbackalize($form['settings'][$plugin_type][$name], $form_state['values']['settings'][$plugin_type][$name], $form_state['default_values']['settings'][$plugin_type][$name], FALSE);
    }
    else {
      unset($form['settings'][$plugin_type][$name]);
    }
  }
}