From 109dce3f2618e4bcc01ed5c2d4cc11ae4463c951 Mon Sep 17 00:00:00 2001 From: Jukka Lampikoski Date: Fri, 13 Mar 2026 00:54:11 +0200 Subject: [PATCH] Nopeuta Zammad-sync: artikkelit haetaan vasta kun tiketti avataan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sync hakee nyt vain tikettien metatiedot (status, aihe, ryhmä) — ei enää satoja getArticles-kutsuja jokaiselle tiketille. Artikkelit haetaan on-demand ticket_detail-endpointissa kun käyttäjä avaa tiketin. Nopeuttaa synkkausta dramaattisesti. Co-Authored-By: Claude Opus 4.6 --- api.php | 48 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/api.php b/api.php index 164c8ad..bcbe4ba 100644 --- a/api.php +++ b/api.php @@ -3068,6 +3068,40 @@ switch ($action) { echo json_encode(['error' => 'Tikettiä ei löydy']); break; } + // Zammad-tiketti: hae artikkelit on-demand jos ei vielä haettu + if (!empty($ticket['zammad_ticket_id']) && empty($ticket['messages'])) { + try { + $integ = dbGetIntegration($companyId, 'zammad'); + if ($integ && $integ['enabled']) { + $z = new ZammadClient($integ['config']['url'], $integ['config']['token']); + $articles = $z->getArticles((int)$ticket['zammad_ticket_id']); + foreach ($articles as $art) { + if (($art['internal'] ?? false)) continue; + $artId = (int)$art['id']; + $existingMsg = dbGetMessageByZammadArticleId($ticket['id'], $artId); + if ($existingMsg) continue; + $msgId = substr(uniqid(), -8) . bin2hex(random_bytes(2)); + $msgType = ($art['sender'] ?? '') === 'Customer' ? 'incoming' : 'outgoing'; + $body = $art['body'] ?? ''; + if (($art['content_type'] ?? '') === 'text/html') { + $body = strip_tags($body, '