ModeleExtraitRegistresController.php 5.13 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
<?php

/**
 * ModeleExtraitRegistreController
 *
 * web-DPO : Outil de gestion de vos traitements dans le cadre de la 
 * réglementation relative à la protection des données personnelles (RGPD)
 * 
 * Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
 *
 * Licensed under The CeCiLL V2 License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 * 
 * @copyright   Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
 * @link        https://www.libriciel.fr/web-cil/
 * @since       web-DPO v1.0.0
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html CeCiLL V2 License
 * @version     v1.0.0
 * @package     App.Controller
 */

App::uses('Folder', 'Utility');
App::uses('File', 'Utility');
App::uses('ListeDroit', 'Model');

class ModeleExtraitRegistresController extends AppController {

    public $uses = [
        'ModeleExtraitRegistre',
    ];

    /**
     * @access public
     * @created 26/12/2016
     * @version V1.0.0
     */
    public function add() {
39
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
        
        // Superadmin non autorisé
        if (true == ($this->Droits->authorized($this->Droits->isSu()))) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
        
        $saveFile = $this->ModeleExtraitRegistre->saveFile($this->request->data, $this->Session->read('Organisation.id'));

        if ($saveFile == 0) {
            $this->Session->setFlash(__d('modele', 'modele.flashsuccessModeleEnregistrer'), 'flashsuccess');
        } elseif ($saveFile == 1) {
            $this->Session->setFlash(__d('modele', 'modele.flasherrorFicherTropLourd'), 'flasherror');
        } elseif ($saveFile == 2) {
            $this->Session->setFlash(__d('modele', 'modele.flasherrorExtensionNonValide'), 'flasherror');
        } elseif ($saveFile == 3) {
            $this->Session->setFlash(__d('modele', 'modele.flashwarningAucunFichier'), 'flashwarning');
        }

        $this->redirect($this->Referers->get());
    }
    
    /**
     * Fonction pour téléchargé le modele de l'extrait de registre
     * 
     * @param type $file
     * @return type
     * 
     * @access public
     * @created 28/12/2016
     * @version V1.0.0
     */
    public function download($file, $nameFile) {
74 75 76 77
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }

78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
        $this->response->file(CHEMIN_MODELES_EXTRAIT . $file, [
            'download' => true,
            'name' => $nameFile
        ]);
        
        return $this->response;
    }
    
    /**
     * Permet de supprimer en bdd de le model associer par qu'ontre on ne 
     * supprime dans aucun cas le fichier enregistré
     * 
     * @param type $file --> c'est le nom du model (en générale 15614325.odt)
     * qui est enregistré dans app/webroot/files/models
     */
    public function delete($file) {
94 95 96 97
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }

98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
        $modeles = $this->ModeleExtraitRegistre->find('all', [
            'conditions' => [
                'fichier' => $file
            ]
        ]);
        
        if ($modeles) {
            $isDeleted = $this->ModeleExtraitRegistre->deleteAll([
                'fichier' => $file
            ]);

            if ($isDeleted) {
                $this->Session->setFlash(__d('modele', 'modele.flashsuccessModeleSupprimer'), 'flashsuccess');
            } else {
                $this->Session->setFlash(__d('modele', 'modele.flasherrorErreurSupprimerModele'), 'flasherror');
            }
        } else {
            $this->Session->setFlash(__d('modele', 'modele.flasherrorModeleInexistant'), 'flasherror');
        }

        $this->redirect($this->Referers->get());
    }
    
    public function index() {
122
        if (true !== $this->Droits->authorized([ListeDroit::GESTION_MODELE])) {
123 124
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
125

126 127 128 129 130 131 132
        // Superadmin non autorisé
        if ($this->Droits->isSu() == true) {
            throw new ForbiddenException(__d('default', 'default.flasherrorPasDroitPage'));
        }
        
        $this->set('title', __d('modele', 'modele.titreModeleExtraitRegistre'));

133
        $modelesExtrait = $this->ModeleExtraitRegistre->find('first', [
134 135 136 137
            'conditions' => [
                'organisations_id' => $this->Session->read('Organisation.id')
            ]
        ]);
138 139 140 141 142 143 144 145 146
        
        foreach ($modelesExtrait as $modeleExtrait) {
            if (!file_exists(CHEMIN_MODELES_EXTRAIT.$modeleExtrait['fichier'])) {
                $this->ModeleExtraitRegistre->delete($modeleExtrait['id']);
                
                $modelesExtrait = [];
            }
        }
        
147 148 149 150
        $this->set(compact('modelesExtrait'));
    }

}