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 BadMethodCallException;
|
||||||
use Exception;
|
use Exception;
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
|
use RecursiveDirectoryIterator;
|
||||||
|
use RecursiveIteratorIterator;
|
||||||
use SilverStripe\Core\TempFolder;
|
use SilverStripe\Core\TempFolder;
|
||||||
|
use SplFileInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class checks requirements
|
* This class checks requirements
|
||||||
@ -292,8 +295,24 @@ class InstallRequirements
|
|||||||
null
|
null
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Ensure root assets dir is writable
|
||||||
$this->requireWriteable('assets', array("File permissions", "Is the assets/ directory writeable?", null));
|
$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 {
|
try {
|
||||||
$tempFolder = TempFolder::getTempFolder($this->getBaseDir());
|
$tempFolder = TempFolder::getTempFolder($this->getBaseDir());
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user