false, 'ERROR' => 'method_not_allowed'], 405); } $channelId = (int) ($_GET['ChannelID'] ?? 0); if ($channelId <= 0) jsonResponse(['OK' => false, 'ERROR' => 'channel_id_required']); $rows = queryTimed( "SELECT p.*, m.SenderAddress, m.Content, m.CreatedAt AS MessageCreatedAt, m.IsEdited FROM Hub_PinnedPosts p JOIN Hub_Messages m ON m.ID = p.MessageID WHERE p.ChannelID = ? AND m.IsDeleted = 0 ORDER BY p.CreatedAt DESC", [$channelId] ); $pins = []; foreach ($rows as $r) { $pins[] = [ 'PinID' => (int) $r['ID'], 'MessageID' => (int) $r['MessageID'], 'ChannelID' => (int) $r['ChannelID'], 'PinnedBy' => $r['PinnedBy'], 'PinnedAt' => toISO8601($r['CreatedAt']), 'Message' => [ 'SenderAddress' => $r['SenderAddress'], 'Content' => $r['Content'], 'IsEdited' => (bool) $r['IsEdited'], 'CreatedAt' => toISO8601($r['MessageCreatedAt']), ], ]; } jsonResponse(['OK' => true, 'PinnedPosts' => $pins]);