Fonctionnalité sur addedit_project essentiellement
This commit is contained in:
parent
e6c64912c3
commit
d5609324ab
175 changed files with 8333 additions and 12477 deletions
|
|
@ -95,7 +95,7 @@
|
|||
* Fonction d'affichage de la page projet
|
||||
* @author Christel adapter par Guillaume
|
||||
*/
|
||||
public function addedit_project() {
|
||||
public function addedit_project() {
|
||||
if (!isset($_SESSION['user'])){ // Pas d'utilisateur connecté
|
||||
header("Location:index.php?ctrl=error&action=error_403");
|
||||
exit;
|
||||
|
|
@ -107,12 +107,10 @@
|
|||
|
||||
// dans la cas de modif
|
||||
if (isset($_GET['id'])){
|
||||
$arrProject = $objProjectModel->find($_GET['id']);
|
||||
$arrProject = $objProjectModel->findOne($_GET['id']);
|
||||
$objProject->hydrate($arrProject); // BDD
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Tester le formulaire
|
||||
$arrError = [];
|
||||
if (count($_POST) > 0) {
|
||||
|
|
@ -132,45 +130,33 @@
|
|||
|
||||
// Vérification de l'image
|
||||
$arrTypeAllowed = array('image/jpeg', 'image/png', 'image/webp');
|
||||
if ($_FILES['imageThumbnail']['error'] != 4){
|
||||
if (!in_array($_FILES['imageThumbnail']['type'], $arrTypeAllowed)){
|
||||
$arrError['imageThumbnail'] = "Le type de fichier n'est pas autorisé";
|
||||
if ($_FILES['thumbnail']['error'] != 4){
|
||||
if (!in_array($_FILES['thumbnail']['type'], $arrTypeAllowed)){
|
||||
$arrError['thumbnail'] = "Le type de fichier n'est pas autorisé";
|
||||
}else{
|
||||
// Vérification des codes d'erreur
|
||||
switch ($_FILES['imageThumbnail']['error']){
|
||||
switch ($_FILES['thumbnail']['error']){
|
||||
case 0 :
|
||||
// Renommage de l'image
|
||||
$strImageName = uniqid().".webp";
|
||||
|
||||
/* uniquement si on veut garder l'extension du fichier originel */
|
||||
/*switch ($_FILES['img']['type']){
|
||||
case 'image/jpeg' :
|
||||
$strImageName .= '.jpg';
|
||||
break;
|
||||
case 'image/png' :
|
||||
$strImageName .= '.png';
|
||||
break;
|
||||
}*/
|
||||
|
||||
// Récupère le nom de l'image avant changement
|
||||
$strOldImg = $objProject->getThumbnail();
|
||||
// Mise à jour du nom de l'image dans l'objet
|
||||
$objProject->setThumbnail($strImageName);
|
||||
break;
|
||||
case 1 :
|
||||
$arrError['imageThumbnail'] = "Le fichier est trop volumineux";
|
||||
break;
|
||||
case 2 :
|
||||
$arrError['imageThumbnail'] = "Le fichier est trop volumineux";
|
||||
$arrError['thumbnail'] = "Le fichier est trop volumineux";
|
||||
break;
|
||||
case 3 :
|
||||
$arrError['imageThumbnail'] = "Le fichier a été partiellement téléchargé";
|
||||
$arrError['thumbnail'] = "Le fichier a été partiellement téléchargé";
|
||||
break;
|
||||
case 6 :
|
||||
$arrError['imageThumbnail'] = "Le répertoire temporaire est manquant";
|
||||
$arrError['thumbnail'] = "Le répertoire temporaire est manquant";
|
||||
break;
|
||||
default :
|
||||
$arrError['imageThumbnail'] = "Erreur sur l'image";
|
||||
$arrError['thumbnail'] = "Erreur sur l'image";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -178,113 +164,95 @@
|
|||
}else{
|
||||
// Est-ce que le fichier existe ?
|
||||
if (is_null($objProject->getThumbnail())){
|
||||
$arrError['imageThumbnail'] = "L'image est obligatoire";
|
||||
$arrError['thumbnail'] = "L'image est obligatoire";
|
||||
}
|
||||
}
|
||||
|
||||
// Si le formulaire est rempli correctement
|
||||
if (count($arrError) == 0){
|
||||
if (is_null($objProject->getId())){
|
||||
// => Ajout dans la base de données
|
||||
$boolOk = $objProjectModel->insert($objProject);
|
||||
}else{
|
||||
$boolOk = $objProjectModel->updateProject($objProject);
|
||||
}
|
||||
if ($boolOk === true){
|
||||
if (isset($strImageName)){
|
||||
// Création du chemin de destination
|
||||
$strDest = $_ENV['IMG_PATH'].$strImageName;
|
||||
// Récupération de la source de l'image
|
||||
$strSource = $_FILES['imageThumbnail']['tmp_name'];
|
||||
// Récupération des dimensions de l'image source
|
||||
list($intWidth, $intHeight) = getimagesize($strSource);
|
||||
// Dimensions de destination
|
||||
$intDestWidth = 200;
|
||||
$intDestHeight = 250;
|
||||
|
||||
// Calcul du ratio de destination
|
||||
$fltDestRatio = $intDestWidth / $intDestHeight;
|
||||
// Calcul du ratio de la source
|
||||
$fltSourceRatio = $intWidth / $intHeight;
|
||||
|
||||
// Détermination de la zone à cropper
|
||||
if ($fltSourceRatio > $fltDestRatio) {
|
||||
// L'image source est plus large → on crop en largeur
|
||||
$intCropHeight = $intHeight;
|
||||
$intCropWidth = round($intHeight * $fltDestRatio);
|
||||
$intCropX = ($intWidth - $intCropWidth) / 2; // Centrage horizontal
|
||||
$intCropY = 0;
|
||||
} else {
|
||||
// L'image source est plus haute → on crop en hauteur
|
||||
$intCropWidth = $intWidth;
|
||||
$intCropHeight = round($intWidth / $fltDestRatio);
|
||||
$intCropX = 0;
|
||||
$intCropY = ($intHeight - $intCropHeight) / 2; // Centrage vertical
|
||||
}
|
||||
|
||||
// Création d'une image 'vide'
|
||||
$objDest = imagecreatetruecolor($intDestWidth, $intDestHeight);
|
||||
|
||||
// Création d'un objet image à partir de la source (attention au type de fichier)
|
||||
switch ($_FILES['imageThumbnail']['type']){
|
||||
case 'image/jpeg' :
|
||||
$objSource = imagecreatefromjpeg($strSource);
|
||||
break;
|
||||
case 'image/png' :
|
||||
$objSource = imagecreatefrompng($strSource);
|
||||
break;
|
||||
case 'image/webp' :
|
||||
$objSource = imagecreatefromwebp($strSource);
|
||||
break;
|
||||
}
|
||||
|
||||
// Mise à jour de l'image 'vide' avec les informations de dimension
|
||||
//imagecopyresized($objDest, $objSource, 0, 0, 0, 0, 200, 250, $intWidth, $intHeight);
|
||||
imagecopyresampled($objDest, $objSource,
|
||||
0, 0, $intCropX, $intCropY,
|
||||
$intDestWidth, $intDestHeight, $intCropWidth, $intCropHeight);
|
||||
|
||||
// Si la copie de l'image a bien été effectuée à la destination voulue
|
||||
$boolOk = imagewebp($objDest, $strDest);
|
||||
}
|
||||
if ($boolOk === true){
|
||||
//if (move_uploaded_file($_FILES['img']['tmp_name'], $strDest)){
|
||||
// suppression de l'ancienne image
|
||||
$strOldFile = $_ENV['IMG_PATH'].$strOldImg;
|
||||
if (file_exists($strOldFile)){
|
||||
unlink($strOldFile);
|
||||
}
|
||||
|
||||
if (is_null($objProject->getId())){
|
||||
$_SESSION['success'] = "Le projet a bien été créé";
|
||||
}else{
|
||||
$_SESSION['success'] = "Le projet a bien été modifié";
|
||||
}
|
||||
header("Location:index.php");
|
||||
exit;
|
||||
}else{
|
||||
$arrError['imageThumbnail'] = "Erreur dans le traitement de l'image";
|
||||
}
|
||||
}else{
|
||||
$arrError[] = "Erreur lors de l'ajout";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_dump($_SESSION);
|
||||
var_dump($objProject);
|
||||
var_dump($arrError);
|
||||
|
||||
|
||||
// SI pas d'erreur : on traite l'image depuis la bdd
|
||||
if (count($arrError) == 0){
|
||||
|
||||
$boolImageOk = true;
|
||||
|
||||
// Redimensionnement de l'image
|
||||
if (isset($strImageName)){
|
||||
$strDest = $_ENV['IMG_PATH'].$strImageName;
|
||||
$strSource = $_FILES['thumbnail']['tmp_name'];
|
||||
list($intWidth, $intHeight) = getimagesize($strSource);
|
||||
|
||||
$intDestWidth = 200; $intDestHeight = 250;
|
||||
$fltDestRatio = $intDestWidth / $intDestHeight;
|
||||
$fltSourceRatio = $intWidth / $intHeight;
|
||||
|
||||
if ($fltSourceRatio > $fltDestRatio) {
|
||||
$intCropHeight = $intHeight;
|
||||
$intCropWidth = (int)round($intHeight * $fltDestRatio);
|
||||
$intCropX = (int)(($intWidth - $intCropWidth) / 2);
|
||||
$intCropY = 0;
|
||||
} else {
|
||||
$intCropWidth = $intWidth;
|
||||
$intCropHeight = (int)round($intWidth / $fltDestRatio);
|
||||
$intCropX = 0;
|
||||
$intCropY = (int)(($intHeight - $intCropHeight) / 2);
|
||||
}
|
||||
|
||||
// Condition en fonction de l'extension de l'image
|
||||
$objDest = imagecreatetruecolor($intDestWidth, $intDestHeight);
|
||||
switch ($_FILES['thumbnail']['type']) {
|
||||
case 'image/jpeg' :
|
||||
$objSource = imagecreatefromjpeg($strSource);
|
||||
break;
|
||||
case 'image/png' :
|
||||
$objSource = imagecreatefrompng($strSource);
|
||||
break;
|
||||
case 'image/webp' :
|
||||
$objSource = imagecreatefromwebp($strSource);
|
||||
break;
|
||||
}
|
||||
|
||||
imagecopyresampled($objDest, $objSource, 0, 0, $intCropX, $intCropY, $intDestWidth, $intDestHeight, $intCropWidth, $intCropHeight);
|
||||
|
||||
// Sauvegarde du fichier
|
||||
$boolImageOk = imagewebp($objDest, $strDest);
|
||||
imagedestroy($objDest);
|
||||
imagedestroy($objSource);
|
||||
}
|
||||
|
||||
// SI image ok, on balance tout dans la bdd
|
||||
if ($boolImageOk){
|
||||
if (!isset($_GET['id'])){
|
||||
$objProject->setUser_id($_SESSION['user']['user_id']);
|
||||
$boolOk = $objProjectModel->insert($objProject);
|
||||
} else {
|
||||
$boolOk = $objProjectModel->updateProject($objProject);
|
||||
}
|
||||
|
||||
if ($boolOk){
|
||||
// Suppression de l'ancienne image
|
||||
if(isset($strOldImg) && !empty($strOldImg) && isset($strImageName)){
|
||||
$strOldFile = $_ENV['IMG_PATH'].$strOldImg;
|
||||
if (file_exists($strOldFile)) unlink($strOldFile);
|
||||
}
|
||||
|
||||
$_SESSION['success'] = (!isset($_GET['id'])) ? "Le projet a bien été créé" : "Le projet a bien été modifié";
|
||||
header("Location:index.php");
|
||||
exit;
|
||||
} else {
|
||||
$arrError[] = "Erreur lors de l'enregistrement en base de données";
|
||||
}
|
||||
} else {
|
||||
$arrError['thumbnail'] = "Erreur dans le traitement de l'image";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Données pour la vue
|
||||
$this->_arrData['arrCategory'] = $objCategoryModel->findAllCategory();
|
||||
$this->_arrData['objProject'] = $objProject; // On passe l'objet à la vue pour pré-remplir les champs
|
||||
$this->_arrData['objProject'] = $objProject;
|
||||
$this->_arrData['arrError'] = $arrError;
|
||||
|
||||
$this->_display('addedit_project');
|
||||
}
|
||||
|
||||
|
||||
public function display() {
|
||||
$intId = $_GET['id'] ?? null;
|
||||
|
||||
|
|
@ -421,18 +389,4 @@
|
|||
header("Location: index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
public function modify(){
|
||||
|
||||
//Récupéré l'id dans l'url
|
||||
$intId = $_GET['id'];
|
||||
|
||||
//Je créer un nouveau model pour exec la commande SQL
|
||||
$objProjectModel = new ProjectModel;
|
||||
$objProjectModel->modify($intId);
|
||||
|
||||
//Redirection vers la page projet
|
||||
header("Location: index.php?ctrl=project&action=addedit_project&id=".$intId);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue