This commit adds a new file 'local.settings.php' to each distillery instance. This file can be used to automatically edit global distillery settings.
92 lines
No EOL
2.8 KiB
PHP
92 lines
No EOL
2.8 KiB
PHP
<?php
|
|
|
|
use \Drupal\Core\Site\Settings;
|
|
|
|
/** gets a setting from 'settings.php' */
|
|
function get_setting($name) {
|
|
return Settings::get($name);
|
|
}
|
|
|
|
/** sets a setting in 'settings.php' */
|
|
function set_setting(string $name, mixed $value): bool {
|
|
// find settings.php
|
|
$filename = DRUPAL_ROOT . "/" . \Drupal::getContainer()->getParameter("site.path") . "/settings.php";
|
|
|
|
// setup user write permissions for the file
|
|
$old = fileperms($filename);
|
|
if ($old === FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
$new = 0777; // set all permissions
|
|
if (!chmod($filename, $new)) {
|
|
return FALSE;
|
|
}
|
|
|
|
// load install.inc
|
|
if(is_file(DRUPAL_ROOT . "/internal/")) {
|
|
include_once DRUPAL_ROOT . "/internal/core/includes/install.inc";
|
|
} else {
|
|
include_once DRUPAL_ROOT . "/core/includes/install.inc";
|
|
}
|
|
|
|
// update the provided setting
|
|
$settings["settings"][$name] = (object)[
|
|
"value" => $value,
|
|
"required" => TRUE,
|
|
];
|
|
|
|
// do the rewrite
|
|
try {
|
|
drupal_rewrite_settings($settings, $filename);
|
|
} catch(Throwable $t) {
|
|
return FALSE;
|
|
}
|
|
|
|
// reset the file mode
|
|
return chmod($filename, $old);
|
|
}
|
|
|
|
/** Sets the trusted host to the specified domain */
|
|
function set_trusted_domain(string $domain): bool {
|
|
return set_setting("trusted_host_patterns", [preg_quote($domain)]);
|
|
}
|
|
|
|
/** Sets up including a settings.php file from the given path */
|
|
function install_settings_include(array $paths): bool {
|
|
// find the original filename
|
|
$filename = DRUPAL_ROOT . "/" . \Drupal::getContainer()->getParameter("site.path") . "/settings.php";
|
|
|
|
// read the original file
|
|
$original_content = file_get_contents($filename);
|
|
if ($original_content === FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
// remove any old <distillery-settings-includes>
|
|
$pattern = '/\/\/(\s*)<distillery-settings-include>(.*?)\/\/(\s*)<\/distillery-settings-include>/s';
|
|
$new_content = preg_replace($pattern, '', $originalContent);
|
|
|
|
$code = "// <distillery-settings-include>>\n//\n// DO NOT MODIFY THIS BLOCK AND KEEP IT AT THE END OF THE FILE.\n// DO NOT REMOVE CONFIG TAGS\n";
|
|
foreach ($paths as $path) {
|
|
// escape the path to be included
|
|
$the_path = "'" . addslashes($path) . "'";
|
|
// resolve it (if it isn't absolute)
|
|
if (!str_starts_with($path, '/')) {
|
|
$the_path = '$app_root . \'/\' . $site_path . \'/\' . ' . $the_path;
|
|
}
|
|
|
|
// add code to include the file if it exists
|
|
$code = $code . 'if (file_exists(' . $the_path . ')) { include_once ' . $the_path . '; }' . "\n";
|
|
}
|
|
$code = $code . "// </distillery-settings-include>\n";
|
|
|
|
// and store the settings
|
|
try {
|
|
file_put_contents($filename, $original_content . $code);
|
|
} catch(Throwable $t) {
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
} |