class StockReports in Ubercart 8.4
Displays a stock report for products with stock tracking enabled.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\uc_stock\Controller\StockReports
Expanded class hierarchy of StockReports
File
- uc_stock/
src/ Controller/ StockReports.php, line 12
Namespace
Drupal\uc_stock\ControllerView source
class StockReports extends ControllerBase {
/**
* {@inheritdoc}
*/
public function report() {
//$page_size = (isset($_GET['nopage'])) ? UC_REPORT_MAX_RECORDS : variable_get('uc_report_table_size', 30);
$page_size = 30;
$csv_rows = [];
$rows = [];
$header = [
[
'data' => $this
->t('SKU'),
'field' => 'sku',
'sort' => 'asc',
],
[
'data' => $this
->t('Product'),
'field' => 'title',
],
[
'data' => $this
->t('Stock'),
'field' => 'stock',
],
[
'data' => $this
->t('Threshold'),
'field' => 'threshold',
],
[
'data' => $this
->t('Operations'),
],
];
$csv_rows[] = [
$this
->t('SKU'),
$this
->t('Product'),
$this
->t('Stock'),
$this
->t('Threshold'),
];
$query = \Drupal::database()
->select('uc_product_stock', 's')
->extend('\\Drupal\\Core\\Database\\Query\\PagerSelectExtender')
->extend('\\Drupal\\Core\\Database\\Query\\TableSortExtender')
->orderByHeader($header)
->limit($page_size)
->fields('s', [
'nid',
'sku',
'stock',
'threshold',
]);
$query
->leftJoin('node_field_data', 'n', 's.nid = n.nid');
$query
->addField('n', 'title');
$query
->condition('active', 1)
->condition('title', '', '<>');
// @todo Replace arg().
// if (arg(4) == 'threshold') {
// $query->where('threshold >= stock');
// }
$result = $query
->execute();
foreach ($result as $stock) {
$op = '';
if ($this
->currentUser()
->hasPermission('administer product stock')) {
$op = [
'#type' => 'operations',
'#links' => [
'edit' => [
'title' => $this
->t('Edit'),
'url' => Url::fromRoute('uc_stock.edit', [
'node' => $stock->nid,
], [
'query' => [
'destination' => 'admin/store/reports/stock',
],
]),
],
],
];
}
// Add the data to a table row for display.
$rows[] = [
'data' => [
[
'data' => $stock->sku,
],
[
'data' => [
'#type' => 'link',
'#title' => $stock->title,
'#url' => Url::fromRoute('entity.node.canonical', [
'node' => $stock->nid,
]),
],
],
[
'data' => $stock->stock,
],
[
'data' => $stock->threshold,
],
[
'data' => $op,
],
],
'class' => [
$stock->threshold >= $stock->stock ? 'uc-stock-below-threshold' : 'uc-stock-above-threshold',
],
];
// Add the data to the CSV contents for export.
$csv_rows[] = [
$stock->sku,
$stock->title,
$stock->stock,
$stock->threshold,
];
}
// Cache the CSV export.
$controller = new Reports();
$csv_data = $controller
->store_csv('uc_stock', $csv_rows);
$build['form'] = $this
->formBuilder()
->getForm('\\Drupal\\uc_stock\\Form\\StockReportForm');
$build['report'] = [
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
'#attributes' => [
'width' => '100%',
'class' => [
'uc-stock-table',
],
],
];
$build['pager'] = [
'#type' => 'pager',
];
$build['links'] = [
'#type' => 'container',
'#attributes' => [
'class' => [
'uc-reports-links',
],
],
];
$build['links']['export_csv'] = [
'#type' => 'link',
'#title' => $this
->t('Export to CSV file'),
'#url' => Url::fromRoute('uc_report.getcsv', [
'report_id' => $csv_data['report'],
'user_id' => $csv_data['user'],
]),
'#suffix' => ' ',
];
// if (isset($_GET['nopage'])) {
// $build['links']['toggle_pager'] = [
// '#type' => 'link',
// '#title' => $this->t('Show paged records'),
// '#url' => Url::fromRoute('uc_stock.reports'),
// ];
// }
// else {
$build['links']['toggle_pager'] = [
'#type' => 'link',
'#title' => $this
->t('Show all records'),
'#url' => Url::fromRoute('uc_stock.reports', [], [
'query' => [
'nopage' => '1',
],
]),
];
// }
return $build;
}
}
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. | |
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. | |
StockReports:: |
public | function | ||
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. |