public function DiskSpaceValidator::checkDiskSpace in Automatic Updates 8.2
Checks that there is enough free space to perform automatic updates.
Parameters
\Drupal\automatic_updates\Event\UpdateEvent $event: The update event object.
File
- src/
Validator/ DiskSpaceValidator.php, line 106
Class
- DiskSpaceValidator
- Validates that there is enough free disk space to do automatic updates.
Namespace
Drupal\automatic_updates\ValidatorCode
public function checkDiskSpace(UpdateEvent $event) : void {
$root_path = $this->pathLocator
->getProjectRoot();
$vendor_path = $this->pathLocator
->getVendorDirectory();
$messages = [];
// @todo Make this configurable.
$minimum_mb = 1024;
$minimum_bytes = Bytes::toNumber($minimum_mb . 'M');
if (!$this
->areSameLogicalDisk($root_path, $vendor_path)) {
if ($this
->freeSpace($root_path) < $minimum_bytes) {
$messages[] = $this
->t('Drupal root filesystem "@root" has insufficient space. There must be at least @space megabytes free.', [
'@root' => $root_path,
'@space' => $minimum_mb,
]);
}
if (is_dir($vendor_path) && $this
->freeSpace($vendor_path) < $minimum_bytes) {
$messages[] = $this
->t('Vendor filesystem "@vendor" has insufficient space. There must be at least @space megabytes free.', [
'@vendor' => $vendor_path,
'@space' => $minimum_mb,
]);
}
}
elseif ($this
->freeSpace($root_path) < $minimum_bytes) {
$messages[] = $this
->t('Drupal root filesystem "@root" has insufficient space. There must be at least @space megabytes free.', [
'@root' => $root_path,
'@space' => $minimum_mb,
]);
}
$temp = $this
->temporaryDirectory();
if ($this
->freeSpace($temp) < $minimum_bytes) {
$messages[] = $this
->t('Directory "@temp" has insufficient space. There must be at least @space megabytes free.', [
'@temp' => $temp,
'@space' => $minimum_mb,
]);
}
if ($messages) {
$summary = count($messages) > 1 ? $this
->t("There is not enough disk space to perform an automatic update.") : NULL;
$error = ValidationResult::createError($messages, $summary);
$event
->addValidationResult($error);
}
}