@@ -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