BCard - Documentation technique

LogoManagementService
in package

Read onlyYes

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

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.

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.

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.

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, ou null pour l'effacer.

$secondaryColor : string|null

Couleur secondaire au format #RRGGBB, ou null pour l'effacer.

Tags
throws
InvalidArgumentException

Si l'utilisateur n'a pas accès aux couleurs personnalisées ou si une couleur fournie n'est pas au format hexadécimal attendu.

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
throws
InvalidArgumentException

Si l'utilisateur n'a pas accès aux logos personnalisés, ou si le fichier est invalide (taille, type MIME, extension).

RuntimeException

Si le déplacement du fichier échoue (FileException interceptée et enveloppée).

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.

Tags
throws
InvalidArgumentException

Si la taille dépasse 2 Mo, si le type MIME n'est pas autorisé ou si l'extension n'est pas autorisée.


        
On this page

Search results