annotate core/modules/aggregator/src/ItemStorage.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\aggregator;
Chris@0 4
Chris@0 5 use Drupal\Core\Entity\Query\QueryInterface;
Chris@0 6 use Drupal\Core\Entity\Sql\SqlContentEntityStorage;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Controller class for aggregators items.
Chris@0 10 *
Chris@0 11 * This extends the Drupal\Core\Entity\Sql\SqlContentEntityStorage class, adding
Chris@0 12 * required special handling for feed item entities.
Chris@0 13 */
Chris@0 14 class ItemStorage extends SqlContentEntityStorage implements ItemStorageInterface {
Chris@0 15
Chris@0 16 /**
Chris@0 17 * {@inheritdoc}
Chris@0 18 */
Chris@0 19 public function getItemCount(FeedInterface $feed) {
Chris@0 20 $query = \Drupal::entityQuery('aggregator_item')
Chris@0 21 ->condition('fid', $feed->id())
Chris@0 22 ->count();
Chris@0 23
Chris@0 24 return $query->execute();
Chris@0 25 }
Chris@0 26
Chris@0 27 /**
Chris@0 28 * {@inheritdoc}
Chris@0 29 */
Chris@0 30 public function loadAll($limit = NULL) {
Chris@0 31 $query = \Drupal::entityQuery('aggregator_item');
Chris@0 32 return $this->executeFeedItemQuery($query, $limit);
Chris@0 33 }
Chris@0 34
Chris@0 35 /**
Chris@0 36 * {@inheritdoc}
Chris@0 37 */
Chris@0 38 public function loadByFeed($fid, $limit = NULL) {
Chris@0 39 $query = \Drupal::entityQuery('aggregator_item')
Chris@0 40 ->condition('fid', $fid);
Chris@0 41 return $this->executeFeedItemQuery($query, $limit);
Chris@0 42 }
Chris@0 43
Chris@0 44 /**
Chris@0 45 * Helper method to execute an item query.
Chris@0 46 *
Chris@0 47 * @param \Drupal\Core\Entity\Query\QueryInterface $query
Chris@0 48 * The query to execute.
Chris@0 49 * @param int $limit
Chris@0 50 * (optional) The number of items to return.
Chris@0 51 *
Chris@0 52 * @return \Drupal\aggregator\ItemInterface[]
Chris@0 53 * An array of the feed items.
Chris@0 54 */
Chris@0 55 protected function executeFeedItemQuery(QueryInterface $query, $limit) {
Chris@0 56 $query->sort('timestamp', 'DESC')
Chris@0 57 ->sort('iid', 'DESC');
Chris@0 58 if (!empty($limit)) {
Chris@0 59 $query->pager($limit);
Chris@0 60 }
Chris@0 61
Chris@0 62 return $this->loadMultiple($query->execute());
Chris@0 63 }
Chris@0 64
Chris@0 65 }