VisibilityChecker.php in Image Lazyloader 8
File
src/VisibilityChecker.php
View source
<?php
namespace Drupal\lazyloader;
use Drupal\Core\Condition\ConditionAccessResolverTrait;
use Drupal\Core\Condition\ConditionManager;
use Drupal\Core\Condition\ConditionPluginCollection;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
class VisibilityChecker {
use ConditionAccessResolverTrait;
protected $imageStyleStorage;
protected $conditionManager;
protected $configFactory;
public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager, ConditionManager $condition_manager) {
$this->configFactory = $config_factory;
$this->imageStyleStorage = $entity_type_manager
->getStorage('image_style');
$this->conditionManager = $condition_manager;
}
protected function getConditionList() {
return new ConditionPluginCollection($this->conditionManager, $this->configFactory
->get('lazyloader.exclude')
->get('visibility'));
}
public function isEnabled() {
$enabled = $this->configFactory
->get('lazyloader.configuration')
->get('enabled');
$conditions_apply = $this
->resolveConditions(iterator_to_array($this
->getConditionList()
->getIterator()), 'and');
return $enabled && $conditions_apply;
}
public function isValidFilename($uri) {
$excluded_files = $this->configFactory
->get('lazyloader.exclude')
->get('filenames');
$parts = explode('/', $uri);
$parts = explode('?', array_pop($parts));
$filename = array_shift($parts);
return !(bool) preg_match('/^' . $filename . '$/m', $excluded_files);
}
public function isValidImageStyle($uri) {
$excluded_styles = $this
->filterSelectedValues($this->configFactory
->get('lazyloader.exclude')
->get('image_styles'));
if (empty($excluded_styles)) {
return TRUE;
}
$styles = implode('|', array_keys($this->imageStyleStorage
->loadMultiple()));
if (!preg_match('/styles\\/[' . $styles . ']/', $uri)) {
return TRUE;
}
$excluded_styles = implode('|', $excluded_styles);
return !preg_match('/styles\\/[' . $excluded_styles . ']/', $uri);
}
protected function filterSelectedValues($values) {
foreach ((array) $values as $key => $value) {
if (!$value) {
unset($values[$key]);
}
}
return $values;
}
}