public function generateInternalConfig() { if (isset(CM_Config::get()->CM_Class_Abstract->typesMaxValue)) { return; } $generator = new CM_Config_Generator(); $config = new CM_Config_Node(); $config->extendWithConfig($generator->getConfigClassTypes()); $config->extendWithConfig($generator->getConfigActionVerbs()); $config->extendWithConfig(CM_Config::get()); CM_Config::set($config->export()); }
/** * @param string $filename * @param string $configJson * @param bool|null $merge */ public function setConfig($filename, $configJson, $merge = null) { $merge = (bool) $merge; $configJson = (object) CM_Util::jsonDecode($configJson); $configFile = new CM_File(DIR_ROOT . 'resources/config/' . $filename . '.php'); $config = new CM_Config_Node(); if ($merge && $configFile->exists()) { $config->extendWithFile($configFile); } $config->extendWithConfig($configJson); $configStr = $config->exportAsString('$config'); $indentation = ' '; $indent = function ($content) use($indentation) { return preg_replace('/(:?^|[\\n])/', '$1' . $indentation, $content); }; $configFile->ensureParentDirectory(); $configFile->write(join(PHP_EOL, ['<?php', '// This is autogenerated config file. You should not change it manually.', '', 'return function (CM_Config_Node $config) {', $indent($configStr), '};', ''])); $this->_getStreamOutput()->writeln('Created `' . $configFile->getPath() . '`'); }