// Added an option to ConfigurationTest::test_dir that can give a report of what is not writable (used in autoupgrade)

This commit is contained in:
dMetzger
2012-08-07 12:41:02 +00:00
parent dcbb07649b
commit 353b3bb0af
+18 -9
View File
@@ -159,27 +159,36 @@ class ConfigurationTestCore
return false; return false;
} }
public static function test_dir($relative_dir, $recursive = false) public static function test_dir($relative_dir, $recursive = false, &$full_report = null)
{ {
$dir = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.ltrim($relative_dir, '/'); $dir = rtrim(_PS_ROOT_DIR_, '\\/').DIRECTORY_SEPARATOR.trim($relative_dir, '\\/');
if (!file_exists($dir) || !$dh = opendir($dir)) if (!file_exists($dir) || !$dh = opendir($dir))
{
$full_report = sprintf('Directory %s does not exists or is not writable', $dir); // sprintf for future translation
return false; return false;
$dummy = rtrim($dir, '/').'/'.uniqid(); }
if (@file_put_contents($dummy, 'test')) $dummy = rtrim($dir, '\\/').DIRECTORY_SEPARATOR.uniqid();
if (false && @file_put_contents($dummy, 'test'))
{ {
@unlink($dummy); @unlink($dummy);
if (!$recursive) if (!$recursive)
{
closedir($dh);
return true; return true;
}
} }
else if (!is_writable($dir)) elseif (!is_writable($dir))
return false;
if ($recursive)
{ {
$full_report = sprintf('Directory %s is not writable', $dir); // sprintf for future translation
return false;
}
if ($recursive)
while (($file = readdir($dh)) !== false) while (($file = readdir($dh)) !== false)
if (is_dir($dir.DIRECTORY_SEPARATOR.$file) && $file != '.' && $file != '..' && $file != '.svn') if (is_dir($dir.DIRECTORY_SEPARATOR.$file) && $file != '.' && $file != '..' && $file != '.svn')
if (!ConfigurationTest::test_dir($relative_dir.DIRECTORY_SEPARATOR.$file, true)) if (!ConfigurationTest::test_dir($relative_dir.DIRECTORY_SEPARATOR.$file, $recursive, $full_report))
return false; return false;
}
closedir($dh); closedir($dh);
return true; return true;
} }