Your IP : 216.73.217.78


Current Path : /home/seto/888mirror.pm/admin/
Upload File :
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()]);
}