| Current Path : /home/seto/888mirror.pm/admin/ |
| Current File : /home/seto/888mirror.pm/admin/landing_generate.php |
<?php
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/openai.php';
auth_check();
header('Content-Type: application/json');
$action = $_POST['action'] ?? 'generate';
$landing_id = (int)($_POST['landing_id'] ?? 0);
if (!$landing_id) {
echo json_encode(['error' => 'Неверные параметры.']);
exit();
}
$landing = db()->prepare("SELECT * FROM landings WHERE id = ?");
$landing->execute([$landing_id]);
$landing = $landing->fetch();
if (!$landing) {
echo json_encode(['error' => 'Лендинг не найден.']);
exit();
}
// Загрузить существующий перевод для языка
if ($action === 'load') {
$lang = trim($_POST['lang'] ?? '');
if (!$lang) { echo json_encode(['error' => 'Язык не указан.']); exit(); }
$row = db()->prepare("SELECT * FROM landing_translations WHERE landing_id=? AND language_code=?");
$row->execute([$landing_id, $lang]);
$t = $row->fetch();
echo json_encode(['success' => true, 'translation' => $t ?: null]);
exit();
}
// Сохранить перевод вручную
if ($action === 'save') {
$lang = trim($_POST['lang'] ?? '');
if (!$lang) { echo json_encode(['error' => 'Язык не указан.']); exit(); }
$data = [
$lang => [
'h1' => trim($_POST['h1'] ?? ''),
'subtitle' => trim($_POST['subtitle'] ?? ''),
'cta_text' => trim($_POST['cta_text'] ?? ''),
'body_text' => trim($_POST['body_text'] ?? ''),
'meta_title' => trim($_POST['meta_title'] ?? ''),
'meta_description' => trim($_POST['meta_description'] ?? ''),
'footer_text' => trim($_POST['footer_text'] ?? ''),
],
];
openai_save_landing_translations($landing_id, $data);
echo json_encode(['success' => true]);
exit();
}
// Генерация через OpenAI
$langs = array_filter(array_map('trim', explode(',', $_POST['langs'] ?? '')));
if (empty($langs)) {
echo json_encode(['error' => 'Нет языков для генерации.']);
exit();
}
// Только активные языки
$active = db()->query("SELECT code FROM languages WHERE is_active = 1")->fetchAll(PDO::FETCH_COLUMN);
$langs = array_values(array_intersect($langs, $active));
if (empty($langs)) {
echo json_encode(['error' => 'Нет активных языков для генерации.']);
exit();
}
try {
$chunks = array_chunk($langs, 6);
$all_data = [];
foreach ($chunks as $chunk) {
$chunk_data = openai_generate_landing($landing['name'], $landing['geo'], $landing['template'], $chunk);
openai_save_landing_translations($landing_id, $chunk_data);
$all_data = array_merge($all_data, $chunk_data);
}
echo json_encode(['success' => true, 'data' => $all_data]);
} catch (RuntimeException $e) {
echo json_encode(['error' => $e->getMessage()]);
}