'localhost', 'dbname' => 'ci20465_72new', 'user' => 'ci20465_72new', 'pass' => 'EcY979Rn' ]; try { $pdo = new PDO( "mysql:host={$dbConfig['host']};dbname={$dbConfig['dbname']};charset=utf8", $dbConfig['user'], $dbConfig['pass'] ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "✅ Подключено к БД\n\n"; } catch (PDOException $e) { die("❌ Ошибка подключения к БД: " . $e->getMessage() . "\n"); } echo "🔄 СИНХРОНИЗАЦИЯ БД С S3 КЛЮЧАМИ\n"; echo "==========================================\n\n"; // Получаем файлы с S3 ключами но старыми filename $stmt = $pdo->prepare(" SELECT notesid, title, filename, s3_key, s3_bucket FROM vtiger_notes WHERE s3_bucket IS NOT NULL AND s3_key IS NOT NULL AND filename LIKE '%crm2/CRM_Active_Files/Documents/%' LIMIT 10 "); $stmt->execute(); $files = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "📊 Найдено файлов для синхронизации: " . count($files) . "\n\n"; $stats = ['processed' => 0, 'updated' => 0, 'errors' => 0]; foreach ($files as $file) { $stats['processed']++; $notesId = $file['notesid']; $title = $file['title'] ?: "Без названия"; $oldFilename = $file['filename']; $s3Key = $file['s3_key']; $s3Bucket = $file['s3_bucket']; echo "[$stats[processed]] Документ: $title (ID: $notesId)\n"; echo " Старый filename: " . substr($oldFilename, 0, 80) . "...\n"; echo " S3 ключ: $s3Key\n"; // Формируем новый filename на основе S3 ключа $newFilename = "https://s3.twcstorage.ru/$s3Bucket/" . rawurlencode($s3Key); echo " Новый filename: " . substr($newFilename, 0, 80) . "...\n"; // Обновляем БД try { $updateStmt = $pdo->prepare("UPDATE vtiger_notes SET filename = ? WHERE notesid = ?"); $updateStmt->execute([$newFilename, $notesId]); $stats['updated']++; echo " ✅ Обновлено\n\n"; } catch (Exception $e) { echo " ❌ ОШИБКА: " . $e->getMessage() . "\n\n"; $stats['errors']++; } } // Итоги echo "\n==========================================\n"; echo "📊 СТАТИСТИКА:\n"; echo "==========================================\n"; echo "Обработано: $stats[processed]\n"; echo "Обновлено: $stats[updated]\n"; echo "Ошибок: $stats[errors]\n"; echo "\n"; if ($stats['errors'] == 0) { echo "✅ СИНХРОНИЗАЦИЯ ЗАВЕРШЕНА УСПЕШНО!\n"; echo "\n📁 Теперь БД указывает на правильные S3 ключи в структуре crm/crm2/\n"; } else { echo "⚠️ Синхронизация завершена с ошибками.\n"; } ?>