Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
novicell/dds_dynamic_key_value / src / DynamicKeyValueBuilder.php
Size: Mime:
<?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;
  }

}