You are here

public function ObjectAttributesAddFormBase::submitForm in Ubercart 8.4

Form submission handler.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Overrides FormInterface::submitForm

2 calls to ObjectAttributesAddFormBase::submitForm()
ProductAttributesAddForm::submitForm in uc_attribute/src/Form/ProductAttributesAddForm.php
Form submission handler.
ProductClassAttributesAddForm::submitForm in uc_attribute/src/Form/ProductClassAttributesAddForm.php
Form submission handler.
2 methods override ObjectAttributesAddFormBase::submitForm()
ProductAttributesAddForm::submitForm in uc_attribute/src/Form/ProductAttributesAddForm.php
Form submission handler.
ProductClassAttributesAddForm::submitForm in uc_attribute/src/Form/ProductClassAttributesAddForm.php
Form submission handler.

File

uc_attribute/src/Form/ObjectAttributesAddFormBase.php, line 98

Class

ObjectAttributesAddFormBase
Defines the class/product attributes add form.

Namespace

Drupal\uc_attribute\Form

Code

public function submitForm(array &$form, FormStateInterface $form_state) {
  foreach (array_filter($form_state
    ->getValue('add_attributes')) as $aid) {

    // Enable all options for added attributes.
    $attribute = uc_attribute_load($aid);
    $oid = 0;
    if (isset($attribute->options)) {
      foreach ($attribute->options as $option) {
        $option->{$this->idField} = $this->idValue;
        unset($option->name);
        unset($option->aid);
        \Drupal::database()
          ->insert($this->optionTable)
          ->fields((array) $option)
          ->execute();
      }

      // Make the first option (if any) the default.
      if ($option = reset($attribute->options)) {
        $oid = $option->oid;
      }
    }
    $select = \Drupal::database()
      ->select('uc_attributes', 'a')
      ->condition('aid', $aid);
    $select
      ->addExpression(':id', $this->idField, [
      ':id' => $this->idValue,
    ]);
    $select
      ->addField('a', 'aid');
    $select
      ->addField('a', 'label');
    $select
      ->addField('a', 'ordering');
    $select
      ->addExpression(':oid', 'default_option', [
      ':oid' => $oid,
    ]);
    $select
      ->addField('a', 'required');
    $select
      ->addField('a', 'display');
    \Drupal::database()
      ->insert($this->attributeTable)
      ->from($select)
      ->execute();
  }
  $num = count(array_filter($form_state
    ->getValue('add_attributes')));
  if ($num > 0) {
    $this
      ->attributesAdded();
    $this
      ->messenger()
      ->addMessage($this
      ->formatPlural($num, '1 attribute has been added.', '@count attributes have been added.'));
  }
}