From df29cd044be3660dd8e8622a6a1deca9b8c42d39 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Fri, 1 Jun 2018 11:31:30 +0200 Subject: [PATCH] FEAT #7731 Docservers percentage + checks --- .../controllers/DocserverController.php | 45 +++++++++++++------ .../models/DocserverModelAbstract.php | 3 +- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/app/docserver/controllers/DocserverController.php b/src/app/docserver/controllers/DocserverController.php index 07accf01cbe..e8c0b750c1f 100644 --- a/src/app/docserver/controllers/DocserverController.php +++ b/src/app/docserver/controllers/DocserverController.php @@ -34,8 +34,9 @@ class DocserverController $sortedDocservers = []; $docservers = DocserverModel::get(); - foreach ($docservers as $key => $docserver) { + foreach ($docservers as $docserver) { $docserver['actual_size_number'] = DocserverController::getDocserverSize(['path' => $docserver['path_template']]); + $docserver['percentage'] = round($docserver['actual_size_number'] / $docserver['size_limit_number'] * 100, 2); $sortedDocservers[$docserver['docserver_type_id']][] = $docserver; } @@ -125,10 +126,17 @@ class DocserverController return $response->withStatus(400)->withJson(['errors' => _PATH_OF_DOCSERVER_UNAPPROACHABLE]); } - $data['is_readonly'] = empty($data['is_readonly']) ? 'N' : 'Y'; - $data['docserver_id'] = $aArgs['id']; + $updateData = [ + 'docserver_id' => $aArgs['id'], + 'device_label' => $data['device_label'], + 'size_limit_number' => $data['size_limit_number'], + 'path_template' => $data['path_template'], + 'priority_number' => $data['priority_number'], + 'adr_priority_number' => $data['adr_priority_number'], + 'is_readonly' => empty($data['is_readonly']) ? 'N' : 'Y' + ]; - DocserverModel::update($data); + DocserverModel::update($updateData); HistoryController::add([ 'tableName' => 'docservers', 'recordId' => $aArgs['id'], @@ -436,16 +444,22 @@ class DocserverController $firstLayerDirectories = scandir($aArgs['path']); foreach ($firstLayerDirectories as $firstLayerDirectory) { if ($firstLayerDirectory != '.' && $firstLayerDirectory != '..') { - $secondLayerDirectories = scandir("{$aArgs['path']}{$firstLayerDirectory}"); - foreach ($secondLayerDirectories as $secondLayerDirectory) { - if ($secondLayerDirectory != '.' && $secondLayerDirectory != '..') { - $thirdLayerDirectories = scandir("{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}"); - foreach ($thirdLayerDirectories as $thirdLayerDirectory) { - if ($thirdLayerDirectory != '.' && $thirdLayerDirectory != '..') { - $files = scandir("{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}/{$thirdLayerDirectory}"); - foreach ($files as $file) { - if ($file != '.' && $file != '..') { - $size += filesize("{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}/{$thirdLayerDirectory}/{$file}"); + if (DocserverController::isPathAvailable(['path' => "{$aArgs['path']}{$firstLayerDirectory}"])) { + $secondLayerDirectories = scandir("{$aArgs['path']}{$firstLayerDirectory}"); + foreach ($secondLayerDirectories as $secondLayerDirectory) { + if ($secondLayerDirectory != '.' && $secondLayerDirectory != '..') { + if (DocserverController::isPathAvailable(['path' => "{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}"])) { + $thirdLayerDirectories = scandir("{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}"); + foreach ($thirdLayerDirectories as $thirdLayerDirectory) { + if ($thirdLayerDirectory != '.' && $thirdLayerDirectory != '..') { + if (DocserverController::isPathAvailable(['path' => "{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}/{$thirdLayerDirectory}"])) { + $files = scandir("{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}/{$thirdLayerDirectory}"); + foreach ($files as $file) { + if ($file != '.' && $file != '..') { + $size += filesize("{$aArgs['path']}{$firstLayerDirectory}/{$secondLayerDirectory}/{$thirdLayerDirectory}/{$file}"); + } + } + } } } } @@ -467,6 +481,9 @@ class DocserverController if (!is_dir($aArgs['path'])) { return false; } + if (!is_readable($aArgs['path'])) { + return false; + } if (!is_writable($aArgs['path'])) { return false; } diff --git a/src/app/docserver/models/DocserverModelAbstract.php b/src/app/docserver/models/DocserverModelAbstract.php index 0977b348de0..33daf7f191a 100644 --- a/src/app/docserver/models/DocserverModelAbstract.php +++ b/src/app/docserver/models/DocserverModelAbstract.php @@ -107,7 +107,8 @@ class DocserverModelAbstract 'size_limit_number' => $aArgs['size_limit_number'], 'priority_number' => $aArgs['priority_number'], 'adr_priority_number' => $aArgs['adr_priority_number'], - 'is_readonly' => $aArgs['is_readonly'] + 'is_readonly' => $aArgs['is_readonly'], + 'creation_date' => 'CURRENT_TIMESTAMP' ] ]); -- GitLab