Mercurial > hg > isophonics-drupal-site
view core/modules/aggregator/src/ItemStorage.php @ 5:c69a71b4f40f
Add slideshow module
author | Chris Cannam |
---|---|
date | Thu, 07 Dec 2017 14:46:23 +0000 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line source
<?php namespace Drupal\aggregator; use Drupal\Core\Entity\Query\QueryInterface; use Drupal\Core\Entity\Sql\SqlContentEntityStorage; /** * Controller class for aggregators items. * * This extends the Drupal\Core\Entity\Sql\SqlContentEntityStorage class, adding * required special handling for feed item entities. */ class ItemStorage extends SqlContentEntityStorage implements ItemStorageInterface { /** * {@inheritdoc} */ public function getItemCount(FeedInterface $feed) { $query = \Drupal::entityQuery('aggregator_item') ->condition('fid', $feed->id()) ->count(); return $query->execute(); } /** * {@inheritdoc} */ public function loadAll($limit = NULL) { $query = \Drupal::entityQuery('aggregator_item'); return $this->executeFeedItemQuery($query, $limit); } /** * {@inheritdoc} */ public function loadByFeed($fid, $limit = NULL) { $query = \Drupal::entityQuery('aggregator_item') ->condition('fid', $fid); return $this->executeFeedItemQuery($query, $limit); } /** * Helper method to execute an item query. * * @param \Drupal\Core\Entity\Query\QueryInterface $query * The query to execute. * @param int $limit * (optional) The number of items to return. * * @return \Drupal\aggregator\ItemInterface[] * An array of the feed items. */ protected function executeFeedItemQuery(QueryInterface $query, $limit) { $query->sort('timestamp', 'DESC') ->sort('iid', 'DESC'); if (!empty($limit)) { $query->pager($limit); } return $this->loadMultiple($query->execute()); } }