You are here

public static function SocialProfileTagSplitWidget::validateElement in Open Social 10.2.x

Same name and namespace in other branches
  1. 10.3.x modules/social_features/social_profile/src/Plugin/Field/FieldWidget/SocialProfileTagSplitWidget.php \Drupal\social_profile\Plugin\Field\FieldWidget\SocialProfileTagSplitWidget::validateElement()

File

modules/social_features/social_profile/src/Plugin/Field/FieldWidget/SocialProfileTagSplitWidget.php, line 121

Class

SocialProfileTagSplitWidget
Class SocialProfileTagSplitWidget.

Namespace

Drupal\social_profile\Plugin\Field\FieldWidget

Code

public static function validateElement(array $element, FormStateInterface $form_state) {

  /** @var \Drupal\social_profile\SocialProfileTagServiceInterface $profile_tag_service */
  $profile_tag_service = \Drupal::service('social_profile.tag_service');
  if ($profile_tag_service
    ->allowSplit()) {
    $build_info = $form_state
      ->getBuildInfo();
    if ($build_info['form_id'] === 'user_register_form') {
      $field_element = [
        'entity_profile',
        $element['#field_name'],
      ];
    }
    else {
      $field_element = $element['#field_name'];
    }
    $value = $form_state
      ->getValue($field_element);
    $field_value = [];

    // Get the main categories.
    $categories = $profile_tag_service
      ->getCategories();
    foreach ($categories as $tid => $category) {
      $field_name = 'profile_tagging_' . $profile_tag_service
        ->tagLabelToMachineName($category);
      if (isset($value[$field_name])) {
        $field_value += $value[$field_name];
      }
    }
    $form_state
      ->setValue($field_element, $field_value);
  }
  else {
    parent::validateElement($element, $form_state);
  }
}