commentManager = $comment_manager; $this->entityManager = $entity_manager; $this->logger = $logger; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('comment.manager'), $container->get('entity.manager'), $container->get('logger.factory')->get('comment') ); } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $comments = $this->entityTypeManager->getStorage('comment')->getQuery() ->condition('comment_type', $this->entity->id()) ->execute(); $entity_type = $this->entity->getTargetEntityTypeId(); $caption = ''; foreach (array_keys($this->commentManager->getFields($entity_type)) as $field_name) { /** @var \Drupal\field\FieldStorageConfigInterface $field_storage */ if (($field_storage = FieldStorageConfig::loadByName($entity_type, $field_name)) && $field_storage->getSetting('comment_type') == $this->entity->id() && !$field_storage->isDeleted()) { $caption .= '

' . $this->t('%label is used by the %field field on your site. You can not remove this comment type until you have removed the field.', [ '%label' => $this->entity->label(), '%field' => $field_storage->label(), ]) . '

'; } } if (!empty($comments)) { $caption .= '

' . $this->formatPlural(count($comments), '%label is used by 1 comment on your site. You can not remove this comment type until you have removed all of the %label comments.', '%label is used by @count comments on your site. You may not remove %label until you have removed all of the %label comments.', ['%label' => $this->entity->label()]) . '

'; } if ($caption) { $form['description'] = ['#markup' => $caption]; return $form; } else { return parent::buildForm($form, $form_state); } } }