LogoManagementService
in package
Gère les logos et les couleurs personnalisés des cartes de visite.
Ce service centralise le contrôle d'accès aux options de personnalisation réservées aux
offres premium, la validation et l'upload des fichiers de logo sur le système de fichiers
(via UploaderService), la suppression physique des anciens fichiers, ainsi que le
calcul des couleurs à appliquer à l'affichage (couleurs de l'entreprise ou valeurs par
défaut). Il s'appuie sur les paramètres de conteneur custom_logos_directory et est
utilisé par les contrôleurs de création/édition de cartes de visite.
Table of Contents
Properties
- $parameterBag : ParameterBagInterface
- $uploaderService : UploaderService
Methods
- __construct() : mixed
- canUseCustomColors() : bool
- Vérifie si l'utilisateur peut utiliser des couleurs personnalisées
- canUseCustomLogo() : bool
- Vérifie si l'utilisateur peut utiliser un logo personnalisé
- deleteCustomLogo() : bool
- Supprime un logo personnalisé du système de fichiers
- getDefaultColors() : array<string, string>
- Retourne les couleurs par défaut si l'utilisateur n'en a pas défini
- getDisplayColors() : array<string, string>
- Retourne les couleurs à utiliser pour l'affichage
- getDisplayLogo() : string|null
- Retourne le logo à afficher (personnalisé si disponible, sinon logo par défaut)
- setCompanyColors() : void
- Définit les couleurs de l'entreprise pour une carte de visite
- setCustomColors() : void
- Définit les couleurs personnalisées pour une carte de visite
- uploadCustomLogo() : string|null
- Upload et sauvegarde d'un logo personnalisé pour une carte de visite
- validateHexColor() : bool
- Valide une couleur hexadécimale
- validateLogoFile() : void
- Valide un fichier de logo
Properties
$parameterBag
private
ParameterBagInterface
$parameterBag
$uploaderService
private
UploaderService
$uploaderService
Methods
__construct()
public
__construct(UploaderService $uploaderService, ParameterBagInterface $parameterBag) : mixed
Parameters
- $uploaderService : UploaderService
-
Service d'upload réalisant le déplacement physique du fichier et la génération du nom sécurisé.
- $parameterBag : ParameterBagInterface
-
Accès aux paramètres du conteneur, notamment
custom_logos_directory.
canUseCustomColors()
Vérifie si l'utilisateur peut utiliser des couleurs personnalisées
public
canUseCustomColors(User $user) : bool
Repose sur le même critère que self::canUseCustomLogo() : l'accès aux fonctionnalités premium de l'utilisateur.
Parameters
- $user : User
-
Utilisateur dont les droits sont évalués.
Return values
bool —true si l'utilisateur dispose des fonctionnalités premium.
canUseCustomLogo()
Vérifie si l'utilisateur peut utiliser un logo personnalisé
public
canUseCustomLogo(User $user) : bool
Délègue entièrement la décision à User::hasAccessToPremiumFeatures() : aucun contrôle spécifique au logo n'est effectué ici.
Parameters
- $user : User
-
Utilisateur dont les droits sont évalués.
Return values
bool —true si l'utilisateur dispose des fonctionnalités premium.
deleteCustomLogo()
Supprime un logo personnalisé du système de fichiers
public
deleteCustomLogo(string $logoFilename) : bool
Le chemin est reconstruit à partir du paramètre custom_logos_directory. Si le
fichier n'existe pas, l'opération est considérée comme réussie et true est
retourné sans erreur. Effet de bord : suppression physique du fichier.
Parameters
- $logoFilename : string
-
Nom du fichier de logo (sans chemin de répertoire).
Return values
bool —true si le fichier a été supprimé ou n'existait pas, false si unlink() a échoué.
getDefaultColors()
Retourne les couleurs par défaut si l'utilisateur n'en a pas défini
public
getDefaultColors() : array<string, string>
Les valeurs sont codées en dur : #6A2C70 en primaire et #F39C12 en secondaire.
Return values
array<string, string> —Tableau associatif avec les clés primary et secondary.
getDisplayColors()
Retourne les couleurs à utiliser pour l'affichage
public
getDisplayColors(BusinessCardAize $businessCard) : array<string, string>
Pour chaque couleur, la valeur portée par la carte est retenue si elle est « truthy » ; sinon la valeur correspondante de self::getDefaultColors() est utilisée (une chaîne vide est donc traitée comme une absence de valeur).
Parameters
- $businessCard : BusinessCardAize
-
Carte de visite concernée.
Return values
array<string, string> —Tableau associatif avec les clés primary et secondary.
getDisplayLogo()
Retourne le logo à afficher (personnalisé si disponible, sinon logo par défaut)
public
getDisplayLogo(BusinessCardAize $businessCard) : string|null
Construit une URL web publique en préfixant le nom de fichier par
/uploads/custom_logos/ — ce préfixe est codé en dur et ne dépend pas du paramètre
custom_logos_directory. Le logo n'est retourné que si l'utilisateur a toujours
accès aux fonctionnalités premium : une carte conservant un logo après une
rétrogradation d'offre renverra donc null.
Parameters
- $businessCard : BusinessCardAize
-
Carte de visite concernée.
Return values
string|null —Chemin web du logo personnalisé, ou null si aucun logo n'est
disponible ou si l'utilisateur n'y a pas droit (aucun logo par
défaut n'est renvoyé par cette méthode).
setCompanyColors()
Définit les couleurs de l'entreprise pour une carte de visite
public
setCompanyColors(BusinessCardAize $businessCard) : void
Récupère l'entreprise rattachée à l'utilisateur de la carte et reporte ses couleurs
primaire et secondaire sur la carte, chacune uniquement si elle est renseignée côté
entreprise. Contrairement à self::setCustomColors(), aucun contrôle de droits
premium ni validation de format n'est appliqué ici. Si l'utilisateur ou l'entreprise
est absent, la méthode ne fait rien. Aucun flush() n'est effectué.
Parameters
- $businessCard : BusinessCardAize
-
Carte de visite à modifier.
setCustomColors()
Définit les couleurs personnalisées pour une carte de visite
public
setCustomColors(BusinessCardAize $businessCard, string|null $primaryColor, string|null $secondaryColor) : void
Contrôle d'abord les droits premium de l'utilisateur, puis valide chaque couleur
non vide au format #RRGGBB. Les deux valeurs sont ensuite affectées à l'entité,
y compris lorsqu'elles valent null (ce qui réinitialise la couleur). Effet de
bord limité à la mutation de l'entité en mémoire : aucun flush() n'est effectué,
la persistance incombe à l'appelant.
Parameters
- $businessCard : BusinessCardAize
-
Carte de visite à modifier.
- $primaryColor : string|null
-
Couleur primaire au format
#RRGGBB, ounullpour l'effacer. - $secondaryColor : string|null
-
Couleur secondaire au format
#RRGGBB, ounullpour l'effacer.
Tags
uploadCustomLogo()
Upload et sauvegarde d'un logo personnalisé pour une carte de visite
public
uploadCustomLogo(UploadedFile $logoFile, BusinessCardAize $businessCard) : string|null
Enchaîne : contrôle des droits premium du propriétaire de la carte, validation du
fichier via self::validateLogoFile(), suppression physique de l'ancien logo
s'il en existe un, création récursive du répertoire custom_logos_directory (mode
0755) s'il est absent, puis délégation à UploaderService::uploadFile().
Effets de bord : écritures et suppressions sur le système de fichiers. Aucune
écriture en base : le nom de fichier retourné doit être affecté à l'entité et
persisté par l'appelant.
Parameters
- $logoFile : UploadedFile
-
Fichier de logo téléversé.
- $businessCard : BusinessCardAize
-
Carte de visite cible, dont l'utilisateur détermine les droits.
Tags
Return values
string|null —Nom du fichier stocké, tel que renvoyé par l'uploader.
validateHexColor()
Valide une couleur hexadécimale
public
validateHexColor(string $color) : bool
Le format accepté est strictement #RRGGBB (six chiffres hexadécimaux, casse
indifférente) ; les notations courtes #RGB et les valeurs avec canal alpha sont
rejetées.
Parameters
- $color : string
-
Valeur de couleur à contrôler.
Return values
bool —true si la chaîne respecte le format #RRGGBB.
validateLogoFile()
Valide un fichier de logo
private
validateLogoFile(UploadedFile $file) : void
Applique trois contrôles successifs : taille maximale de 2 Mo, type MIME dans la
liste image/jpeg, image/jpg, image/png, image/gif, image/svg+xml, et
extension devinée parmi jpg, jpeg, png, gif, svg. Aucun effet de bord.
Parameters
- $file : UploadedFile
-
Fichier téléversé à contrôler.