Repository URL to install this package:
|
Version:
1.1.2 ▾
|
<?php
namespace Drupal\dds_dynamic_key_value;
use Drupal\Component\Discovery\YamlDiscovery;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Extension\ThemeHandlerInterface;
class DynamicKeyValueBuilder {
/**
* @var \Drupal\Core\Extension\ModuleHandlerInterface
*/
private $moduleHandler;
/**
* @var \Drupal\Core\Extension\ThemeHandlerInterface
*/
private $themeHandler;
/**
* @var \Drupal\dds_maps\DynamicKeyValueStorage
*/
private $configStorage;
/**
* YamlConfigBuilder constructor.
*
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* @param \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler
* @param \Drupal\dds_maps\DynamicKeyValueStorage $configStorage
*/
public function __construct(ModuleHandlerInterface $module_handler, ThemeHandlerInterface $theme_handler, DynamicKeyValueStorage $configStorage) {
$this->moduleHandler = $module_handler;
$this->themeHandler = $theme_handler;
$this->configStorage = $configStorage;
}
/**
* Get the definitions
* @return mixed
*/
public function rebuild() {
$keyValueDefinitionsDefinitions = $this->getKeyValueDefinitions();
$config_definitions = reset($keyValueDefinitionsDefinitions);
if(!empty($config_definitions)) {
$this->configStorage->save($config_definitions);
}
}
public function getKeyValueDefinitions() {
// Always instantiate a new YamlDiscovery object so that we always search on
// the up-to-date list of modules.
$directories = array_merge($this->moduleHandler->getModuleDirectories(), $this->themeHandler->getThemeDirectories());
$discovery = new YamlDiscovery('key_value', $directories);
$discoveries = $discovery->findAll();
return $discoveries;
}
}