Commit b2899660 authored by Théo GUILLON's avatar Théo GUILLON
Browse files

Correction : des chemins d'enregistrement

Correction : enregistrement d'une norme
Correction : enregistrement emplacement sur le disque des nouveaux fichiers
Correction : suppression fichier
Ajout : restriction des formats de fichier
parent eb10cc70
...@@ -339,8 +339,6 @@ class FichesController extends AppController ...@@ -339,8 +339,6 @@ class FichesController extends AppController
$this->redirect($this->Referers->get()); $this->redirect($this->Referers->get());
} }
debug($formulaire_id);
$success = true; $success = true;
$this->Fiche->begin(); $this->Fiche->begin();
......
...@@ -224,6 +224,7 @@ class NormesController extends AppController { ...@@ -224,6 +224,7 @@ class NormesController extends AppController {
} }
$success = true; $success = true;
$errorMessage = __d('norme', 'norme.flasherrorErreurEnregistrementNorme');
$this->Norme->begin(); $this->Norme->begin();
$this->Norme->id = $id; $this->Norme->id = $id;
...@@ -244,6 +245,11 @@ class NormesController extends AppController { ...@@ -244,6 +245,11 @@ class NormesController extends AppController {
if (!empty($this->request->data['Norme']['fichier']['type'])) { if (!empty($this->request->data['Norme']['fichier']['type'])) {
$success = $success && $this->Norme->saveFile($this->request->data, $this->request->data['Norme']['id']); $success = $success && $this->Norme->saveFile($this->request->data, $this->request->data['Norme']['id']);
if ($success === false) {
$this->request->data['Norme']['fichier'] = null;
$errorMessage = __d('norme', 'norme.flasherrorExtensionNonValide');
}
} }
if ($success == true) { if ($success == true) {
...@@ -253,7 +259,7 @@ class NormesController extends AppController { ...@@ -253,7 +259,7 @@ class NormesController extends AppController {
$this->redirect($this->Referers->get()); $this->redirect($this->Referers->get());
} else { } else {
$this->Norme->rollback(); $this->Norme->rollback();
$this->Session->setFlash(__d('norme', 'norme.flasherrorErreurEnregistrementNorme'), 'flasherror'); $this->Session->setFlash($errorMessage, 'flasherror');
} }
} else { } else {
...@@ -319,7 +325,10 @@ class NormesController extends AppController { ...@@ -319,7 +325,10 @@ class NormesController extends AppController {
public function download($urlFichier, $nameFichier) { public function download($urlFichier, $nameFichier) {
$path = CHEMIN_NORMES . $urlFichier; $path = CHEMIN_NORMES . $urlFichier;
if (file_exists($path) === false) { if (file_exists($path) === false) {
throw new NotFoundException(); $path = CHEMIN_FICHIER . NORMES . DS . $urlFichier;
if (file_exists($path) === false) {
throw new NotFoundException();
}
} }
$this->response->file($path, ['download' => true, 'name' => $nameFichier]); $this->response->file($path, ['download' => true, 'name' => $nameFichier]);
...@@ -340,18 +349,27 @@ class NormesController extends AppController { ...@@ -340,18 +349,27 @@ class NormesController extends AppController {
*/ */
public function deleteFileSave($id, $urlFile) { public function deleteFileSave($id, $urlFile) {
$this->autoRender = false; $this->autoRender = false;
$success = true;
$this->Norme->begin(); $this->Norme->begin();
$cheminFile = CHEMIN_NORMES . $urlFile;
$this->Norme->id = $id;
$record = [ $record = [
'id' => $id,
'fichier' => null, 'fichier' => null,
'name_fichier' => null 'name_fichier' => null
]; ];
$success = $this->Norme->save($record, ['atomic' => false]) !== false $success = false !== $this->Norme->save($record, ['atomic' => false]) && $success;
&& unlink($cheminFile) === true;
if ($success === true) {
$cheminFile = CHEMIN_NORMES . $urlFile;
if (file_exists($cheminFile) === false) {
$cheminFile = CHEMIN_FICHIER . NORMES . DS . $urlFile;
}
$success = $success && unlink($cheminFile);
}
if ($success == true) { if ($success == true) {
$this->Norme->commit(); $this->Norme->commit();
...@@ -360,6 +378,7 @@ class NormesController extends AppController { ...@@ -360,6 +378,7 @@ class NormesController extends AppController {
$this->Norme->rollback(); $this->Norme->rollback();
$this->Session->setFlash(__d('norme', 'norme.flasherrorFichierSupprimer'), 'flasherror'); $this->Session->setFlash(__d('norme', 'norme.flasherrorFichierSupprimer'), 'flasherror');
} }
$this->redirect($this->Referers->get()); $this->redirect($this->Referers->get());
} }
} }
...@@ -251,16 +251,17 @@ function create_arborescence_files($user_id = null) ...@@ -251,16 +251,17 @@ function create_arborescence_files($user_id = null)
{ {
$paths = [ $paths = [
CHEMIN_FICHIER, CHEMIN_FICHIER,
CHEMIN_FICHIER . REGISTRE, CHEMIN_REGISTRE,
CHEMIN_FICHIER . MODELES, CHEMIN_MODELES,
CHEMIN_FICHIER . MODELES . EXTRAIT_REGISTRE, CHEMIN_MODELES_EXTRAIT,
CHEMIN_MODELES_PRESENTATIONS, CHEMIN_MODELES_PRESENTATIONS,
CHEMIN_FICHIER . PIECE_JOINT, CHEMIN_PIECE_JOINT,
CHEMIN_FICHIER . PIECE_JOINT . PIECE_JOINT_TMP, CHEMIN_PIECE_JOINT_TMP,
CHEMIN_FICHIER . PIECE_JOINT . PIECE_JOINT_CONVERSION, CHEMIN_PIECE_JOINT_CONVERSION,
CHEMIN_FICHIER . NORMES, CHEMIN_FICHIER . NORMES,
CHEMIN_FICHIER . EXPORTS, CHEMIN_EXPORTS,
CHEMIN_FICHIER . CONNECTEURS, CHEMIN_CONNECTEURS,
CHEMIN_CONNECTEURS_AUTHENTIFICATION,
CHEMIN_PIECE_JOINT_ARTICLE, CHEMIN_PIECE_JOINT_ARTICLE,
CHEMIN_PIECE_JOINT_ARTICLE_TMP, CHEMIN_PIECE_JOINT_ARTICLE_TMP,
CHEMIN_LOGOS, CHEMIN_LOGOS,
......
...@@ -62,6 +62,8 @@ msgstr "Une erreur s'est produite lors de la révocation de l'abrogation de la n ...@@ -62,6 +62,8 @@ msgstr "Une erreur s'est produite lors de la révocation de l'abrogation de la n
msgid "norme.flasherrorFichierSupprimer" msgid "norme.flasherrorFichierSupprimer"
msgstr "Une erreur s'est produite lors de la suppression du fichier associé à la norme" msgstr "Une erreur s'est produite lors de la suppression du fichier associé à la norme"
msgid "norme.flasherrorExtensionNonValide"
msgstr "L'extension de votre fichier n'est pas accepter, il faut un fichier en .pdf"
################ ################
############################################################################### ###############################################################################
......
...@@ -233,7 +233,8 @@ class Fichier extends AppModel { ...@@ -233,7 +233,8 @@ class Fichier extends AppModel {
*/ */
public function deleteFichier($id, $transaction = false) { public function deleteFichier($id, $transaction = false) {
$success = true; $success = true;
if($transaction == true) {
if ($transaction == true) {
$this->begin(); $this->begin();
} }
......
...@@ -77,46 +77,44 @@ class Norme extends AppModel { ...@@ -77,46 +77,44 @@ class Norme extends AppModel {
} }
public function saveFile($data, $id) { public function saveFile($data, $id) {
$success = false; $success = true;
$accepted = ['application/pdf'];
if (isset($data['Norme']['fichier']) && !empty($data['Norme']['fichier'])) { if (isset($data['Norme']['fichier']) && !empty($data['Norme']['fichier'])) {
$file = $data['Norme']['fichier']; $mime = mime_content_type($data['Norme']['fichier']['tmp_name']);
$success = true;
if ($file['type'] == 'application/pdf') { if (in_array($mime, $accepted) === true) {
if (!empty($file['name'])) { $file = $data['Norme']['fichier'];
$extension = '.pdf'; $nameFile = $file['name'];
// On verifie si le dossier file existe. Si c'est pas le cas on le cree // On verifie si le dossier file existe. Si c'est pas le cas on le cree
create_arborescence_files(); $success = $success && create_arborescence_files();
if (!empty($file['tmp_name'])) { if (!empty($nameFile) && $success === true) {
$url = time(); $extension = pathinfo($nameFile, PATHINFO_EXTENSION);
$nameFile = $url . $extension; $url = time();
$urlFile = $url . '.' . $extension;
$success = $success && move_uploaded_file($file['tmp_name'], CHEMIN_NORMES . $nameFile);
$success = $success && move_uploaded_file($file['tmp_name'], CHEMIN_FICHIER . NORMES . DS . $urlFile);
if ($success === true) {
$this->id = $id; if ($success === true) {
$record = [ $this->id = $id;
'fichier' => $url . $extension, $record = [
'name_fichier' => $file['name'] 'fichier' => $urlFile,
]; 'name_fichier' => $nameFile
$success = $success && $this->save($record, ['atomic' => false]) !== false; ];
} $success = $success && $this->save($record, ['atomic' => false]) !== false;
} else {
$success = false;
} }
} else { } else {
$success = false; $success = false;
} }
return ($success);
} else { } else {
$success = false; $success = false;
} }
} else {
$success = false;
} }
return ($success); return $success;
} }
} }
...@@ -152,6 +152,7 @@ ...@@ -152,6 +152,7 @@
'div' => 'input-group inputsForm', 'div' => 'input-group inputsForm',
'type' => 'file', 'type' => 'file',
'class' => 'filestyle', 'class' => 'filestyle',
'accept' => 'application/vnd.oasis.opendocument.text',
'label' => [ 'label' => [
'text' => __d('modele', 'modele.popupChampModele'), 'text' => __d('modele', 'modele.popupChampModele'),
'class' => 'col-md-4 control-label' 'class' => 'col-md-4 control-label'
......
...@@ -152,6 +152,7 @@ ...@@ -152,6 +152,7 @@
'div' => 'input-group inputsForm', 'div' => 'input-group inputsForm',
'type' => 'file', 'type' => 'file',
'class' => 'filestyle', 'class' => 'filestyle',
'accept' => 'application/vnd.oasis.opendocument.text',
'label' => [ 'label' => [
'text' => __d('modele_presentation', 'modele_presentation.popupChampModele'), 'text' => __d('modele_presentation', 'modele_presentation.popupChampModele'),
'class' => 'col-md-4 control-label' 'class' => 'col-md-4 control-label'
......
...@@ -159,6 +159,7 @@ if (!empty($modeles)) { ...@@ -159,6 +159,7 @@ if (!empty($modeles)) {
'div' => 'input-group inputsForm', 'div' => 'input-group inputsForm',
'type' => 'file', 'type' => 'file',
'class' => 'filestyle', 'class' => 'filestyle',
'accept' => 'application/vnd.oasis.opendocument.text',
'label' => [ 'label' => [
'text' => __d('modele', 'modele.popupChampModele'), 'text' => __d('modele', 'modele.popupChampModele'),
'class' => 'col-md-4 control-label' 'class' => 'col-md-4 control-label'
......
...@@ -94,6 +94,7 @@ ...@@ -94,6 +94,7 @@
'data-buttonText' => ' Ajouter le PDF de la norme', 'data-buttonText' => ' Ajouter le PDF de la norme',
'data-buttonName' => "btn-default-primary", 'data-buttonName' => "btn-default-primary",
'data-buttonBefore' => "true", 'data-buttonBefore' => "true",
'accept' => 'application/pdf',
'label' => [ 'label' => [
'text' => false 'text' => false
] ]
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
'type' => 'textarea' 'type' => 'textarea'
] ]
]); ]);
if (empty($this->request->data('Norme.fichier'))) { if (empty($this->request->data('Norme.fichier'))) {
// Ajouter le PDF de la norme // Ajouter le PDF de la norme
echo $this->WebcilForm->input('Norme.fichier', [ echo $this->WebcilForm->input('Norme.fichier', [
...@@ -98,6 +98,7 @@ ...@@ -98,6 +98,7 @@
'data-buttonText' => ' Ajouter le PDF de la norme', 'data-buttonText' => ' Ajouter le PDF de la norme',
'data-buttonName' => "btn-default-primary", 'data-buttonName' => "btn-default-primary",
'data-buttonBefore' => "true", 'data-buttonBefore' => "true",
'accept' => 'application/pdf',
'label' => [ 'label' => [
'text' => false 'text' => false
] ]
...@@ -122,7 +123,6 @@ ...@@ -122,7 +123,6 @@
echo $this->Html->link('<span class="fa fa-download fa-lg"><!----></span>', [ echo $this->Html->link('<span class="fa fa-download fa-lg"><!----></span>', [
'controller' => 'normes', 'controller' => 'normes',
'action' => 'download', 'action' => 'download',
$norme['Norme']['norme'] . '-' . $norme['Norme']['numero'],
$norme['Norme']['fichier'], $norme['Norme']['fichier'],
$norme['Norme']['name_fichier'] $norme['Norme']['name_fichier']
], [ ], [
......
...@@ -66,7 +66,6 @@ ...@@ -66,7 +66,6 @@
'ape' => ['id' => 'ape', 'required' => true] 'ape' => ['id' => 'ape', 'required' => true]
]); ]);
// Ajouter un logo // Ajouter un logo
echo $this->WebcilForm->input('logo_file', [ echo $this->WebcilForm->input('logo_file', [
'id' => 'logo_file', 'id' => 'logo_file',
...@@ -75,6 +74,7 @@ ...@@ -75,6 +74,7 @@
'class' => 'filestyle', 'class' => 'filestyle',
'data-buttonText' => ' Ajouter un logo', 'data-buttonText' => ' Ajouter un logo',
'data-buttonBefore' => "true", 'data-buttonBefore' => "true",
'accept' => Configure::read('logoAcceptedTypes'),
'label' => [ 'label' => [
'text' => false 'text' => false
] ]
......
...@@ -120,6 +120,7 @@ ...@@ -120,6 +120,7 @@
'class' => 'filestyle', 'class' => 'filestyle',
'data-buttonText' => __d('organisation', 'organisation.btnLogo'), 'data-buttonText' => __d('organisation', 'organisation.btnLogo'),
'data-buttonBefore' => 'true', 'data-buttonBefore' => 'true',
'accept' => Configure::read('logoAcceptedTypes'),
'label' => [ 'label' => [
'text' => false 'text' => false
] ]
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment