<?php
require_once '../config/database.php';
require_once '../includes/functions.php';
require_once '../includes/mailketing.php';
startSecureSession();
// Check if user is logged in and is admin
requireRole('admin', 'login.php');
$message = '';
$messageType = '';
// Handle form submissions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$csrf_token = $_POST['csrf_token'] ?? '';
if (!verifyCSRFToken($csrf_token)) {
$message = 'Token keamanan tidak valid.';
$messageType = 'error';
} else {
$action = $_POST['action'] ?? '';
switch ($action) {
case 'select_list':
$selected_list_id = $_POST['list_id'] ?? '';
$selected_list_name = $_POST['list_name'] ?? '';
if (empty($selected_list_id)) {
$message = 'List ID tidak boleh kosong';
$messageType = 'error';
} else {
// Update settings
if (updateSetting('mailketing_list_id', $selected_list_id) &&
updateSetting('mailketing_selected_list_name', $selected_list_name)) {
$message = 'List Mailketing berhasil dipilih: ' . htmlspecialchars($selected_list_name);
$messageType = 'success';
} else {
$message = 'Gagal menyimpan pilihan list';
$messageType = 'error';
}
}
break;
}
}
}
// Get current settings
$currentListId = getSetting('mailketing_list_id', '');
$currentListName = getSetting('mailketing_selected_list_name', '');
$apiToken = getSetting('mailketing_api_token', '');
// Get lists from Mailketing
$lists = [];
$listsError = '';
if (!empty($apiToken)) {
$mailketing = new MailketingAPI();
$result = $mailketing->getAllLists();
if ($result['status'] === 'success') {
$lists = $result['data'];
} else {
$listsError = $result['message'];
}
} else {
$listsError = 'API Token Mailketing belum dikonfigurasi. Silakan atur di halaman Pengaturan.';
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mailketing Lists - <?php echo getSetting('site_name', 'Panel Digital'); ?></title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
'blue-primary': '#1e40af',
'blue-secondary': '#3b82f6'
}
}
}
}
</script>
</head>
<body class="bg-gray-100">
<div class="min-h-screen bg-gray-50 py-8">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<!-- Header -->
<div class="mb-8">
<div class="flex items-center justify-between">
<div>
<h1 class="text-3xl font-bold text-gray-900">Mailketing Lists</h1>
<p class="mt-2 text-gray-600">Pilih list Mailketing untuk sinkronisasi user</p>
</div>
<a href="dashboard.php?page=settings" class="bg-blue-primary hover:bg-blue-dark text-white px-4 py-2 rounded-lg transition duration-200">
<i class="fas fa-cog mr-2"></i>
Pengaturan
</a>
</div>
</div>
<!-- Messages -->
<?php if ($message): ?>
<div class="mb-6 p-4 rounded-lg <?php echo $messageType === 'success' ? 'bg-green-50 border border-green-200 text-green-800' : 'bg-red-50 border border-red-200 text-red-800'; ?>">
<div class="flex items-center">
<i class="fas <?php echo $messageType === 'success' ? 'fa-check-circle' : 'fa-exclamation-triangle'; ?> mr-2"></i>
<?php echo htmlspecialchars($message); ?>
</div>
</div>
<?php endif; ?>
<!-- Current Selection -->
<?php if (!empty($currentListId)): ?>
<div class="mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg">
<div class="flex items-center">
<i class="fas fa-info-circle text-blue-600 mr-2"></i>
<div>
<p class="text-blue-800 font-medium">List yang dipilih saat ini:</p>
<p class="text-blue-700"><?php echo htmlspecialchars($currentListName ?: $currentListId); ?> (ID: <?php echo htmlspecialchars($currentListId); ?>)</p>
</div>
</div>
</div>
<?php endif; ?>
<!-- Lists Content -->
<div class="bg-white rounded-lg shadow-sm border border-gray-200">
<div class="p-6 border-b border-gray-200">
<h3 class="text-lg font-semibold text-gray-900 flex items-center">
<i class="fas fa-list text-orange-500 mr-2"></i>
Daftar List Mailketing
</h3>
</div>
<div class="p-6">
<?php if ($listsError): ?>
<div class="text-center py-8">
<div class="text-red-500 mb-4">
<i class="fas fa-exclamation-triangle text-4xl"></i>
</div>
<h3 class="text-lg font-medium text-gray-900 mb-2">Error Mengambil Data</h3>
<p class="text-gray-600 mb-4"><?php echo htmlspecialchars($listsError); ?></p>
<?php if (empty($apiToken)): ?>
<a href="dashboard.php?page=settings" class="bg-blue-primary hover:bg-blue-dark text-white px-4 py-2 rounded-lg transition duration-200">
<i class="fas fa-cog mr-2"></i>
Atur API Token
</a>
<?php else: ?>
<button onclick="location.reload()" class="bg-blue-primary hover:bg-blue-dark text-white px-4 py-2 rounded-lg transition duration-200">
<i class="fas fa-refresh mr-2"></i>
Coba Lagi
</button>
<?php endif; ?>
</div>
<?php elseif (empty($lists)): ?>
<div class="text-center py-8">
<div class="text-gray-400 mb-4">
<i class="fas fa-inbox text-4xl"></i>
</div>
<h3 class="text-lg font-medium text-gray-900 mb-2">Tidak Ada List</h3>
<p class="text-gray-600">Tidak ada list yang ditemukan di akun Mailketing Anda.</p>
</div>
<?php else: ?>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
<?php foreach ($lists as $list): ?>
<div class="border border-gray-200 rounded-lg p-4 hover:shadow-md transition duration-200 <?php echo $list['list_id'] === $currentListId ? 'ring-2 ring-blue-primary bg-blue-50' : ''; ?>">
<div class="flex items-start justify-between mb-3">
<div class="flex-1">
<h4 class="font-medium text-gray-900 mb-1"><?php echo htmlspecialchars($list['list_name']); ?></h4>
<p class="text-sm text-gray-600">ID: <?php echo htmlspecialchars($list['list_id']); ?></p>
</div>
<?php if ($list['list_id'] === $currentListId): ?>
<span class="bg-blue-100 text-blue-800 text-xs font-medium px-2 py-1 rounded">
<i class="fas fa-check mr-1"></i>
Dipilih
</span>
<?php endif; ?>
</div>
<?php if ($list['list_id'] !== $currentListId): ?>
<form method="POST" class="mt-3">
<input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">
<input type="hidden" name="action" value="select_list">
<input type="hidden" name="list_id" value="<?php echo htmlspecialchars($list['list_id']); ?>">
<input type="hidden" name="list_name" value="<?php echo htmlspecialchars($list['list_name']); ?>">
<button type="submit" class="w-full bg-orange-500 hover:bg-orange-600 text-white text-sm font-medium py-2 px-3 rounded transition duration-200">
<i class="fas fa-check mr-1"></i>
Pilih List Ini
</button>
</form>
<?php else: ?>
<div class="mt-3 text-center text-sm text-blue-600 font-medium">
<i class="fas fa-star mr-1"></i>
List Aktif
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<div class="mt-6 p-4 bg-gray-50 border border-gray-200 rounded-lg">
<h5 class="text-sm font-medium text-gray-800 mb-2">Informasi:</h5>
<ul class="text-xs text-gray-600 space-y-1">
<li>• Pilih list dimana user akan disimpan saat sinkronisasi</li>
<li>• Hanya satu list yang dapat dipilih dalam satu waktu</li>
<li>• User baru akan otomatis ditambahkan ke list yang dipilih (jika auto sync aktif)</li>
<li>• Anda dapat mengubah pilihan list kapan saja</li>
</ul>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
</body>
</html>