Skip to content
Snippets Groups Projects
Commit b9c0a484 authored by Viktor Holovachek's avatar Viktor Holovachek
Browse files

Resolve #3419962 "Phpstan"

parent 035f0ae0
No related branches found
No related tags found
1 merge request!9Resolve #3419962 "Phpstan"
Pipeline #95613 passed
......@@ -141,6 +141,7 @@ class ViewsJsonFilter extends FilterPluginBase {
// not rendered, we can't render dependencies; instead we only
// render the form items we need.
$which = 'all';
$source = '';
if (!empty($form['operator'])) {
$source = ':input[name="options[operator]"]';
}
......
......@@ -7,10 +7,13 @@ use Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Utility\Token;
use Drupal\views\Plugin\views\query\QueryPluginBase;
use Drupal\views\ResultRow;
use Drupal\views\ViewExecutable;
use Drupal\views_json_source\Event\PreCacheEvent;
use GuzzleHttp\ClientInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
......@@ -59,6 +62,27 @@ class ViewsJsonQuery extends QueryPluginBase {
*/
protected $eventDispatcher;
/**
* The HTTP client.
*
* @var \GuzzleHttp\Client
*/
protected $httpClient;
/**
* Token service.
*
* @var \Drupal\Core\Utility\Token
*/
protected $token;
/**
* The messenger.
*
* @var \Drupal\Core\Messenger\MessengerInterface
*/
protected $messenger;
/**
* To store the url filter info.
*
......@@ -100,13 +124,16 @@ class ViewsJsonQuery extends QueryPluginBase {
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config, CacheBackendInterface $cache, TimeInterface $time, ContainerAwareEventDispatcher $event_dispatcher) {
public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $config, CacheBackendInterface $cache, TimeInterface $time, ContainerAwareEventDispatcher $event_dispatcher, ClientInterface $http_client, Token $token, MessengerInterface $messenger) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->config = $config;
$this->cache = $cache;
$this->time = $time;
$this->eventDispatcher = $event_dispatcher;
$this->httpClient = $http_client;
$this->token = $token;
$this->messenger = $messenger;
}
/**
......@@ -120,7 +147,10 @@ class ViewsJsonQuery extends QueryPluginBase {
$container->get('config.factory'),
$container->get('cache.default'),
$container->get('datetime.time'),
$container->get('event_dispatcher')
$container->get('event_dispatcher'),
$container->get('http_client'),
$container->get('token'),
$container->get('messenger')
);
}
......@@ -179,7 +209,7 @@ class ViewsJsonQuery extends QueryPluginBase {
? json_decode($this->options['headers'], TRUE) ?? []
: [];
$result = \Drupal::httpClient()->get($uri, ['headers' => $headers]);
$result = $this->getRequestResponse($uri, $headers);
if (isset($result->error)) {
$args = ['%error' => $result->error, '%uri' => $uri];
$message = $this->t('HTTP response: %error. URI: %uri', $args);
......@@ -190,7 +220,7 @@ class ViewsJsonQuery extends QueryPluginBase {
$config = $this->config->get('views_json_source.settings');
$cache_duration = $config->get('cache_ttl');
$json_content = (string) $result->getBody();
$cache_ttl = \Drupal::time()->getRequestTime() + $cache_duration;
$cache_ttl = $this->time->getRequestTime() + $cache_duration;
// Dispatch event before caching json_content.
$event = new PreCacheEvent($this->view, $json_content);
......@@ -226,7 +256,7 @@ class ViewsJsonQuery extends QueryPluginBase {
$url = $this->options['json_file'];
// Replace any Drupal tokens in the url EG: [site:url].
$url = \Drupal::token()->replace($url);
$url = $this->token->replace($url);
while ($param = $this->getUrlParam()) {
$url = preg_replace('/' . preg_quote('%', '/') . '/', $param, $url, 1);
......@@ -234,14 +264,14 @@ class ViewsJsonQuery extends QueryPluginBase {
$data->contents = $this->fetchFile($url);
}
catch (\Exception $e) {
\Drupal::messenger()->addMessage($e->getMessage(), 'error');
$this->messenger->addMessage($e->getMessage(), 'error');
return;
}
// When content is empty, parsing it is pointless.
if (!$data->contents) {
if ($this->options['show_errors']) {
\Drupal::messenger()->addMessage($this->t('Views JSON Backend: File is empty.'), 'warning');
$this->messenger->addMessage($this->t('Views JSON Backend: File is empty.'), 'warning');
}
return;
}
......@@ -267,10 +297,10 @@ class ViewsJsonQuery extends QueryPluginBase {
$this->t('Malformed UTF-8 characters, possibly incorrectly encoded'),
];
$msg = $tmp[json_last_error()] . ' - ' . $this->options['json_file'];
\Drupal::messenger()->addMessage($msg, 'error');
$this->messenger->addMessage($msg, 'error');
}
else {
\Drupal::messenger()->addMessage($this->t(
$this->messenger->addMessage($this->t(
'Views JSON Backend: Parse error') .
' - ' . $this->options['json_file'], 'error'
);
......@@ -466,11 +496,11 @@ class ViewsJsonQuery extends QueryPluginBase {
catch (\Exception $e) {
$view->result = [];
if (!empty($view->live_preview)) {
\Drupal::messenger()->addMessage(time());
\Drupal::messenger()->addMessage($e->getMessage(), 'error');
$this->messenger->addMessage(time());
$this->messenger->addMessage($e->getMessage(), 'error');
}
else {
\Drupal::messenger()->addMessage($e->getMessage());
$this->messenger->addMessage($e->getMessage());
}
}
}
......@@ -681,4 +711,19 @@ class ViewsJsonQuery extends QueryPluginBase {
return $filter;
}
/**
* Get request result.
*
* @param string $uri
* The request uri.
* @param array $headers
* The request headers.
*
* @return \Psr\Http\Message\ResponseInterface
* The request response.
*/
private function getRequestResponse(string $uri, array $headers = []) {
return $this->httpClient->get($uri, ['headers' => $headers]);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment