Skip to content

Commit 1a8e2b3

Browse files
Reduces redundant code in SMF\Config
Signed-off-by: Jon Stovell <jonstovell@gmail.com>
1 parent e1c4bac commit 1a8e2b3

1 file changed

Lines changed: 41 additions & 44 deletions

File tree

‎Sources/Config.php‎

Lines changed: 41 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,37 +1002,40 @@ public static function set(array $settings): void
10021002
self::$boarddir = !empty($_SERVER['SCRIPT_FILENAME']) ? \dirname(realpath($_SERVER['SCRIPT_FILENAME'])) : \dirname(__DIR__);
10031003
}
10041004

1005-
if ((empty(self::$sourcedir) || !is_dir(realpath(self::$sourcedir))) && is_dir(self::$boarddir . '/Sources')) {
1006-
self::$sourcedir = self::$boarddir . '/Sources';
1007-
}
1008-
1009-
if ((empty(self::$vendordir) || !is_dir(realpath(self::$vendordir))) && is_dir(self::$boarddir . '/vendor')) {
1010-
self::$vendordir = self::$boarddir . '/vendor';
1011-
}
1012-
1013-
if ((empty(self::$packagesdir) || !is_dir(realpath(self::$packagesdir))) && is_dir(self::$boarddir . '/Packages')) {
1014-
self::$packagesdir = self::$boarddir . '/Packages';
1015-
}
1016-
1017-
if ((empty(self::$languagesdir) || !is_dir(realpath(self::$languagesdir))) && is_dir(self::$boarddir . '/Languages')) {
1018-
self::$languagesdir = self::$boarddir . '/Languages';
1005+
foreach (['sourcedir' => 'Sources', 'vendordir' => 'vendor', 'packagesdir' => 'Packages', 'languagesdir' => 'Languages'] as $var => $dir) {
1006+
if (
1007+
!is_dir(self::${$var} ?? '')
1008+
&& is_dir(self::$boarddir . DIRECTORY_SEPARATOR . $dir)
1009+
) {
1010+
self::${$var} = self::$boarddir . DIRECTORY_SEPARATOR . $dir;
1011+
}
10191012
}
10201013

10211014
// Make absolutely sure the language is legitimate.
1022-
if (empty(self::$language) || !is_dir(self::$languagesdir . '/' . self::$language)) {
1015+
if (
1016+
empty(self::$language)
1017+
|| !is_dir(self::$languagesdir . DIRECTORY_SEPARATOR . self::$language)
1018+
) {
10231019
self::$language = self::$settings_defs['language']['default'];
10241020

1025-
if (!is_dir(self::$languagesdir . '/' . self::$language)) {
1021+
if (!is_dir(self::$languagesdir . DIRECTORY_SEPARATOR . self::$language)) {
10261022
die('Language files not found.');
10271023
}
10281024
}
10291025

10301026
// Make absolutely sure the cache directory is defined and writable.
1031-
if (empty(self::$cachedir) || !is_dir(self::$cachedir) || !is_writable(self::$cachedir)) {
1032-
if (is_dir(self::$boarddir . '/cache') && is_writable(self::$boarddir . '/cache')) {
1033-
self::$cachedir = self::$boarddir . '/cache';
1027+
if (
1028+
empty(self::$cachedir)
1029+
|| !is_dir(self::$cachedir)
1030+
|| !is_writable(self::$cachedir)
1031+
) {
1032+
if (
1033+
is_dir(self::$boarddir . DIRECTORY_SEPARATOR . 'cache')
1034+
&& is_writable(self::$boarddir . DIRECTORY_SEPARATOR . 'cache')
1035+
) {
1036+
self::$cachedir = self::$boarddir . DIRECTORY_SEPARATOR . 'cache';
10341037
} else {
1035-
self::$cachedir = self::getTempDir() . '/smf_cache_' . md5(self::$boarddir);
1038+
self::$cachedir = self::getTempDir() . DIRECTORY_SEPARATOR . 'smf_cache_' . md5(self::$boarddir);
10361039
@mkdir(self::$cachedir, 0750);
10371040
}
10381041
}
@@ -1093,20 +1096,21 @@ public static function reloadModSettings(): void
10931096
Db\DatabaseApi::$db->free_result($request);
10941097

10951098
// Do a few things to protect against missing settings or settings with invalid values...
1096-
if (empty(self::$modSettings['defaultMaxTopics']) || self::$modSettings['defaultMaxTopics'] <= 0 || self::$modSettings['defaultMaxTopics'] > 999) {
1097-
self::$modSettings['defaultMaxTopics'] = 20;
1098-
}
1099-
1100-
if (empty(self::$modSettings['defaultMaxMessages']) || self::$modSettings['defaultMaxMessages'] <= 0 || self::$modSettings['defaultMaxMessages'] > 999) {
1101-
self::$modSettings['defaultMaxMessages'] = 15;
1102-
}
1103-
1104-
if (empty(self::$modSettings['defaultMaxMembers']) || self::$modSettings['defaultMaxMembers'] <= 0 || self::$modSettings['defaultMaxMembers'] > 999) {
1105-
self::$modSettings['defaultMaxMembers'] = 30;
1106-
}
1099+
$default_max_values = [
1100+
'defaultMaxTopics' => 20,
1101+
'defaultMaxMessages' => 15,
1102+
'defaultMaxMembers' => 30,
1103+
'defaultMaxListItems' => 15,
1104+
];
11071105

1108-
if (empty(self::$modSettings['defaultMaxListItems']) || self::$modSettings['defaultMaxListItems'] <= 0 || self::$modSettings['defaultMaxListItems'] > 999) {
1109-
self::$modSettings['defaultMaxListItems'] = 15;
1106+
foreach ($default_max_values as $setting => $default) {
1107+
if (
1108+
empty(self::$modSettings[$setting])
1109+
|| self::$modSettings[$setting] <= 0
1110+
|| self::$modSettings[$setting] > 999
1111+
) {
1112+
self::$modSettings[$setting] = $default;
1113+
}
11101114
}
11111115

11121116
if (!\is_array(self::$modSettings['attachmentUploadDir'])) {
@@ -1162,7 +1166,7 @@ public static function reloadModSettings(): void
11621166
self::$modSettings['cache_enable'] = Cache\CacheApi::$enable;
11631167

11641168
// Used to force browsers to download fresh CSS and JavaScript when necessary
1165-
self::$modSettings['browser_cache'] = !empty(self::$modSettings['browser_cache']) ? (int) self::$modSettings['browser_cache'] : 0;
1169+
self::$modSettings['browser_cache'] = (int) (self::$modSettings['browser_cache'] ?? 0);
11661170

11671171
// Disable image proxy if we don't have SSL enabled
11681172
if (empty(self::$modSettings['force_ssl'])) {
@@ -1283,16 +1287,9 @@ public static function updateModSettings(array $change_array, bool $update = fal
12831287
return;
12841288
}
12851289

1286-
$to_remove = [];
1287-
12881290
// Go check if there is any setting to be removed.
1289-
foreach ($change_array as $k => $v) {
1290-
if ($v === null) {
1291-
// Found some, remove them from the original array and add them to ours.
1292-
unset($change_array[$k]);
1293-
$to_remove[] = $k;
1294-
}
1295-
}
1291+
$to_remove = array_filter($change_array, fn($setting) => $setting === null);
1292+
$change_array = array_diff_key($change_array, $to_remove);
12961293

12971294
// Proceed with the deletion.
12981295
if (!empty($to_remove)) {
@@ -1310,7 +1307,7 @@ public static function updateModSettings(array $change_array, bool $update = fal
13101307
foreach ($change_array as $variable => $value) {
13111308
Db\DatabaseApi::$db->query(
13121309
'UPDATE {db_prefix}settings
1313-
SET value = {' . ($value === false || $value === true ? 'raw' : 'string') . ':value}
1310+
SET value = {' . (\is_bool($value) ? 'raw' : 'string') . ':value}
13141311
WHERE variable = {string:variable}',
13151312
[
13161313
'value' => $value === true ? 'value + 1' : ($value === false ? 'value - 1' : $value),

0 commit comments

Comments
 (0)