diff --git a/api.php b/api.php index c5a572c..b2e08a1 100644 --- a/api.php +++ b/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;