class ItemHistory in Library 8
Item history controller.
@package Drupal\library\Controller
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\library\Controller\ItemHistory
Expanded class hierarchy of ItemHistory
File
- src/
Controller/ ItemHistory.php, line 17
Namespace
Drupal\library\ControllerView source
class ItemHistory extends ControllerBase {
/**
* Show item history.
*
* @param \Drupal\node\NodeInterface $node
* Node to process.
*
* @return array
* Returns the markup to render.
*/
public function show(NodeInterface $node) {
$output = [];
$fields = $node
->getFieldDefinitions();
/** @var \Drupal\Core\Field\FieldDefinitionInterface[] $fields */
foreach ($fields as $field) {
if ($field
->getType() == 'library_item_field_type') {
foreach ($node
->get($field
->getName())
->getValue() as $item) {
if (isset($item['target_id'])) {
$itemEntity = LibraryItem::load($item['target_id']);
if ($itemEntity) {
$output[] = $this
->showHistoryForItem($itemEntity);
}
}
}
}
}
if (empty($output)) {
$output = [
'#markup' => $this
->t('No transactions found.'),
];
}
return $output;
}
/**
* History for one item.
*
* @param \Drupal\library\Entity\LibraryItem $item
* Item to build list for.
*
* @return array
* Markup to render.
*/
private function showHistoryForItem(LibraryItem $item) {
$data['heading'] = [
'#markup' => '<h2>' . $item
->get('barcode')->value . '</h2>',
];
$data['elements'] = [
'#type' => 'table',
'#title' => $this
->t('Item history'),
'#header' => [
'Librarian',
'Patron',
'Last edited',
'Action',
'Due Date',
'Notes',
],
];
$transactions = \Drupal::entityQuery('library_transaction')
->condition('library_item', $item
->id())
->execute();
foreach ($transactions as $transaction) {
$transactionEntity = LibraryTransaction::load($transaction);
$due = '';
if ($transactionEntity
->get('due_date')->value > 0) {
$due = \Drupal::service('date.formatter')
->format($transactionEntity
->get('due_date')->value);
}
$data['elements']['#rows'][$transactionEntity
->get('id')->value] = [
'librarian' => $this
->formatUser($transactionEntity
->get('librarian_id')),
'patron' => $this
->formatUser($transactionEntity
->get('uid')),
'date' => \Drupal::service('date.formatter')
->format($transactionEntity
->get('changed')->value),
'action' => $this
->formatAction($transactionEntity
->get('action')->value, $transactionEntity
->get('legacy_state_change')->value),
'due' => $due,
'notes' => $this
->formatNotes($transactionEntity
->get('notes')->value),
];
}
if (isset($data['elements']['#rows'])) {
// Sort table by transaction date descending.
$data['elements']['#rows'] = array_reverse($data['elements']['#rows']);
}
else {
$data['elements'] = [
'#markup' => '<h3>' . $this
->t('No transactions recorded.') . '</h3>',
];
}
return $data;
}
/**
* Format notes.
*
* @param string $data
* Unescaped data.
*
* @return array
* Render array.
*/
private function formatNotes($data) {
$escaped = [
'#markup' => nl2br($data),
];
$formatted = \Drupal::service('renderer')
->render($escaped);
return $formatted;
}
/**
* Format user name.
*
* @param mixed $idField
* User to render by uid.
*
* @return string
* Render array.
*/
private function formatUser($idField) {
$name = '';
if ($idField) {
if ($idField
->getValue()) {
$user = User::load($idField
->getValue()[0]['target_id']);
if ($user) {
$name = $user
->getDisplayName();
}
}
}
return $name;
}
/**
* Format the action.
*
* @param string $action
* Action machine name.
* @param int $legacy_state_change
* Integer value for unported states.
*
* @return \Drupal\Core\StringTranslation\TranslatableMarkup|null|string
* Formatted action.
*/
private function formatAction($action, $legacy_state_change) {
$actionLabel = '';
if ($action) {
$actionEntity = LibraryAction::load($action);
if ($actionEntity) {
$actionLabel = $actionEntity
->label();
}
else {
if ($legacy_state_change == LibraryAction::CHANGE_TO_AVAILABLE) {
$actionLabel = $this
->t('Item became available');
}
elseif ($legacy_state_change == LibraryAction::CHANGE_TO_UNAVAILABLE) {
$actionLabel = $this
->t('Item became unavailable');
}
}
}
return $actionLabel;
}
}
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. | |
ItemHistory:: |
private | function | Format the action. | |
ItemHistory:: |
private | function | Format notes. | |
ItemHistory:: |
private | function | Format user name. | |
ItemHistory:: |
public | function | Show item history. | |
ItemHistory:: |
private | function | History for one item. | |
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. | |
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. |