Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      0.00%  | 
      0 / 1  | 
              | 
      0.00%  | 
      0 / 19  | 
      CRAP |         | 
      0.00%  | 
      0 / 93  | 
     
| Item |         | 
      0.00%  | 
      0 / 1  | 
              | 
      0.00%  | 
      0 / 19  | 
      420 |         | 
      0.00%  | 
      0 / 93  | 
     
| label |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| baseFieldDefinitions |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 54  | 
     |||
| getFeedId |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setFeedId |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| getTitle |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setTitle |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| getLink |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setLink |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| getAuthor |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setAuthor |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| getDescription |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setDescription |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| getPostedTime |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setPostedTime |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| getGuid |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| setGuid |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| postSave |         | 
      0.00%  | 
      0 / 1  | 
      6 |         | 
      0.00%  | 
      0 / 5  | 
     |||
| getCacheTagsToInvalidate |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| buildUri |         | 
      0.00%  | 
      0 / 1  | 
      2 |         | 
      0.00%  | 
      0 / 2  | 
     |||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\aggregator\Entity\Item. | |
| */ | |
| namespace Drupal\aggregator\Entity; | |
| use Drupal\Core\Cache\Cache; | |
| use Drupal\Core\Entity\ContentEntityBase; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\aggregator\ItemInterface; | |
| use Drupal\Core\Entity\EntityTypeInterface; | |
| use Drupal\Core\Field\BaseFieldDefinition; | |
| use Drupal\Core\Url; | |
| /** | |
| * Defines the aggregator item entity class. | |
| * | |
| * @ContentEntityType( | |
| * id = "aggregator_item", | |
| * label = @Translation("Aggregator feed item"), | |
| * handlers = { | |
| * "storage" = "Drupal\aggregator\ItemStorage", | |
| * "storage_schema" = "Drupal\aggregator\ItemStorageSchema", | |
| * "view_builder" = "Drupal\aggregator\ItemViewBuilder", | |
| * "access" = "Drupal\aggregator\FeedAccessControlHandler", | |
| * "views_data" = "Drupal\aggregator\AggregatorItemViewsData" | |
| * }, | |
| * uri_callback = "Drupal\aggregator\Entity\Item::buildUri", | |
| * base_table = "aggregator_item", | |
| * render_cache = FALSE, | |
| * list_cache_tags = { "aggregator_feed_list" }, | |
| * entity_keys = { | |
| * "id" = "iid", | |
| * "label" = "title", | |
| * "langcode" = "langcode", | |
| * } | |
| * ) | |
| */ | |
| class Item extends ContentEntityBase implements ItemInterface { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function label() { | |
| return $this->get('title')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { | |
| $fields['iid'] = BaseFieldDefinition::create('integer') | |
| ->setLabel(t('Aggregator item ID')) | |
| ->setDescription(t('The ID of the feed item.')) | |
| ->setReadOnly(TRUE) | |
| ->setSetting('unsigned', TRUE); | |
| $fields['fid'] = BaseFieldDefinition::create('entity_reference') | |
| ->setLabel(t('Source feed')) | |
| ->setRequired(TRUE) | |
| ->setDescription(t('The aggregator feed entity associated with this item.')) | |
| ->setSetting('target_type', 'aggregator_feed') | |
| ->setDisplayOptions('view', array( | |
| 'label' => 'hidden', | |
| 'type' => 'entity_reference_label', | |
| 'weight' => 0, | |
| )) | |
| ->setDisplayConfigurable('form', TRUE); | |
| $fields['title'] = BaseFieldDefinition::create('string') | |
| ->setLabel(t('Title')) | |
| ->setDescription(t('The title of the feed item.')); | |
| $fields['langcode'] = BaseFieldDefinition::create('language') | |
| ->setLabel(t('Language code')) | |
| ->setDescription(t('The feed item language code.')); | |
| $fields['link'] = BaseFieldDefinition::create('uri') | |
| ->setLabel(t('Link')) | |
| ->setDescription(t('The link of the feed item.')) | |
| ->setDisplayOptions('view', array( | |
| 'type' => 'hidden', | |
| )) | |
| ->setDisplayConfigurable('view', TRUE); | |
| $fields['author'] = BaseFieldDefinition::create('string') | |
| ->setLabel(t('Author')) | |
| ->setDescription(t('The author of the feed item.')) | |
| ->setDisplayOptions('view', array( | |
| 'label' => 'hidden', | |
| 'weight' => 3, | |
| )) | |
| ->setDisplayConfigurable('view', TRUE); | |
| $fields['description'] = BaseFieldDefinition::create('string_long') | |
| ->setLabel(t('Description')) | |
| ->setDescription(t('The body of the feed item.')); | |
| $fields['timestamp'] = BaseFieldDefinition::create('created') | |
| ->setLabel(t('Posted on')) | |
| ->setDescription(t('Posted date of the feed item, as a Unix timestamp.')) | |
| ->setDisplayOptions('view', array( | |
| 'label' => 'hidden', | |
| 'type' => 'timestamp_ago', | |
| 'weight' => 1, | |
| )) | |
| ->setDisplayConfigurable('view', TRUE); | |
| // @todo Convert to a real UUID field in | |
| // https://www.drupal.org/node/2149851. | |
| $fields['guid'] = BaseFieldDefinition::create('string_long') | |
| ->setLabel(t('GUID')) | |
| ->setDescription(t('Unique identifier for the feed item.')); | |
| return $fields; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getFeedId() { | |
| return $this->get('fid')->target_id; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setFeedId($fid) { | |
| return $this->set('fid', $fid); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getTitle() { | |
| return $this->get('title')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setTitle($title) { | |
| return $this->set('title', $title); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getLink() { | |
| return $this->get('link')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setLink($link) { | |
| return $this->set('link', $link); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getAuthor() { | |
| return $this->get('author')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setAuthor($author) { | |
| return $this->set('author', $author); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getDescription() { | |
| return $this->get('description')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setDescription($description) { | |
| return $this->set('description', $description); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getPostedTime() { | |
| return $this->get('timestamp')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setPostedTime($timestamp) { | |
| return $this->set('timestamp', $timestamp); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getGuid() { | |
| return $this->get('guid')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setGuid($guid) { | |
| return $this->set('guid', $guid); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function postSave(EntityStorageInterface $storage, $update = TRUE) { | |
| parent::postSave($storage, $update); | |
| // Entity::postSave() calls Entity::invalidateTagsOnSave(), which only | |
| // handles the regular cases. The Item entity has one special case: a newly | |
| // created Item is *also* associated with a Feed, so we must invalidate the | |
| // associated Feed's cache tag. | |
| if (!$update) { | |
| Cache::invalidateTags($this->getCacheTagsToInvalidate()); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getCacheTagsToInvalidate() { | |
| return Feed::load($this->getFeedId())->getCacheTags(); | |
| } | |
| /** | |
| * Entity URI callback. | |
| */ | |
| public static function buildUri(ItemInterface $item) { | |
| return Url::fromUri($item->getLink()); | |
| } | |
| } |