/** * Adds single configuration item object to build config * * @param string $hook Hook ID * @param string $env Environment ID * @param string $section_name Configuraton section * @param ConfigItem $config_obj Configuraton item object * @return void */ protected function addConfigItem($hook, $env, $section_name, ConfigItem $config_obj) { // Getting the correct configuration id $id = $hook == 'presets' ? $config_obj->getId() : $config_obj->getUniqueId(); // Define path for config item $path = "{$hook}.{$env}.{$section_name}.{$id}"; // Check if we have a previous configuration $prev_config_obj = $this->config->get($path); // Merge new configuration with existing one if ($prev_config_obj) { $config_obj = $prev_config_obj->merge($config_obj); } // Add config item to its correct path $this->config->set($path, $config_obj); // Handle configuration item requirements if ($hook != 'presets' && ($requirements_config = $config_obj->getRequirements())) { $this->processHookEnvConfig($hook, $env, $requirements_config); } }