diff --git a/config/schema/media_entity_twitter.schema.yml b/config/schema/media_entity_twitter.schema.yml index bfd40d8..04c37e6 100644 --- a/config/schema/media_entity_twitter.schema.yml +++ b/config/schema/media_entity_twitter.schema.yml @@ -13,9 +13,6 @@ media_entity.bundle.type.twitter: source_field: type: string label: 'Field with embed code/URL' - create_source_field: - type: boolean - label: 'Whether to automatically create a source field on bundle creation or not' use_twitter_api: type: boolean label: 'Whether to use twitter api or not' diff --git a/src/Plugin/MediaEntity/Type/Twitter.php b/src/Plugin/MediaEntity/Type/Twitter.php index 5b3a8dd..695903a 100644 --- a/src/Plugin/MediaEntity/Type/Twitter.php +++ b/src/Plugin/MediaEntity/Type/Twitter.php @@ -117,7 +117,6 @@ class Twitter extends MediaTypeBase { public function defaultConfiguration() { return [ 'use_twitter_api' => FALSE, - 'create_source_field' => TRUE, 'generate_thumbnails' => FALSE, ]; } @@ -224,28 +223,36 @@ class Twitter extends MediaTypeBase { return FALSE; } + /** + * {@inheritdoc} + */ public function allowedSourceFieldTypes() { return ['string', 'string_long', 'link']; } + /** + * {@inheritdoc} + */ public function defaultSourceFieldLabel() { return $this->t('Tweet URL'); } - public function defaultSourceFieldName() { - return 'field_media_twitter'; - } - + /** + * {@inheritdoc} + */ public function defaultSourceFieldType() { return 'string'; } + /** + * {@inheritdoc} + */ public function defaultSourceFieldWidget() { return 'string_textfield'; } /** - * The id of the formatter to be used when creating the default source field. + * {@inheritdoc} */ public function defaultSourceFieldFormatter() { return 'twitter_embed'; @@ -340,13 +347,15 @@ class Twitter extends MediaTypeBase { public function attachConstraints(MediaInterface $media) { parent::attachConstraints($media); - $source_field_name = empty($this->configuration['source_field']) ? static::MEDIA_ENTITY_TWITTER_DEFAULT_FIELD_NAME : $this->configuration['source_field']; - if ($media->hasField($source_field_name)) { - foreach ($media->get($source_field_name) as &$embed_code) { - /** @var \Drupal\Core\TypedData\DataDefinitionInterface $typed_data */ - $typed_data = $embed_code->getDataDefinition(); - $typed_data->addConstraint('TweetEmbedCode'); - $typed_data->addConstraint('TweetVisible'); + if (isset($this->configuration['source_field'])) { + $source_field_name = $this->configuration['source_field']; + if ($media->hasField($source_field_name)) { + foreach ($media->get($source_field_name) as &$embed_code) { + /** @var \Drupal\Core\TypedData\DataDefinitionInterface $typed_data */ + $typed_data = $embed_code->getDataDefinition(); + $typed_data->addConstraint('TweetEmbedCode'); + $typed_data->addConstraint('TweetVisible'); + } } } } @@ -447,12 +456,14 @@ class Twitter extends MediaTypeBase { protected function matchRegexp(MediaInterface $media) { $matches = array(); - $source_field_name = empty($this->configuration['source_field']) ? static::MEDIA_ENTITY_TWITTER_DEFAULT_FIELD_NAME : $this->configuration['source_field']; - if ($media->hasField($source_field_name)) { - $property_name = $media->{$source_field_name}->first()->mainPropertyName(); - foreach (static::$validationRegexp as $pattern => $key) { - if (preg_match($pattern, $media->{$source_field_name}->{$property_name}, $matches)) { - return $matches; + if (isset($this->configuration['source_field'])) { + $source_field = $this->configuration['source_field']; + if ($media->hasField($source_field)) { + $property_name = $media->{$source_field}->first()->mainPropertyName(); + foreach (static::$validationRegexp as $pattern => $key) { + if (preg_match($pattern, $media->{$source_field}->{$property_name}, $matches)) { + return $matches; + } } } }