class AggregatorController
Same name in other branches
- 8.9.x core/modules/aggregator/src/Controller/AggregatorController.php \Drupal\aggregator\Controller\AggregatorController
Returns responses for aggregator module routes.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements \Drupal\Core\DependencyInjection\ContainerInjectionInterface uses \Drupal\Core\Logger\LoggerChannelTrait, \Drupal\Core\Messenger\MessengerTrait, \Drupal\Core\Routing\RedirectDestinationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait
- class \Drupal\aggregator\Controller\AggregatorController extends \Drupal\Core\Controller\ControllerBase
Expanded class hierarchy of AggregatorController
File
-
core/
modules/ aggregator/ src/ Controller/ AggregatorController.php, line 15
Namespace
Drupal\aggregator\ControllerView source
class AggregatorController extends ControllerBase {
/**
* The date formatter service.
*
* @var \Drupal\Core\Datetime\DateFormatterInterface
*/
protected $dateFormatter;
/**
* Constructs a \Drupal\aggregator\Controller\AggregatorController object.
*
* @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
* The date formatter service.
*/
public function __construct(DateFormatterInterface $date_formatter) {
$this->dateFormatter = $date_formatter;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container->get('date.formatter'));
}
/**
* Presents the aggregator feed creation form.
*
* @return array
* A form array as expected by
* \Drupal\Core\Render\RendererInterface::render().
*/
public function feedAdd() {
$feed = $this->entityTypeManager()
->getStorage('aggregator_feed')
->create();
return $this->entityFormBuilder()
->getForm($feed);
}
/**
* Builds a listing of aggregator feed items.
*
* @param \Drupal\aggregator\ItemInterface[] $items
* The items to be listed.
* @param array|string $feed_source
* The feed source URL.
*
* @return array
* The rendered list of items for the feed.
*/
protected function buildPageList(array $items, $feed_source = '') {
// Assemble output.
$build = [
'#type' => 'container',
'#attributes' => [
'class' => [
'aggregator-wrapper',
],
],
];
$build['feed_source'] = is_array($feed_source) ? $feed_source : [
'#markup' => $feed_source,
];
if ($items) {
$build['items'] = $this->entityTypeManager()
->getViewBuilder('aggregator_item')
->viewMultiple($items, 'default');
}
$build['pager'] = [
'#type' => 'pager',
];
return $build;
}
/**
* Refreshes a feed, then redirects to the overview page.
*
* @param \Drupal\aggregator\FeedInterface $aggregator_feed
* An object describing the feed to be refreshed.
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
* A redirection to the admin overview page.
*
* @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
* If the query token is missing or invalid.
*/
public function feedRefresh(FeedInterface $aggregator_feed) {
$message = $aggregator_feed->refreshItems() ? $this->t('There is new syndicated content from %site.', [
'%site' => $aggregator_feed->label(),
]) : $this->t('There is no new syndicated content from %site.', [
'%site' => $aggregator_feed->label(),
]);
$this->messenger()
->addStatus($message);
return $this->redirect('aggregator.admin_overview');
}
/**
* Displays the aggregator administration page.
*
* @return array
* A render array as expected by
* \Drupal\Core\Render\RendererInterface::render().
*/
public function adminOverview() {
$entity_type_manager = $this->entityTypeManager();
$feeds = $entity_type_manager->getStorage('aggregator_feed')
->loadMultiple();
$header = [
$this->t('Title'),
$this->t('Items'),
$this->t('Last update'),
$this->t('Next update'),
$this->t('Operations'),
];
$rows = [];
/** @var \Drupal\aggregator\FeedInterface[] $feeds */
foreach ($feeds as $feed) {
$row = [];
$row[] = $feed->toLink()
->toString();
$row[] = $this->formatPlural($entity_type_manager->getStorage('aggregator_item')
->getItemCount($feed), '1 item', '@count items');
$last_checked = $feed->getLastCheckedTime();
$refresh_rate = $feed->getRefreshRate();
$row[] = $last_checked ? $this->t('@time ago', [
'@time' => $this->dateFormatter
->formatInterval(REQUEST_TIME - $last_checked),
]) : $this->t('never');
if (!$last_checked && $refresh_rate) {
$next_update = $this->t('imminently');
}
elseif ($last_checked && $refresh_rate) {
$next_update = $this->t('%time left', [
'%time' => $this->dateFormatter
->formatInterval($last_checked + $refresh_rate - REQUEST_TIME),
]);
}
else {
$next_update = $this->t('never');
}
$row[] = $next_update;
$links['edit'] = [
'title' => $this->t('Edit'),
'url' => Url::fromRoute('entity.aggregator_feed.edit_form', [
'aggregator_feed' => $feed->id(),
]),
];
$links['delete'] = [
'title' => $this->t('Delete'),
'url' => Url::fromRoute('entity.aggregator_feed.delete_form', [
'aggregator_feed' => $feed->id(),
]),
];
$links['delete_items'] = [
'title' => $this->t('Delete items'),
'url' => Url::fromRoute('aggregator.feed_items_delete', [
'aggregator_feed' => $feed->id(),
]),
];
$links['update'] = [
'title' => $this->t('Update items'),
'url' => Url::fromRoute('aggregator.feed_refresh', [
'aggregator_feed' => $feed->id(),
]),
];
$row[] = [
'data' => [
'#type' => 'operations',
'#links' => $links,
],
];
$rows[] = $row;
}
$build['feeds'] = [
'#prefix' => '<h3>' . $this->t('Feed overview') . '</h3>',
'#type' => 'table',
'#header' => $header,
'#rows' => $rows,
'#empty' => $this->t('No feeds available. <a href=":link">Add feed</a>.', [
':link' => Url::fromRoute('aggregator.feed_add')->toString(),
]),
];
return $build;
}
/**
* Displays the most recent items gathered from any feed.
*
* @return string
* The rendered list of items for the feed.
*/
public function pageLast() {
$items = $this->entityTypeManager()
->getStorage('aggregator_item')
->loadAll(20);
$build = $this->buildPageList($items);
$build['#attached']['feed'][] = [
'aggregator/rss',
$this->config('system.site')
->get('name') . ' ' . $this->t('aggregator'),
];
$build['#cache']['tags'] = $this->entityTypeManager()
->getDefinition('aggregator_item')
->getListCacheTags();
return $build;
}
/**
* Route title callback.
*
* @param \Drupal\aggregator\FeedInterface $aggregator_feed
* The aggregator feed.
*
* @return array
* The feed label as a render array.
*/
public function feedTitle(FeedInterface $aggregator_feed) {
return [
'#markup' => $aggregator_feed->label(),
'#allowed_tags' => Xss::getHtmlTagList(),
];
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
AggregatorController::$dateFormatter | protected | property | The date formatter service. | ||
AggregatorController::adminOverview | public | function | Displays the aggregator administration page. | ||
AggregatorController::buildPageList | protected | function | Builds a listing of aggregator feed items. | ||
AggregatorController::create | public static | function | Instantiates a new instance of this class. | Overrides ControllerBase::create | |
AggregatorController::feedAdd | public | function | Presents the aggregator feed creation form. | ||
AggregatorController::feedRefresh | public | function | Refreshes a feed, then redirects to the overview page. | ||
AggregatorController::feedTitle | public | function | Route title callback. | ||
AggregatorController::pageLast | public | function | Displays the most recent items gathered from any feed. | ||
AggregatorController::__construct | public | function | Constructs a \Drupal\aggregator\Controller\AggregatorController object. | ||
ControllerBase::$configFactory | protected | property | The configuration factory. | ||
ControllerBase::$currentUser | protected | property | The current user service. | 3 | |
ControllerBase::$entityFormBuilder | protected | property | The entity form builder. | ||
ControllerBase::$entityTypeManager | protected | property | The entity type manager. | ||
ControllerBase::$formBuilder | protected | property | The form builder. | 1 | |
ControllerBase::$keyValue | protected | property | The key-value storage. | 1 | |
ControllerBase::$languageManager | protected | property | The language manager. | 1 | |
ControllerBase::$moduleHandler | protected | property | The module handler. | 1 | |
ControllerBase::$stateService | protected | property | The state service. | ||
ControllerBase::cache | protected | function | Returns the requested cache bin. | ||
ControllerBase::config | protected | function | Retrieves a configuration object. | ||
ControllerBase::container | private | function | Returns the service container. | ||
ControllerBase::currentUser | protected | function | Returns the current user. | 3 | |
ControllerBase::entityFormBuilder | protected | function | Retrieves the entity form builder. | ||
ControllerBase::entityTypeManager | protected | function | Retrieves the entity type manager. | ||
ControllerBase::formBuilder | protected | function | Returns the form builder service. | 1 | |
ControllerBase::keyValue | protected | function | Returns a key/value storage collection. | 1 | |
ControllerBase::languageManager | protected | function | Returns the language manager service. | 1 | |
ControllerBase::moduleHandler | protected | function | Returns the module handler. | 1 | |
ControllerBase::redirect | protected | function | Returns a redirect response object for the specified route. | ||
ControllerBase::state | protected | function | Returns the state storage service. | ||
LoggerChannelTrait::$loggerFactory | protected | property | The logger channel factory service. | ||
LoggerChannelTrait::getLogger | protected | function | Gets the logger for a specific channel. | ||
LoggerChannelTrait::setLoggerFactory | public | function | Injects the logger channel factory. | ||
MessengerTrait::$messenger | protected | property | The messenger. | 17 | |
MessengerTrait::messenger | public | function | Gets the messenger. | 17 | |
MessengerTrait::setMessenger | public | function | Sets the messenger. | ||
RedirectDestinationTrait::$redirectDestination | protected | property | The redirect destination service. | 1 | |
RedirectDestinationTrait::getDestinationArray | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | ||
RedirectDestinationTrait::getRedirectDestination | protected | function | Returns the redirect destination service. | ||
RedirectDestinationTrait::setRedirectDestination | public | function | Sets the redirect destination service. | ||
StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | |
StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | |
StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.