mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
Merge pull request #7601 from open-sausages/pulls/4.0/ensure-assets-writable
ENHANCEMENT Ensure that non-writable assets files are notified during install
This commit is contained in:
commit
e78fe401e6
@ -5,7 +5,10 @@ namespace SilverStripe\Dev\Install;
|
||||
use BadMethodCallException;
|
||||
use Exception;
|
||||
use InvalidArgumentException;
|
||||
use RecursiveDirectoryIterator;
|
||||
use RecursiveIteratorIterator;
|
||||
use SilverStripe\Core\TempFolder;
|
||||
use SplFileInfo;
|
||||
|
||||
/**
|
||||
* This class checks requirements
|
||||
@ -292,8 +295,24 @@ class InstallRequirements
|
||||
null
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
// Ensure root assets dir is writable
|
||||
$this->requireWriteable('assets', array("File permissions", "Is the assets/ directory writeable?", null));
|
||||
|
||||
// Ensure all assets files are writable
|
||||
$assetsDir = $this->getBaseDir() . 'assets';
|
||||
$innerIterator = new RecursiveDirectoryIterator($assetsDir, RecursiveDirectoryIterator::SKIP_DOTS);
|
||||
$iterator = new RecursiveIteratorIterator($innerIterator, RecursiveIteratorIterator::SELF_FIRST);
|
||||
/** @var SplFileInfo $file */
|
||||
foreach ($iterator as $file) {
|
||||
$relativePath = substr($file->getPathname(), strlen($this->getBaseDir()));
|
||||
$message = $file->isDir()
|
||||
? "Is the {$relativePath} directory writeable?"
|
||||
: "Is the {$relativePath} file writeable?";
|
||||
$this->requireWriteable($relativePath, array("File permissions", $message, null));
|
||||
}
|
||||
|
||||
try {
|
||||
$tempFolder = TempFolder::getTempFolder($this->getBaseDir());
|
||||
} catch (Exception $e) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user