You are here

function flag_entity_extra_field_info in Flag 8.4

Implements hook_entity_extra_field_info().

File

./flag.module, line 263
The Flag module.

Code

function flag_entity_extra_field_info() {
  $extra = [];
  $flag_service = \Drupal::service('flag');
  $flags = $flag_service
    ->getAllFlags();

  /** @var FlagInterface $flag */
  foreach ($flags as $flag) {

    // Skip flags that aren't on entities.
    $flag_type_plugin = $flag
      ->getFlagTypePlugin();
    if (!$flag_type_plugin instanceof EntityFlagType) {
      continue;
    }
    $flaggable_bundles = $flag
      ->getApplicableBundles();
    foreach ($flaggable_bundles as $bundle_name) {
      if ($flag_type_plugin
        ->showOnForm()) {
        $extra[$flag
          ->getFlaggableEntityTypeId()][$bundle_name]['form']['flag'] = [
          'label' => t('Flags'),
          'description' => t('Checkboxes for toggling flags'),
          'weight' => 10,
        ];
      }
      if ($flag_type_plugin
        ->showAsField()) {
        $extra[$flag
          ->getFlaggableEntityTypeId()][$bundle_name]['display']['flag_' . $flag
          ->id()] = [
          'label' => t('Flag: %title', [
            '%title' => $flag
              ->label(),
          ]),
          'description' => t('Individual flag link'),
          'weight' => 10,
        ];
      }
    }
  }
  return $extra;
}