Lisää oletusallekirjoitus kaikille käyttäjille
Jos käyttäjä ei ole asettanut omaa allekirjoitusta mailboxille, generoidaan automaattisesti oletus: Etunimi Yrityksen nimi Postilaatikon sähköpostiosoite Toimii sekä esikatselu-previewssä että sähköpostin lähetyksessä. Käyttäjä voi yliajaa oletuksen tallentamalla oman allekirjoituksen profiilin kautta. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
34
api.php
34
api.php
@@ -568,6 +568,31 @@ function sendTelegramAlert(string $companyId, array $ticket): void {
|
||||
curl_close($ch);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generoi oletusallekirjoitukset käyttäjälle niille mailboxeille joille ei ole omaa.
|
||||
* Palauttaa yhdistetyn allekirjoitukset-arrayn (omat + generoitut oletukset).
|
||||
*/
|
||||
function buildSignaturesWithDefaults(array $user, array $userCompanyIds): array {
|
||||
$sigs = $user['signatures'] ?? [];
|
||||
$allCompanies = dbLoadCompanies();
|
||||
foreach ($allCompanies as $comp) {
|
||||
if (!in_array($comp['id'], $userCompanyIds)) continue;
|
||||
$mailboxes = dbLoadMailboxes($comp['id']);
|
||||
foreach ($mailboxes as $mb) {
|
||||
if (!empty($sigs[$mb['id']])) continue; // käyttäjällä on jo oma allekirjoitus
|
||||
// Generoi oletus: Etunimi \n Yritys \n sähköposti
|
||||
$etunimi = trim(explode(' ', $user['nimi'] ?? '')[0]);
|
||||
$yritys = $comp['nimi'] ?? '';
|
||||
$email = $mb['smtp_from_email'] ?? $mb['imap_user'] ?? '';
|
||||
$parts = array_filter([$etunimi, $yritys, $email]);
|
||||
if (!empty($parts)) {
|
||||
$sigs[$mb['id']] = implode("\n", $parts);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $sigs;
|
||||
}
|
||||
|
||||
function sendTicketMail(string $to, string $subject, string $body, string $inReplyTo = '', string $references = '', ?array $mailbox = null, string $cc = ''): bool {
|
||||
$fromEmail = $mailbox['smtp_from_email'] ?? $mailbox['imap_user'] ?? MAIL_FROM;
|
||||
$fromName = $mailbox['smtp_from_name'] ?? $mailbox['nimi'] ?? 'Asiakaspalvelu';
|
||||
@@ -1059,7 +1084,7 @@ switch ($action) {
|
||||
'role' => $u['role'],
|
||||
'companies' => $companyList,
|
||||
'company_id' => $_SESSION['company_id'],
|
||||
'signatures' => $u['signatures'] ?? [],
|
||||
'signatures' => buildSignaturesWithDefaults($u, $u['companies'] ?? []),
|
||||
]);
|
||||
} else {
|
||||
dbRecordLoginAttempt($ip);
|
||||
@@ -1093,8 +1118,8 @@ switch ($action) {
|
||||
$companyList[] = ['id' => $comp['id'], 'nimi' => $comp['nimi']];
|
||||
}
|
||||
}
|
||||
// Hae allekirjoitukset
|
||||
$userSignatures = $u ? ($u['signatures'] ?? []) : [];
|
||||
// Hae allekirjoitukset (oletus generoituna jos omaa ei ole)
|
||||
$userSignatures = $u ? buildSignaturesWithDefaults($u, $u['companies'] ?? []) : [];
|
||||
// Brändäystiedot domain-pohjaisesti (sama kuin branding-endpoint)
|
||||
$host = strtolower(explode(':', $_SERVER['HTTP_HOST'] ?? '')[0]);
|
||||
$branding = dbGetBranding($host);
|
||||
@@ -2235,7 +2260,8 @@ switch ($action) {
|
||||
if (!$noSignature) {
|
||||
$sigUser = dbGetUser($_SESSION['user_id']);
|
||||
if ($sigUser) {
|
||||
$signature = trim($sigUser['signatures'][$mailboxId] ?? '');
|
||||
$allSigs = buildSignaturesWithDefaults($sigUser, $sigUser['companies'] ?? []);
|
||||
$signature = trim($allSigs[$mailboxId] ?? '');
|
||||
}
|
||||
}
|
||||
$emailBody = $signature ? $body . "\n\n-- \n" . $signature : $body;
|
||||
|
||||
Reference in New Issue
Block a user