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
$this->redirect($this->Referers->get());
}
debug($formulaire_id);
$success = true;
$this->Fiche->begin();
......
......@@ -224,6 +224,7 @@ class NormesController extends AppController {
}
$success = true;
$errorMessage = __d('norme', 'norme.flasherrorErreurEnregistrementNorme');
$this->Norme->begin();
$this->Norme->id = $id;
......@@ -244,6 +245,11 @@ class NormesController extends AppController {
if (!empty($this->request->data['Norme']['fichier']['type'])) {
$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) {
......@@ -253,7 +259,7 @@ class NormesController extends AppController {
$this->redirect($this->Referers->get());
} else {
$this->Norme->rollback();
$this->Session->setFlash(__d('norme', 'norme.flasherrorErreurEnregistrementNorme'), 'flasherror');
$this->Session->setFlash($errorMessage, 'flasherror');
}
} else {
......@@ -318,9 +324,12 @@ class NormesController extends AppController {
*/
public function download($urlFichier, $nameFichier) {
$path = CHEMIN_NORMES . $urlFichier;
if (file_exists($path) === false) {
$path = CHEMIN_FICHIER . NORMES . DS . $urlFichier;
if (file_exists($path) === false) {
throw new NotFoundException();
}
}
$this->response->file($path, ['download' => true, 'name' => $nameFichier]);
return $this->response;
......@@ -341,17 +350,26 @@ class NormesController extends AppController {
public function deleteFileSave($id, $urlFile) {
$this->autoRender = false;
$this->Norme->begin();
$success = true;
$cheminFile = CHEMIN_NORMES . $urlFile;
$this->Norme->begin();
$this->Norme->id = $id;
$record = [
'id' => $id,
'fichier' => null,
'name_fichier' => null
];
$success = $this->Norme->save($record, ['atomic' => false]) !== false
&& unlink($cheminFile) === true;
$success = false !== $this->Norme->save($record, ['atomic' => false]) && $success;
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) {
$this->Norme->commit();
......@@ -360,6 +378,7 @@ class NormesController extends AppController {
$this->Norme->rollback();
$this->Session->setFlash(__d('norme', 'norme.flasherrorFichierSupprimer'), 'flasherror');
}
$this->redirect($this->Referers->get());
}
}
......@@ -251,16 +251,17 @@ function create_arborescence_files($user_id = null)
{
$paths = [
CHEMIN_FICHIER,
CHEMIN_FICHIER . REGISTRE,
CHEMIN_FICHIER . MODELES,
CHEMIN_FICHIER . MODELES . EXTRAIT_REGISTRE,
CHEMIN_REGISTRE,
CHEMIN_MODELES,
CHEMIN_MODELES_EXTRAIT,
CHEMIN_MODELES_PRESENTATIONS,
CHEMIN_FICHIER . PIECE_JOINT,
CHEMIN_FICHIER . PIECE_JOINT . PIECE_JOINT_TMP,
CHEMIN_FICHIER . PIECE_JOINT . PIECE_JOINT_CONVERSION,
CHEMIN_PIECE_JOINT,
CHEMIN_PIECE_JOINT_TMP,
CHEMIN_PIECE_JOINT_CONVERSION,
CHEMIN_FICHIER . NORMES,
CHEMIN_FICHIER . EXPORTS,
CHEMIN_FICHIER . CONNECTEURS,
CHEMIN_EXPORTS,
CHEMIN_CONNECTEURS,
CHEMIN_CONNECTEURS_AUTHENTIFICATION,
CHEMIN_PIECE_JOINT_ARTICLE,
CHEMIN_PIECE_JOINT_ARTICLE_TMP,
CHEMIN_LOGOS,
......
......@@ -62,6 +62,8 @@ msgstr "Une erreur s'est produite lors de la révocation de l'abrogation de la n
msgid "norme.flasherrorFichierSupprimer"
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 {
*/
public function deleteFichier($id, $transaction = false) {
$success = true;
if($transaction == true) {
if ($transaction == true) {
$this->begin();
}
......
......@@ -77,30 +77,31 @@ class Norme extends AppModel {
}
public function saveFile($data, $id) {
$success = false;
$success = true;
$accepted = ['application/pdf'];
if (isset($data['Norme']['fichier']) && !empty($data['Norme']['fichier'])) {
$file = $data['Norme']['fichier'];
$success = true;
$mime = mime_content_type($data['Norme']['fichier']['tmp_name']);
if ($file['type'] == 'application/pdf') {
if (!empty($file['name'])) {
$extension = '.pdf';
if (in_array($mime, $accepted) === true) {
$file = $data['Norme']['fichier'];
$nameFile = $file['name'];
// 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) {
$extension = pathinfo($nameFile, PATHINFO_EXTENSION);
$url = time();
$nameFile = $url . $extension;
$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;
$record = [
'fichier' => $url . $extension,
'name_fichier' => $file['name']
'fichier' => $urlFile,
'name_fichier' => $nameFile
];
$success = $success && $this->save($record, ['atomic' => false]) !== false;
}
......@@ -110,13 +111,10 @@ class Norme extends AppModel {
} else {
$success = false;
}
return ($success);
} else {
$success = false;
}
}
return ($success);
return $success;
}
}
......@@ -152,6 +152,7 @@
'div' => 'input-group inputsForm',
'type' => 'file',
'class' => 'filestyle',
'accept' => 'application/vnd.oasis.opendocument.text',
'label' => [
'text' => __d('modele', 'modele.popupChampModele'),
'class' => 'col-md-4 control-label'
......
......@@ -152,6 +152,7 @@
'div' => 'input-group inputsForm',
'type' => 'file',
'class' => 'filestyle',
'accept' => 'application/vnd.oasis.opendocument.text',
'label' => [
'text' => __d('modele_presentation', 'modele_presentation.popupChampModele'),
'class' => 'col-md-4 control-label'
......
......@@ -159,6 +159,7 @@ if (!empty($modeles)) {
'div' => 'input-group inputsForm',
'type' => 'file',
'class' => 'filestyle',
'accept' => 'application/vnd.oasis.opendocument.text',
'label' => [
'text' => __d('modele', 'modele.popupChampModele'),
'class' => 'col-md-4 control-label'
......
......@@ -94,6 +94,7 @@
'data-buttonText' => ' Ajouter le PDF de la norme',
'data-buttonName' => "btn-default-primary",
'data-buttonBefore' => "true",
'accept' => 'application/pdf',
'label' => [
'text' => false
]
......
......@@ -98,6 +98,7 @@
'data-buttonText' => ' Ajouter le PDF de la norme',
'data-buttonName' => "btn-default-primary",
'data-buttonBefore' => "true",
'accept' => 'application/pdf',
'label' => [
'text' => false
]
......@@ -122,7 +123,6 @@
echo $this->Html->link('<span class="fa fa-download fa-lg"><!----></span>', [
'controller' => 'normes',
'action' => 'download',
$norme['Norme']['norme'] . '-' . $norme['Norme']['numero'],
$norme['Norme']['fichier'],
$norme['Norme']['name_fichier']
], [
......
......@@ -66,7 +66,6 @@
'ape' => ['id' => 'ape', 'required' => true]
]);
// Ajouter un logo
echo $this->WebcilForm->input('logo_file', [
'id' => 'logo_file',
......@@ -75,6 +74,7 @@
'class' => 'filestyle',
'data-buttonText' => ' Ajouter un logo',
'data-buttonBefore' => "true",
'accept' => Configure::read('logoAcceptedTypes'),
'label' => [
'text' => false
]
......
......@@ -120,6 +120,7 @@
'class' => 'filestyle',
'data-buttonText' => __d('organisation', 'organisation.btnLogo'),
'data-buttonBefore' => 'true',
'accept' => Configure::read('logoAcceptedTypes'),
'label' => [
'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