class OverdueOverview in Library 8
Overdue overview controller.
@package Drupal\library\Controller
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\library\Controller\OverdueOverview
Expanded class hierarchy of OverdueOverview
File
- src/
Controller/ OverdueOverview.php, line 14
Namespace
Drupal\library\ControllerView source
class OverdueOverview extends ControllerBase {
/**
* List.
*
* @return string
* Return Hello string.
*/
public function listing() : string {
// @todo Inject.
$renderer = \Drupal::service('renderer');
$manager = \Drupal::entityTypeManager();
$itemStorage = $manager
->getStorage('library_item');
$transactionStorage = $manager
->getStorage('library_transaction');
$nodeStorage = $manager
->getStorage('node');
$userStorage = $manager
->getStorage('user');
$dateFormatter = \Drupal::service('date.formatter');
$data['elements'] = [
'#type' => 'table',
'#title' => $this
->t('Item history'),
'#header' => [
'Item',
'Patron',
'Due Date',
'Last comment',
'Edit',
],
];
$items = $itemStorage
->getQuery()
->condition('library_status', LibraryItem::ITEM_UNAVAILABLE)
->execute();
$loadedItems = $itemStorage
->loadMultiple($items);
foreach ($loadedItems as $item) {
/** @var \Drupal\library\Entity\LibraryItem $item */
$format_title = '';
if ($item
->get('nid')
->getValue()) {
/** @var \Drupal\node\Entity\Node $node */
$node = $nodeStorage
->load($item
->get('nid')
->getValue()[0]['target_id']);
$label = $node
->getTitle();
if ($item
->get('barcode')->value) {
$label .= ' (' . $item
->get('barcode')->value . ')';
}
$format_title = [
'#type' => 'link',
'#title' => $label,
'#url' => Url::fromRoute('entity.node.canonical', [
'node' => $node
->id(),
]),
];
$format_title = $renderer
->render($format_title);
}
$transaction = $item
->getLatestTransactionDue();
if ($transaction && count($transaction) == 1) {
/** @var \Drupal\library\Entity\LibraryTransaction $loadedTransaction */
$loadedTransaction = $transactionStorage
->load(array_pop($transaction));
$patronName = '';
if ($loadedTransaction
->get('uid')
->getValue()) {
$patron = $userStorage
->load($loadedTransaction
->get('uid')
->getValue()[0]['target_id']);
if ($patron) {
$patronName = [
'#type' => 'link',
'#title' => $patron
->getDisplayName(),
'#url' => Url::fromRoute('entity.user.canonical', [
'user' => $patron
->id(),
]),
];
$patronName = $renderer
->render($patronName);
$patronId = $patron
->id();
}
}
$due = '';
if ($loadedTransaction
->get('due_date')->value > 0) {
$due = $dateFormatter
->format($loadedTransaction
->get('due_date')->value, 'short');
}
$editLink = [
'#type' => 'link',
'#title' => $this
->t('Add note'),
'#url' => Url::fromRoute('library.edit_transaction', [
'transaction' => $loadedTransaction
->id(),
]),
];
$data['elements']['#rows'][$patronId . '_' . $item
->id()] = [
$format_title,
$patronName,
$due,
$this
->formatMarkup($loadedTransaction
->get('notes')->value),
$renderer
->render($editLink),
];
ksort($data['elements']['#rows']);
}
}
return $data;
}
/**
* Format markup.
*
* @param string $data
* Data for render array.
*
* @return string
* Formatted HTML.
*/
private function formatMarkup($data) : string {
$escaped = [
'#markup' => nl2br($data),
];
$formatted = \Drupal::service('renderer')
->render($escaped);
return $formatted;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
40 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
OverdueOverview:: |
private | function | Format markup. | |
OverdueOverview:: |
public | function | List. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |