diff --git a/lib/functions/filedir/function.findDirs.php b/lib/functions/filedir/function.findDirs.php index ecc6a84a..b24ea147 100644 --- a/lib/functions/filedir/function.findDirs.php +++ b/lib/functions/filedir/function.findDirs.php @@ -43,10 +43,20 @@ function findDirs($path, $uid, $gid) { $path = array_pop($list); $path = makeCorrectDir($path); + + if(!is_readable($path)) + { + return $_fileList; + } + $dh = opendir($path); if($dh === false) { + /* + * this should never be called because we checked + * 'is_readable' before...but we never know what might happen + */ standard_error('cannotreaddir', $path); return null; } diff --git a/lib/functions/filedir/function.makePathfield.php b/lib/functions/filedir/function.makePathfield.php index c202649f..1577b4f4 100644 --- a/lib/functions/filedir/function.makePathfield.php +++ b/lib/functions/filedir/function.makePathfield.php @@ -46,18 +46,25 @@ function makePathfield($path, $uid, $gid, $fieldType, $value = '') if(sizeof($dirList) > 0) { - $field = ''; + foreach($dirList as $key => $dir) { - $dir = makeCorrectDir(substr($dir, strlen($path))); + if(strpos($dir, $path) === 0) + { + $dir = makeCorrectDir(substr($dir, strlen($path))); + } + + $field.= makeoption($dir, $dir, $value); } - - $field.= makeoption($dir, $dir, $value); + $field.= ''; + } + else + { + $field = $lng['panel']['toomanydirs']; + $field.= ''; } - - $field.= ''; } else { diff --git a/lng/english.lng.php b/lng/english.lng.php index 4fe483f9..e440904d 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -1250,5 +1250,7 @@ $lng['success']['settingssaved'] = 'The settings have been successfully saved.'; $lng['admin']['spfsettings'] = 'Domain SPF settings'; $lng['spf']['use_spf'] = 'Activate SPF for domains?'; $lng['spf']['spf_entry'] = 'SPF entry for all domains'; +$lng['panel']['dirsmissing'] = 'The given directory could not be found.'; +$lng['panel']['toomanydirs'] = 'Too many subdirectories. Falling back to manual path-select.'; ?> diff --git a/lng/german.lng.php b/lng/german.lng.php index f0b28299..ef7a6a42 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -1230,5 +1230,7 @@ $lng['aps']['license_link'] = 'Link zur Lizenz'; $lng['admin']['spfsettings'] = 'Domain SPF Einstellungen'; $lng['spf']['use_spf'] = 'Aktiviere SPF für Domains?'; $lng['spf']['spf_entry'] = 'SPF Eintrag für alle Domains'; +$lng['panel']['dirsmissing'] = 'Das angegebene Verzeichnis konnte nicht gefunden werden.'; +$lng['panel']['toomanydirs'] = 'Zu viele Unterverzeichnisse. Weiche auf manuelle Verzeichniseingabe aus.'; ?>