fixed dir-listing: don't error when dir is unreadable & if more than 100 dirs fall back to manual dir-selection; fixed #2

This commit is contained in:
Michael Kaufmann (d00p)
2010-01-24 15:05:21 +00:00
parent 688440d62e
commit b3f9303f87
4 changed files with 29 additions and 8 deletions

View File

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

View File

@@ -45,6 +45,8 @@ function makePathfield($path, $uid, $gid, $fieldType, $value = '')
natcasesort($dirList);
if(sizeof($dirList) > 0)
{
if(sizeof(dirList) <= 100)
{
$field = '<select name="path">';
foreach($dirList as $key => $dir)
@@ -56,10 +58,15 @@ function makePathfield($path, $uid, $gid, $fieldType, $value = '')
$field.= makeoption($dir, $dir, $value);
}
$field.= '</select>';
}
else
{
$field = $lng['panel']['toomanydirs'];
$field.= '<input type="text" name="path" value="' . htmlspecialchars($value) . '" size="30" />';
}
}
else
{
$field = $lng['panel']['dirsmissing'];
$field.= '<input type="hidden" name="path" value="/" />';

View File

@@ -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.';
?>

View File

@@ -1230,5 +1230,7 @@ $lng['aps']['license_link'] = 'Link zur Lizenz';
$lng['admin']['spfsettings'] = 'Domain SPF Einstellungen';
$lng['spf']['use_spf'] = 'Aktiviere SPF f&uuml;r Domains?';
$lng['spf']['spf_entry'] = 'SPF Eintrag f&uuml;r alle Domains';
$lng['panel']['dirsmissing'] = 'Das angegebene Verzeichnis konnte nicht gefunden werden.';
$lng['panel']['toomanydirs'] = 'Zu viele Unterverzeichnisse. Weiche auf manuelle Verzeichniseingabe aus.';
?>