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

@ -46,18 +46,25 @@ function makePathfield($path, $uid, $gid, $fieldType, $value = '')
if(sizeof($dirList) > 0)
{
$field = '<select name="path">';
foreach($dirList as $key => $dir)
if(sizeof(dirList) <= 100)
{
if(strpos($dir, $path) === 0)
$field = '<select name="path">';
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.= '</select>';
}
else
{
$field = $lng['panel']['toomanydirs'];
$field.= '<input type="text" name="path" value="' . htmlspecialchars($value) . '" size="30" />';
}
$field.= '</select>';
}
else
{

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