feat(branding): v2.7.0 logo specifique optionnel pour UCP avec repli sur logo principal ou NexusPBX
This commit is contained in:
1 parent
ddbaabb657
commit
ba04af32bb
7 files changed
+130
-32
No files matched your search
+40
-17
@@ -1802,30 +1802,53 @@ try {
|
||||
case 'save_company_branding':
|
||||
$company_name = trim((string)($payload['company_name'] ?? ''));
|
||||
$company_logo = trim((string)($payload['company_logo'] ?? ''));
|
||||
$ucp_logo = trim((string)($payload['ucp_logo'] ?? ''));
|
||||
|
||||
if ($company_logo !== '' && !preg_match('/^data:image\/(png|jpeg|jpg|webp|svg\+xml|gif);base64,/i', $company_logo)) {
|
||||
throw new InvalidArgumentException("Format d'image invalide (utilisez PNG, SVG, JPG ou WebP).");
|
||||
}
|
||||
if (strlen($company_logo) > 2 * 1024 * 1024) {
|
||||
throw new InvalidArgumentException("Le logo est trop volumineux (max 1.5 Mo).");
|
||||
foreach (['company_logo' => $company_logo, 'ucp_logo' => $ucp_logo] as $fieldKey => $logoVal) {
|
||||
if (!array_key_exists($fieldKey, $payload)) {
|
||||
continue;
|
||||
}
|
||||
if ($logoVal !== '' && !preg_match('/^data:image\/(png|jpeg|jpg|webp|svg\+xml|gif);base64,/i', $logoVal)) {
|
||||
throw new InvalidArgumentException("Format d'image invalide (utilisez PNG, SVG, JPG ou WebP).");
|
||||
}
|
||||
if (strlen($logoVal) > 2 * 1024 * 1024) {
|
||||
throw new InvalidArgumentException("Le logo est trop volumineux (max 1.5 Mo).");
|
||||
}
|
||||
}
|
||||
|
||||
if (array_key_exists('company_name', $payload) && array_key_exists('company_logo', $payload)) {
|
||||
$stmt = $db->prepare('UPDATE settings SET company_name = :cn, company_logo = :cl, updated_at = CURRENT_TIMESTAMP WHERE id = 1');
|
||||
$stmt->execute([':cn' => $company_name, ':cl' => $company_logo]);
|
||||
} elseif (array_key_exists('company_logo', $payload)) {
|
||||
$stmt = $db->prepare('UPDATE settings SET company_logo = :cl, updated_at = CURRENT_TIMESTAMP WHERE id = 1');
|
||||
$stmt->execute([':cl' => $company_logo]);
|
||||
} elseif (array_key_exists('company_name', $payload)) {
|
||||
$stmt = $db->prepare('UPDATE settings SET company_name = :cn, updated_at = CURRENT_TIMESTAMP WHERE id = 1');
|
||||
$stmt->execute([':cn' => $company_name]);
|
||||
$sets = [];
|
||||
$params = [];
|
||||
if (array_key_exists('company_name', $payload)) {
|
||||
$sets[] = 'company_name = :cn';
|
||||
$params[':cn'] = $company_name;
|
||||
}
|
||||
if (array_key_exists('company_logo', $payload)) {
|
||||
$sets[] = 'company_logo = :cl';
|
||||
$params[':cl'] = $company_logo;
|
||||
}
|
||||
if (array_key_exists('ucp_logo', $payload)) {
|
||||
$sets[] = 'ucp_logo = :ul';
|
||||
$params[':ul'] = $ucp_logo;
|
||||
}
|
||||
|
||||
if ($sets) {
|
||||
$sets[] = 'updated_at = CURRENT_TIMESTAMP';
|
||||
$stmt = $db->prepare('UPDATE settings SET ' . implode(', ', $sets) . ' WHERE id = 1');
|
||||
$stmt->execute($params);
|
||||
}
|
||||
|
||||
$msg = 'Logo et identité entreprise mis à jour sur NexusPBX !';
|
||||
if (array_key_exists('ucp_logo', $payload) && !array_key_exists('company_logo', $payload) && !array_key_exists('company_name', $payload)) {
|
||||
$msg = $ucp_logo === ''
|
||||
? 'Logo UCP réinitialisé (hérite du logo principal).'
|
||||
: 'Logo spécifique UCP mis à jour !';
|
||||
} elseif (array_key_exists('company_logo', $payload) && $company_logo === '' && !array_key_exists('company_name', $payload) && !array_key_exists('ucp_logo', $payload)) {
|
||||
$msg = 'Logo entreprise réinitialisé.';
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => $company_logo === '' && !array_key_exists('company_name', $payload)
|
||||
? 'Logo entreprise réinitialisé.'
|
||||
: 'Logo et identité entreprise mis à jour sur NexusPBX !',
|
||||
'message' => $msg,
|
||||
]);
|
||||
break;
|
||||
|
||||
|
||||
Reference in new issue
Block a user