From 43e54a55c066fbd2d97c91fffe2efd4330baef32 Mon Sep 17 00:00:00 2001 From: lizandrogd <77708265+lizandrogd@users.noreply.github.com> Date: Wed, 21 Jan 2026 12:37:26 -0500 Subject: [PATCH] up --- api/get_conversation_detail.php | 67 +++++++++++++++++++++++---------- api/get_user_messages.php | 18 ++++++++- conversations.php | 21 +++++++++-- index.php | 2 +- 4 files changed, 84 insertions(+), 24 deletions(-) diff --git a/api/get_conversation_detail.php b/api/get_conversation_detail.php index 77420af..6d64a35 100644 --- a/api/get_conversation_detail.php +++ b/api/get_conversation_detail.php @@ -63,25 +63,54 @@ try { // Formatear mensajes $conversations = array_map(function($msg) { - return [ - 'id' => intval($msg['id']), - 'message_id' => $msg['message_id'] ?? '', - 'direction' => $msg['direction'], - 'message_type' => $msg['message_type'], - 'content' => $msg['content'] ?? '', - 'media_url' => null, - 'local_file' => $msg['local_file'] ?? null, - 'local_thumb' => $msg['local_thumb'] ?? null, - 'media_url_external' => (isset($msg['media_url']) && $msg['media_url']) ? (preg_match('#^https?://#i', $msg['media_url']) ? $msg['media_url'] : ("api/get_media.php?id=" . urlencode($msg['media_url']))) : null, - 'filename' => $msg['filename'] ?? null, - 'mime_type' => $msg['mime_type'] ?? null, - 'status' => $msg['status'] ?? 'sent', - 'created_at' => $msg['created_at'], - 'time' => date('H:i', strtotime($msg['created_at'])), - 'date' => date('d/m/Y', strtotime($msg['created_at'])) - ]; - }, $conversations); - + // Build external URL if available (media id -> api/get_media proxy) + $external = (isset($msg['media_url']) && $msg['media_url']) ? (preg_match('#^https?://#i', $msg['media_url']) ? $msg['media_url'] : ("api/get_media.php?id=" . urlencode($msg['media_url']))) : null; + + // Fallback: if no external URL but content is JSON with link, extract it + $contentStr = $msg['content'] ?? ''; + if (!$external && $contentStr) { + $j = json_decode($contentStr, true); + if (is_array($j)) { + // Look for common shapes: image.link, image.url, document.link, audio.link + $candidates = []; + foreach (['image','document','audio','video'] as $k) { + if (isset($j[$k]) && is_array($j[$k])) { + if (!empty($j[$k]['link'])) $candidates[] = $j[$k]['link']; + if (!empty($j[$k]['url'])) $candidates[] = $j[$k]['url']; + if (!empty($j[$k]['id'])) $candidates[] = $j[$k]['id']; + } + } + // also top-level 'link' + if (!empty($j['link'])) $candidates[] = $j['link']; + // first valid candidate wins + foreach ($candidates as $cand) { + if ($cand) { + // if looks like id or url + $external = preg_match('#^https?://#i', $cand) ? $cand : (strpos($cand, 'http') === false ? "api/get_media.php?id=" . urlencode($cand) : $cand); + break; + } + } + } + } + + return [ + 'id' => intval($msg['id']), + 'message_id' => $msg['message_id'] ?? '', + 'direction' => $msg['direction'], + 'message_type' => $msg['message_type'], + 'content' => $msg['content'] ?? '', + 'media_url' => null, + 'local_file' => $msg['local_file'] ?? null, + 'local_thumb' => $msg['local_thumb'] ?? null, + 'media_url_external' => $external, + 'filename' => $msg['filename'] ?? null, + 'mime_type' => $msg['mime_type'] ?? null, + 'status' => $msg['status'] ?? 'sent', + 'created_at' => $msg['created_at'], + 'time' => date('H:i', strtotime($msg['created_at'])), + 'date' => date('d/m/Y', strtotime($msg['created_at'])) + ]; + }, $conversations); // Marcar mensajes como leídos $db->query( "UPDATE conversations SET status = 'read' WHERE user_id = ? AND direction = 'incoming' AND status != 'read'", diff --git a/api/get_user_messages.php b/api/get_user_messages.php index 013adda..9b96216 100644 --- a/api/get_user_messages.php +++ b/api/get_user_messages.php @@ -81,6 +81,22 @@ try { // Formatear fechas y limpiar datos $conversations = array_map(function($msg) { + $external = (isset($msg['media_url']) && $msg['media_url']) ? (preg_match('#^https?://#i', $msg['media_url']) ? $msg['media_url'] : ("api/get_media.php?id=" . urlencode($msg['media_url']))) : null; + $contentStr = $msg['content'] ?? ''; + if (!$external && $contentStr) { + $j = json_decode($contentStr, true); + if (is_array($j)) { + foreach (['image','document','audio','video'] as $k) { + if (isset($j[$k]) && is_array($j[$k])) { + if (!empty($j[$k]['link'])) { $external = $j[$k]['link']; break; } + if (!empty($j[$k]['url'])) { $external = $j[$k]['url']; break; } + if (!empty($j[$k]['id'])) { $external = "api/get_media.php?id=" . urlencode($j[$k]['id']); break; } + } + } + if (!$external && !empty($j['link'])) $external = $j['link']; + } + } + return [ 'id' => intval($msg['id']), 'user_id' => intval($msg['user_id']), @@ -89,7 +105,7 @@ try { 'media_url' => null, 'local_file' => $msg['local_file'] ?? null, 'local_thumb' => $msg['local_thumb'] ?? null, - 'media_url_external' => (isset($msg['media_url']) && $msg['media_url']) ? (preg_match('#^https?://#i', $msg['media_url']) ? $msg['media_url'] : ("api/get_media.php?id=" . urlencode($msg['media_url']))) : null, + 'media_url_external' => $external, 'filename' => $msg['filename'] ?? null, 'mime_type' => $msg['mime_type'] ?? null, 'user_phone' => $msg['user_phone'] ?? null, diff --git a/conversations.php b/conversations.php index 57bc31a..15c0f3f 100644 --- a/conversations.php +++ b/conversations.php @@ -1378,7 +1378,9 @@ } return `
${caption ? `