wisski-cloud-distillery/internal/wisski/ingredient/php/extras/settings.php
2023-11-02 20:06:26 +01:00

55 lines
No EOL
1.4 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) {
throw $t; // DEBUG
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)]);
}