You are here

public function EntityTraitManager::detectConflicts in Commerce Core 8.2

Detects conflicts between the given trait and the installed traits.

A conflict exists if the given trait has a field with a name that's already taken by a field from an installed trait.

Parameters

\Drupal\commerce\Plugin\Commerce\EntityTrait\EntityTraitInterface $trait: The trait.

\Drupal\commerce\Plugin\Commerce\EntityTrait\EntityTraitInterface[] $installed_traits: The installed traits.

Overrides EntityTraitManagerInterface::detectConflicts

File

src/EntityTraitManager.php, line 75

Class

EntityTraitManager
Manages discovery and instantiation of entity trait plugins.

Namespace

Drupal\commerce

Code

public function detectConflicts(EntityTraitInterface $trait, array $installed_traits) {
  $field_names = array_keys($trait
    ->buildFieldDefinitions());
  if (!$field_names) {
    return [];
  }
  $conflicting_traits = [];
  foreach ($installed_traits as $installed_trait) {
    $installed_field_names = array_keys($installed_trait
      ->buildFieldDefinitions());
    if (array_intersect($field_names, $installed_field_names)) {
      $conflicting_traits[] = $installed_trait;
    }
  }
  return $conflicting_traits;
}