class CookiesKnockOutService in COOKiES Consent Management 1.0.x
Class KnockOutService.
Auxiliary class for bridge modules to decide whether a third-party plugin should be knocked out or not. Includes singleton design pattern.
Hierarchy
- class \Drupal\cookies\CookiesKnockOutService
Expanded class hierarchy of CookiesKnockOutService
9 files declare their use of CookiesKnockOutService
- cookies_facebook_pixel.module in modules/
cookies_facebook_pixel/ cookies_facebook_pixel.module - Contains cookies_facebook_pixel.module.
- cookies_ga.module in modules/
cookies_ga/ cookies_ga.module - Contains cookies_ga.module.
- cookies_gtag.module in modules/
cookies_gtag/ cookies_gtag.module - Contains cookies_ga.module.
- cookies_instagram.module in modules/
cookies_instagram/ cookies_instagram.module - Contains cookies_instagram.module.
- cookies_ivw.module in modules/
cookies_ivw/ cookies_ivw.module - Contains cookies_ivw.module.
File
- src/
CookiesKnockOutService.php, line 16
Namespace
Drupal\cookiesView source
class CookiesKnockOutService {
/**
* A COOKiES UI block is accessible on for user.
*
* @var bool
*/
protected $cookiesUiAccessible;
/**
* Current theme definition.
*
* @var string
*/
protected $theme;
/**
* Drupal\Core\Entity\EntityTypeManagerInterface definition.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* Cookies ui block instance.
*
* @var \Drupal\block\BlockInterface
*/
protected $cookiesUiBlock;
/**
* Instances of self.
*
* @var self[]
*/
private static $instances = [];
/**
* Returns instance, if instance does not exist then creates new one.
*
* @return $this
*/
public static function getInstance() {
$self = get_called_class();
if (!isset(self::$instances[$self])) {
$container = \Drupal::getContainer();
$entity_type_manager = $container
->get('entity_type.manager');
$theme_manager = $container
->get('theme.manager');
self::$instances[$self] = new $self($entity_type_manager, $theme_manager);
}
return self::$instances[$self];
}
/**
* Helper to find out if object has instance.
*
* @return bool
* true if has instance, otherwise false.
*/
protected static function hasInstance() {
$self = get_called_class();
return isset(self::$instances[$self]);
}
/**
* KnockOutService constructor.
*
* @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
* The Drupal EntityTypeManager.
* @param \Drupal\Core\Theme\ThemeManagerInterface $theme_manager
* The Drupal ThemeManager.
*/
public function __construct(EntityTypeManagerInterface $entity_type_manager, ThemeManagerInterface $theme_manager) {
$this->entityTypeManager = $entity_type_manager;
$this->theme = $theme_manager
->getActiveTheme()
->getName();
}
/**
* Returns the block instance of the COOKiES UI.
*
* @return \Drupal\block\BlockInterface|\Drupal\Core\Entity\EntityInterface
* Drupal block instance.
*
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
protected function getCookiesUiBlock() {
if (!$this->cookiesUiBlock) {
$cookies_ui_blocks = $this->entityTypeManager
->getStorage('block')
->loadByProperties([
'plugin' => 'cookies_ui_block',
'theme' => $this->theme,
]);
$this->cookiesUiBlock = reset($cookies_ui_blocks);
}
return $this->cookiesUiBlock;
}
/**
* Return if cookies ui block is accessible.
*
* @return bool
* True if cookies ui block is accessible, false if not.
*/
protected function isCookiesUiAccessible() {
if (!isset($this->cookiesUiAccessible)) {
$cookies_ui_block = $this
->getCookiesUiBlock();
if ($cookies_ui_block instanceof BlockInterface) {
$access = $cookies_ui_block
->access('view', NULL, TRUE);
$this->cookiesUiAccessible = $access
->isAllowed();
}
else {
$this->cookiesUiAccessible = FALSE;
}
}
return $this->cookiesUiAccessible;
}
/**
* Return if for this page the cookies logic should be knocked out.
*
* @return bool
* True if cookie logic should be knocked out, false if not.
*/
public function doKnockOut() {
return $this
->isCookiesUiAccessible();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CookiesKnockOutService:: |
protected | property | A COOKiES UI block is accessible on for user. | |
CookiesKnockOutService:: |
protected | property | Cookies ui block instance. | |
CookiesKnockOutService:: |
protected | property | Drupal\Core\Entity\EntityTypeManagerInterface definition. | |
CookiesKnockOutService:: |
private static | property | Instances of self. | |
CookiesKnockOutService:: |
protected | property | Current theme definition. | |
CookiesKnockOutService:: |
public | function | Return if for this page the cookies logic should be knocked out. | |
CookiesKnockOutService:: |
protected | function | Returns the block instance of the COOKiES UI. | |
CookiesKnockOutService:: |
public static | function | Returns instance, if instance does not exist then creates new one. | |
CookiesKnockOutService:: |
protected static | function | Helper to find out if object has instance. | |
CookiesKnockOutService:: |
protected | function | Return if cookies ui block is accessible. | |
CookiesKnockOutService:: |
public | function | KnockOutService constructor. |