Skip to content
Snippets Groups Projects
Commit c6ed4853 authored by Erik Seifert's avatar Erik Seifert
Browse files

Fix: add possibility to select a webform

parent 6cdf35fd
No related branches found
No related tags found
No related merge requests found
......@@ -4,6 +4,7 @@ namespace Drupal\dashboards_webform\Plugin\Dashboard;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Database\Connection;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\dashboards\Plugin\DashboardBase;
use Drupal\dashboards\Plugin\Dashboard\ChartTrait;
......@@ -28,12 +29,20 @@ class Submissions extends DashboardBase {
*/
protected $database;
/**
* EntityTypeManagerInterface definition.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, CacheBackendInterface $cache_backend, Connection $database) {
public function __construct(array $configuration, $plugin_id, $plugin_definition, CacheBackendInterface $cache_backend, Connection $database, EntityTypeManagerInterface $entity_type_manager) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $cache_backend);
$this->database = $database;
$this->entityTypeManager = $entity_type_manager;
}
/**
......@@ -45,7 +54,8 @@ class Submissions extends DashboardBase {
$plugin_id,
$plugin_definition,
$container->get('dashboards.cache'),
$container->get('database')
$container->get('database'),
$container->get('entity_type.manager')
);
}
......@@ -53,6 +63,13 @@ class Submissions extends DashboardBase {
* {@inheritdoc}
*/
public function buildSettingsForm(array $form, FormStateInterface $form_state, array $configuration): array {
$webform = $this->entityTypeManager->getStorage('webform')->load($configuration['webform']);
$form['webform'] = [
'#type' => 'entity_autocomplete',
'#target_type' => 'webform',
'#selection_handler' => 'default',
'#default_value' => ($webform) ? $webform : 'null',
];
$form['period'] = [
'#type' => 'select',
'#options' => [
......@@ -88,6 +105,7 @@ class Submissions extends DashboardBase {
* {@inheritdoc}
*/
public function buildRenderArray($configuration): array {
dsm($configuration);
$field = $configuration['period'];
$cid = md5(serialize([
$configuration['period'],
......@@ -99,6 +117,9 @@ class Submissions extends DashboardBase {
$cache = FALSE;
if (!$cache) {
$query = $this->database->select('webform_submission', 'ws');
if (isset($configuration['webform'])) {
$query->condition('webform_id', $configuration['webform']);
}
switch ($configuration['date']) {
case 'yesterday':
$query->condition('ws.created', [strtotime('yesterday'), strtotime('today')], 'BETWEEN');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment