production/Controleur/ControleurAjaxgenererqrcode.php
2025-12-02 11:29:44 +00:00

132 lines
3.3 KiB
PHP
Executable File

<?php
require_once 'vendor/autoload.php';
require_once 'Framework/Controleur.php';
/*
require_once 'Modele/Qrcodemodele.php';
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\ErrorCorrectionLevel;
*/
class ControleurAjaxgenererqrcode extends Controleur {
// private $qrcode;
public function __construct() {
// $this->qrcode = new Qrcodemodele();
}
public function index()
{
/*
header('Content-Type: application/json');
try {
$matricule = $this->requete->getParametreFormulaire("matricule");
if (empty($matricule)) {
throw new Exception("Matricule manquant");
}
$success = $this->genererEtStockerQRCodeFichier($matricule);
$message = (isset($_SESSION['lang']) && $_SESSION['lang']=="en_US") ? "QR code generated successfully!" : "QR code généré avec succès !";
echo json_encode([
'success' => $success,
'message' => $message
]);
} catch (Exception $e) {
http_response_code(400);
echo json_encode([
'success' => false,
'error' => $e->getMessage()
]);
}
*/
}
function genererEtStockerQRCodeFichier($matricule) {
/*
$cheminDossier = $_SESSION['dossierSociete'].'/qrcodes/';
try {
// 1. Validation du matricule
if (empty($matricule) || !preg_match('/^[A-Z0-9_-]+$/i', $matricule)) {
throw new Exception("Matricule invalide");
}
// 2. Gestion du dossier
$cheminDossier = rtrim($cheminDossier, '/') . '/';
if (!file_exists($cheminDossier)) {
if (!mkdir($cheminDossier, 0777, true)) {
throw new Exception("Impossible de créer le dossier QR");
}
}
if (!is_writable($cheminDossier)) {
throw new Exception("Dossier non accessible en écriture");
}
// 3. Suppression ancien QR code
$ancienChemin = $this->qrcode->getAncienChemin($matricule);
if ($ancienChemin) {
$ancienFichier = $cheminDossier . $ancienChemin;
if (file_exists($ancienFichier) && !unlink($ancienFichier)) {
error_log("Avertissement: Impossible de supprimer l'ancien QR");
}
}
// 4. Génération avec endroid/qr-code
//$nomFichier = 'qr_' . preg_replace('/[^A-Z0-9]/i', '_', $matricule) . '_' . time() . '.png';
$nomFichier = $matricule.'.png';
$cheminComplet = $cheminDossier . $nomFichier;
// Création du QR Code
$qrCode = QrCode::create($matricule)
->setSize(150)
->setMargin(5)
->setForegroundColor(new Color(0, 0, 0)) // Noir
->setBackgroundColor(new Color(255, 255, 255)) // Blanc
->setErrorCorrectionLevel(ErrorCorrectionLevel::High);
// Création du writer
$writer = new PngWriter();
$result = $writer->write($qrCode);
// Sauvegarde du fichier
$result->saveToFile($cheminComplet);
// 5. Vérification fichier généré
if (!file_exists($cheminComplet)) {
throw new Exception("Échec de la génération du fichier");
}
$this->qrcode->majBeneficiaireQr($nomFichier, $matricule);
return true;
} catch (Exception $e) {
error_log("Erreur QR Code: " . $e->getMessage());
return false;
}
*/
}
}