radiantrh/Controleur/ControleurGedadherent.php
2026-03-24 17:44:51 +00:00

149 lines
4.9 KiB
PHP

<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Ged.php';
require_once 'Modele/Naturepiece.php';
require_once 'Modele/Menuvueutilisateur.php';
class ControleurGedadherent extends Controleur {
private $ged;
private $naturepiece;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue('Gedadherent');
$this->ged = new Ged();
$this->naturepiece = (new Naturepiece())->getListe();
}
public function index($msgErreur=null)
{
$message = "";
$nouveau_fichier = "rien";
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$codeNaturePiece = $this->requete->getParametreFormulaire("codeNaturePiece");
if(!empty($_POST))
{
define('TARGET', $_SESSION['cheminGed']); // Repertoire cible
define('MAX_SIZE', 10000000); // Taille max en octets du fichier
// Tableaux de donnees
// ".avi", ".bmp", ".doc", ".docx", ".gif", ".jpeg", "jpg", "jpe", ".mkv", ".mp3", ".pdf", ".png", ".pps", ".xls", ".xlsx", ".wav"
// $tabExt = array('jpg','png','jpeg'); // Extensions autorisees
$tabExt = array("avi", "bmp", "doc", "docx", "gif", "jpeg", "jpg", "jpe", "mkv", "mp3", "mp4", "pdf", "png", "pps", "xls", "xlsx", "wav"); // Extensions autorisees
// Variables
$extension = '';
if($codeNaturePiece == "AUT"){
$libelleAutre = $this->requete->getParametreFormulaire("libelleAutre");
}else{
$libelleAutre = "";
}
if( !is_dir(TARGET) )
{
if( !mkdir(TARGET, 0755) )
{
$message = est_anglophone()
? 'Error: the target directory cannot be created! Check that you have sufficient rights to do so or create it manually!'
: 'Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement !';
}
}
// On verifie si le champ est rempli
if( !empty($_FILES['fichier_upload']['name']) )
{
// Recuperation de l'extension du fichier
$extension = pathinfo($_FILES['fichier_upload']['name'], PATHINFO_EXTENSION);
// On verifie l'extension du fichier
if(in_array(strtolower($extension), $tabExt))
{
$message = $_FILES['fichier_upload']['size'];
// On verifie les dimensions et taille du fichier
if($_FILES['fichier_upload']['size'] <= MAX_SIZE)
{
$taille = $_FILES['fichier_upload']['size'];
// Parcours du tableau d'erreurs
if(isset($_FILES['fichier_upload']['error']) && UPLOAD_ERR_OK === $_FILES['fichier_upload']['error'])
{
// On renomme le fichier
$nomOrigine = $_FILES['fichier_upload']['name'];
$nouveau_fichier = dateJourSql()."_".uniqid().".".$extension;
// Si c'est OK, on teste l'upload
if(move_uploaded_file($_FILES['fichier_upload']['tmp_name'], TARGET.$nouveau_fichier))
{
$message = est_anglophone()
? 'Uploaded successfully'
: 'Chargé avec succès';
// on va envoyer dans la base de données
$this->ged->enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleAutre);
$this->rediriger("Gedadherent");
}
else
{
// Sinon on affiche une erreur systeme
$message = est_anglophone()
? 'Problem during loading!'
: 'Problème lors du chargement !';
}
}
else
{
$message = est_anglophone()
? 'An internal error prevented the loading'
: 'Une erreur interne a empêché le chargement';
}
}
else
{
// $message = 'Erreur dans les dimensions du fichier !';
$message = est_anglophone()
? $_FILES['fichier_upload']['size']." Error in the file dimensions!"
: $_FILES['fichier_upload']['size']." Erreur dans les dimensions du fichier !";
}
}
else
{
// Sinon on affiche une erreur pour l'extension
$message = est_anglophone()
? 'File extension is incorrect!'
: 'Extension du fichier est incorrecte !';
}
}
else
{
// Sinon on affiche une erreur pour le champ vide
$message = est_anglophone()
? 'Please select a file!'
: 'Veuillez sélectionner un fichier SVP !';
}
// fin upload
}
$msgErreur = $message;
$d1 = $_SESSION['dUneSemaineAvant_C'];
$d2 = date('Y-m-d');
$geds = $this->ged->getgedadherent($d1, $d2, $nomOrigine, $codeNaturePiece);
unset($_FILES['fichier_upload']);
$this->genererVue(array('geds' => $geds, 'msgErreur' => $msgErreur, 'naturepiece' => $this->naturepiece));
}
}