QRCodeService
in package
Génère, régénère, sert au téléchargement et supprime les QR codes des cartes de visite.
Le service s'appuie sur la bibliothèque endroid/qr-code (writers PNG, JPEG et SVG,
encodage UTF-8, libellé optionnel en police NotoSans) et écrit les images produites dans
le répertoire désigné par le paramètre de conteneur qrcode_directory, créé à la volée si
nécessaire. Chaque fichier reçoit un nom rendu unique par uniqid(), ce qui impose de
supprimer explicitement l'ancien fichier lors d'une régénération. Les méthodes de
génération capturent leurs exceptions, les journalisent via error_log() et retournent
null plutôt que de propager l'erreur.
Table of Contents
Properties
- $parameterBag : ParameterBagInterface
Methods
- __construct() : mixed
- deleteQRCode() : bool
- Supprime un QR code du système de fichiers
- downloadQRCode() : BinaryFileResponse|null
- Télécharge un QR code dans le format spécifié
- generateQRCode() : string|null
- Génère un QR code pour une carte de visite avec options personnalisables
- generateQRCodeByHash() : string|null
- Génère un QR code basé sur le hash public
- regenerateQRCode() : string|null
- Régénère un QR code existant
- regenerateQRCodeByHash() : string|null
- Régénère un QR code existant basé sur le hash public
- createSlug() : string
- Crée un slug URL-friendly à partir d'une chaîne de caractères
Properties
$parameterBag
private
ParameterBagInterface
$parameterBag
Methods
__construct()
public
__construct(ParameterBagInterface $parameterBag) : mixed
Parameters
- $parameterBag : ParameterBagInterface
-
Accès aux paramètres du conteneur, notamment
qrcode_directoryoù sont stockées les images générées.
deleteQRCode()
Supprime un QR code du système de fichiers
public
deleteQRCode(string|null $qrCodePath) : bool
Tolérante par conception : un chemin null ou un fichier déjà absent est traité
comme un succès. Effet de bord : suppression physique du fichier dans
qrcode_directory. Aucune mise à jour de l'entité correspondante n'est effectuée.
Parameters
- $qrCodePath : string|null
-
Nom du fichier à supprimer, ou
nullpour ne rien faire.
Return values
bool —true si le fichier a été supprimé, était absent ou si aucun chemin n'était fourni ; false si unlink() a échoué.
downloadQRCode()
Télécharge un QR code dans le format spécifié
public
downloadQRCode(string $qrCodePath[, string $format = 'png' ]) : BinaryFileResponse|null
Construit une réponse binaire en pièce jointe pointant sur le fichier stocké dans
qrcode_directory, nommée qrcode.{format} côté client. Le paramètre $format
n'agit que sur le nom proposé au téléchargement : aucune conversion d'image n'est
réalisée, le contenu servi reste celui du fichier existant.
Parameters
- $qrCodePath : string
-
Nom du fichier de QR code, relatif à
qrcode_directory. - $format : string = 'png'
-
Extension utilisée dans le nom du fichier téléchargé.
Return values
BinaryFileResponse|null —Réponse de téléchargement, ou null si le fichier est introuvable sur le disque.
generateQRCode()
Génère un QR code pour une carte de visite avec options personnalisables
public
generateQRCode(string $baseUrl, int $cardId, string $firstName, string $lastName[, string $companyName = '' ][, string $position = '' ][, array<string, mixed> $options = [] ]) : string|null
L'URL encodée est construite selon les données disponibles : si l'entreprise et le
poste produisent tous deux un slug non vide et que l'option simple_format est
activée, le format {baseUrl}/card/{entreprise}/{id}/{poste} est utilisé ; à défaut
de slugs exploitables, un repli {baseUrl}/{id}/{prénom}/{nom} est appliqué avec
les noms encodés par urlencode(). Attention : lorsque les deux slugs sont présents
mais que simple_format est absent ou faux, aucune branche n'affecte $url, la
génération échoue alors et la méthode retourne null.
Les options sont fusionnées avec les valeurs par défaut size 300, margin 10,
format png, labelText « SCAN ME » et labelFontSize 20 ; un labelText vide
supprime le libellé. Effets de bord : création éventuelle du répertoire
qrcode_directory (mode 0755, récursif) et écriture du fichier image.
Parameters
- $baseUrl : string
-
Base d'URL utilisée pour composer le lien encodé.
- $cardId : int
-
Identifiant de la carte, repris dans l'URL et le nom de fichier.
- $firstName : string
-
Prénom, utilisé uniquement par le format de repli.
- $lastName : string
-
Nom, utilisé uniquement par le format de repli.
- $companyName : string = ''
-
Raison sociale, transformée en slug pour le format simplifié.
- $position : string = ''
-
Intitulé de poste, transformé en slug pour le format simplifié.
- $options : array<string, mixed> = []
-
Options de rendu :
simple_format,size,margin,format(png,jpg/jpeg,svg),labelText,labelFontSize.
Return values
string|null —Nom du fichier généré (sans chemin), ou null si une exception est survenue — elle est alors journalisée via error_log() et non propagée.
generateQRCodeByHash()
Génère un QR code basé sur le hash public
public
generateQRCodeByHash(string $baseUrl, string $hash[, string $companyName = '' ][, string $position = '' ][, array<string, mixed> $options = [] ]) : string|null
Variante de self::generateQRCode() qui encode le hash public de la carte
plutôt que son identifiant numérique, évitant ainsi d'exposer une clé primaire. La
base d'URL est normalisée (suppression de la barre oblique finale) et un éventuel
segment /bcard terminal est retiré pour obtenir la racine du site utilisée par le
format simplifié. Trois formes d'URL sont possibles, par ordre de priorité :
{racine}/card/{entreprise}/{hash}/{poste} lorsque simple_format (activé par
défaut ici) et les deux slugs sont disponibles ;
{baseUrl}/{hash}/{prénom}/{nom} si au moins un des slugs de nom issus des options
first_name / last_name est renseigné ; sinon {baseUrl}/{hash}.
Mêmes options de rendu et mêmes effets de bord que self::generateQRCode() : création éventuelle du répertoire et écriture du fichier image.
Parameters
- $baseUrl : string
-
Base d'URL, dont le suffixe
/bcardest retiré pour le format simplifié. - $hash : string
-
Hash public identifiant la carte.
- $companyName : string = ''
-
Raison sociale, transformée en slug.
- $position : string = ''
-
Intitulé de poste, transformé en slug.
- $options : array<string, mixed> = []
-
Options de rendu, plus
first_nameetlast_nameemployés par le format intermédiaire ;simple_formatvauttruepar défaut.
Return values
string|null —Nom du fichier généré (sans chemin), ou null si une exception est survenue — elle est alors journalisée via error_log() et non propagée.
regenerateQRCode()
Régénère un QR code existant
public
regenerateQRCode(string $baseUrl, int $cardId, string $firstName, string $lastName[, string|null $oldQrCodePath = null ][, array<string, mixed> $options = [] ][, string $companyName = '' ][, string $position = '' ]) : string|null
Supprime physiquement l'ancien fichier dans qrcode_directory s'il est fourni et
existe, puis délègue la création du nouveau à self::generateQRCode(). La
suppression a lieu avant la génération : si celle-ci échoue et retourne null, la
carte se retrouve sans image de QR code.
Parameters
- $baseUrl : string
-
Base d'URL utilisée pour composer le lien encodé.
- $cardId : int
-
Identifiant de la carte.
- $firstName : string
-
Prénom, utilisé par le format de repli.
- $lastName : string
-
Nom, utilisé par le format de repli.
- $oldQrCodePath : string|null = null
-
Nom de l'ancien fichier à supprimer, ou
nullpour n'en supprimer aucun. - $options : array<string, mixed> = []
-
Options de rendu, voir self::generateQRCode().
- $companyName : string = ''
-
Raison sociale, transformée en slug.
- $position : string = ''
-
Intitulé de poste, transformé en slug.
Return values
string|null —Nom du nouveau fichier, ou null en cas d'échec de la génération.
regenerateQRCodeByHash()
Régénère un QR code existant basé sur le hash public
public
regenerateQRCodeByHash(string $baseUrl, string $hash[, string|null $oldQrCodePath = null ][, array<string, mixed> $options = [] ][, string $companyName = '' ][, string $position = '' ]) : string|null
Pendant de self::regenerateQRCode() pour les cartes identifiées par leur hash public : suppression physique préalable de l'ancien fichier s'il existe, puis appel à self::generateQRCodeByHash(). Ici encore, un échec de génération laisse la carte sans image.
Parameters
- $baseUrl : string
-
Base d'URL utilisée pour composer le lien encodé.
- $hash : string
-
Hash public identifiant la carte.
- $oldQrCodePath : string|null = null
-
Nom de l'ancien fichier à supprimer, ou
nullpour n'en supprimer aucun. - $options : array<string, mixed> = []
-
Options de rendu, voir self::generateQRCodeByHash().
- $companyName : string = ''
-
Raison sociale, transformée en slug.
- $position : string = ''
-
Intitulé de poste, transformé en slug.
Return values
string|null —Nom du nouveau fichier, ou null en cas d'échec de la génération.
createSlug()
Crée un slug URL-friendly à partir d'une chaîne de caractères
private
createSlug(string $text) : string
Passe le texte en minuscules, translittère les caractères accentués en ASCII via
iconv(), remplace toute suite de caractères non alphanumériques par un tiret
unique, puis élague les tirets de début et de fin. Une chaîne ne contenant aucun
caractère alphanumérique produit une chaîne vide, ce qui fait basculer les méthodes
de génération vers leurs formats d'URL de repli.
Parameters
- $text : string
-
Texte source, typiquement une raison sociale ou un intitulé de poste.
Return values
string —Slug en minuscules composé de lettres, chiffres et tirets ; potentiellement vide.