diff --git a/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php b/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php index 102d3b8..52d19fc 100644 --- a/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php +++ b/src/Plugin/monitoring/SensorPlugin/DatabaseAggregatorSensorPlugin.php @@ -359,10 +359,11 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase $form_state->set('fields_rows', count($fields) + 1); } for ($i = 0; $i < $form_state->get('fields_rows'); $i++) { - $form['output_table']['verbose_fields'][$i] = array( + $field = isset($fields[$i]) ? $fields[$i] : $i; + $form['output_table']['verbose_fields'][$field] = array( 'field' => array( '#type' => 'textfield', - '#default_value' => isset($fields[$i]) ? $fields[$i] : '', + '#default_value' => (is_int($field)) ? '' : $field, '#title' => t('Field'), '#title_display' => 'invisible', '#size' => 20, @@ -428,8 +429,8 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase $verbose_fields = []; foreach ($form_state->getValue('verbose_fields') as $field) { - if (!empty($field)) { - $verbose_fields[] = $field; + if (!empty($field['field'])) { + $verbose_fields[] = $field['field']; } } $settings = $this->sensorConfig->getSettings(); @@ -530,29 +531,23 @@ class DatabaseAggregatorSensorPlugin extends DatabaseAggregatorSensorPluginBase t('The specified time interval field %name does not exist in table %table.', array('%name' => $field_name, $table))); } } + + // Validate verbose_fields. $fields = $form_state->getValue('verbose_fields'); - $new_fields = []; foreach ($fields as $key => $field) { $query = $database->select($table); $field_name = $field['field']; - if (!empty($field_name)) { + if (!empty($field_name) && !$database->schema()->fieldExists($table, $field_name)) { $query->addField($table, $field_name); - $new_fields[] = (array_pop($fields[$key])); - if (!$database->schema()->fieldExists($table, $field_name)) { - try { - $query->range(0, 1)->execute(); - } - catch (\Exception $e) { - - $form_state->setErrorByName("verbose_fields][$key][field", t('The field %field does not exist in the table "%table".', ['%field' => $new_fields[$key], '%table' => $table])); - unset($new_fields[$key]); - continue; - } + try { + $query->range(0, 1)->execute(); + } + catch (\Exception $e) { + $form_state->setErrorByName("verbose_fields][$key][field", t('The field %field does not exist in the table "%table".', ['%field' => $field_name, '%table' => $table])); + continue; } } } - - $form_state->setValue('verbose_fields', $new_fields); } }