9797$ txt ['tasksdir ' ] = 'Tasks Directory ' ;
9898$ txt ['packagesdir ' ] = 'Packages Directory ' ;
9999$ txt ['export_dir ' ] = 'Exports Directory ' ;
100+ $ txt ['attachment_basedirectories ' ] = 'Attachment Basedirectory ' ;
100101$ txt ['attachmentUploadDir ' ] = 'Attachment Directory ' ;
101102$ txt ['avatar_url ' ] = 'Avatar URL ' ;
102103$ txt ['avatar_directory ' ] = 'Avatar Directory ' ;
@@ -532,6 +533,7 @@ function show_settings()
532533 'tasksdir ' => array ('flat ' , 'string ' ),
533534 'packagesdir ' => array ('flat ' , 'string ' ),
534535 'export_dir ' => array ('db ' , 'string ' ),
536+ 'attachment_basedirectories ' => array ('db ' , 'array_string ' ),
535537 'attachmentUploadDir ' => array ('db ' , 'array_string ' ),
536538 'avatar_url ' => array ('db ' , 'string ' ),
537539 'avatar_directory ' => array ('db ' , 'string ' ),
@@ -549,13 +551,20 @@ function show_settings()
549551 'theme_path_url_settings ' => array (),
550552 );
551553
554+ // These settings are optional and won't be shown if the don't exist
555+ $ optional_settings = array (
556+ 'path_url_settings ' => array (
557+ 'attachment_basedirectories '
558+ )
559+ );
560+
552561 // 1.x didn't have ssi_x, nor cachedir
553562 if ($ context ['is_legacy ' ])
554563 unset($ known_settings ['database_settings ' ]['ssi_db_user ' ], $ known_settings ['database_settings ' ]['ssi_db_passwd ' ], $ known_settings ['cache_settings ' ]['cachedir ' ], $ known_settings ['path_url_settings ' ]['custom_avatar_url ' ], $ known_settings ['path_url_settings ' ]['custom_avatar_dir ' ]);
555564
556565 // These settings didn't exist in 2.0 or 1.1
557566 if ($ context ['smfVersion ' ] == '2.0 ' || $ context ['smfVersion ' ] == '1.1 ' )
558- unset($ known_settings ['cache_settings ' ]['cache_accelerator ' ], $ known_settings ['cache_settings ' ]['cache_enable ' ], $ known_settings ['cache_settings ' ]['cache_memcached ' ], $ known_settings ['path_url_settings ' ]['tasksdir ' ], $ known_settings ['path_url_settings ' ]['export_dir ' ], $ known_settings ['path_url_settings ' ]['packagesdir ' ]);
567+ unset($ known_settings ['cache_settings ' ]['cache_accelerator ' ], $ known_settings ['cache_settings ' ]['cache_enable ' ], $ known_settings ['cache_settings ' ]['cache_memcached ' ], $ known_settings ['path_url_settings ' ]['tasksdir ' ], $ known_settings ['path_url_settings ' ]['export_dir ' ], $ known_settings ['path_url_settings ' ]['packagesdir ' ], $ known_settings [ ' path_url_settings ' ][ ' attachment_basedirectories ' ] );
559568
560569 // Let's assume we don't want to change the current theme
561570 $ settings ['theme_default ' ] = 0 ;
@@ -729,6 +738,9 @@ function restoreAll()
729738
730739 foreach ($ section as $ setting => $ info )
731740 {
741+ if (!array_key_exists ($ setting , $ settings ) && isset ($ optional_settings [$ settings_section ]) && in_array ($ setting , $ optional_settings [$ settings_section ]))
742+ continue ;
743+
732744 if ($ info [0 ] == 'hidden ' )
733745 continue ;
734746
@@ -969,6 +981,7 @@ function set_settings()
969981 $ theme_updates = isset ($ _POST ['themesettings ' ]) ? $ _POST ['themesettings ' ] : array ();
970982 $ file_updates = isset ($ _POST ['flatsettings ' ]) ? $ _POST ['flatsettings ' ] : array ();
971983 $ attach_dirs = array ();
984+ $ attach_base_dirs = array ();
972985
973986 if (empty ($ db_updates ['theme_default ' ]))
974987 unset($ db_updates ['theme_default ' ]);
@@ -1068,6 +1081,12 @@ function set_settings()
10681081 $ attach_dirs [$ index ] = $ value [1 ];
10691082 unset($ setString [$ key ]);
10701083 }
1084+ elseif (strpos ($ value [0 ], 'attachment_basedirectories ' ) == 0 && strpos ($ value [0 ], 'attachment_basedirectories ' ) !== false )
1085+ {
1086+ $ index = substr ($ value [0 ], strlen ('attachment_basedirectories_ ' ));
1087+ $ attach_base_dirs [$ index ] = $ value [1 ];
1088+ unset($ setString [$ key ]);
1089+ }
10711090 }
10721091
10731092 // Build the update string for attachment dirs
@@ -1077,6 +1096,8 @@ function set_settings()
10771096 if ($ context ['smfVersion ' ] == '2.1 ' )
10781097 {
10791098 $ setString [] = array ('attachmentUploadDir ' , json_encode ($ attach_dirs ));
1099+ if (!empty ($ attach_base_dirs ))
1100+ $ setString [] = array ('attachment_basedirectories ' , json_encode ($ attach_base_dirs ));
10801101 }
10811102 // Only one dir...or maybe nothing at all
10821103 elseif (count ($ attach_dirs ) > 1 )
0 commit comments