93 lines
3.9 KiB
PHP
93 lines
3.9 KiB
PHP
|
|
<?php
|
|||
|
|
/**
|
|||
|
|
* Исправление пути документа 397340 в проекте 396447
|
|||
|
|
*
|
|||
|
|
* Проблема: документ 397340 имеет путь с префиксом 'crm2/CRM_Active_Files/',
|
|||
|
|
* а остальные документы проекта имеют путь БЕЗ этого префикса.
|
|||
|
|
*
|
|||
|
|
* Решение: убрать префикс 'crm2/CRM_Active_Files/' из s3_key для единообразия.
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
require_once '/var/www/fastuser/data/www/crm.clientright.ru/config.inc.php';
|
|||
|
|
|
|||
|
|
$pdo = new PDO(
|
|||
|
|
"mysql:host={$dbconfig['db_server']};port=3306;dbname={$dbconfig['db_name']};charset=utf8mb4",
|
|||
|
|
$dbconfig['db_username'],
|
|||
|
|
$dbconfig['db_password'],
|
|||
|
|
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
$notesId = 397340;
|
|||
|
|
$dryRun = false; // Изменить на false для реального исправления
|
|||
|
|
|
|||
|
|
echo "=== ИСПРАВЛЕНИЕ ПУТИ ДОКУМЕНТА 397340 ===\n\n";
|
|||
|
|
|
|||
|
|
// Получаем текущие данные документа
|
|||
|
|
$sql = "SELECT notesid, title, s3_key, s3_bucket, filename FROM vtiger_notes WHERE notesid = ?";
|
|||
|
|
$stmt = $pdo->prepare($sql);
|
|||
|
|
$stmt->execute([$notesId]);
|
|||
|
|
$doc = $stmt->fetch(PDO::FETCH_ASSOC);
|
|||
|
|
|
|||
|
|
if (!$doc) {
|
|||
|
|
die("❌ Документ $notesId не найден!\n");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "📄 Документ: {$doc['title']}\n";
|
|||
|
|
echo " ID: {$doc['notesid']}\n";
|
|||
|
|
echo " Текущий s3_key: {$doc['s3_key']}\n\n";
|
|||
|
|
|
|||
|
|
// Проверяем, есть ли префикс
|
|||
|
|
if (strpos($doc['s3_key'], 'crm2/CRM_Active_Files/') === 0) {
|
|||
|
|
// Убираем префикс
|
|||
|
|
$newS3Key = str_replace('crm2/CRM_Active_Files/', '', $doc['s3_key']);
|
|||
|
|
|
|||
|
|
echo "✅ Найден префикс 'crm2/CRM_Active_Files/'\n";
|
|||
|
|
echo " Новый s3_key: $newS3Key\n\n";
|
|||
|
|
|
|||
|
|
// Проверяем остальные документы проекта для сравнения
|
|||
|
|
$sql2 = "SELECT notesid, s3_key FROM vtiger_notes n
|
|||
|
|
INNER JOIN vtiger_senotesrel snr ON snr.notesid = n.notesid
|
|||
|
|
WHERE snr.crmid = 396447 AND n.notesid != ? AND n.s3_key IS NOT NULL
|
|||
|
|
LIMIT 3";
|
|||
|
|
$stmt2 = $pdo->prepare($sql2);
|
|||
|
|
$stmt2->execute([$notesId]);
|
|||
|
|
$others = $stmt2->fetchAll(PDO::FETCH_ASSOC);
|
|||
|
|
|
|||
|
|
echo "📊 Сравнение с другими документами проекта:\n";
|
|||
|
|
foreach ($others as $other) {
|
|||
|
|
echo " ID {$other['notesid']}: {$other['s3_key']}\n";
|
|||
|
|
}
|
|||
|
|
echo "\n";
|
|||
|
|
|
|||
|
|
// Обновляем filename тоже (если там есть полный URL)
|
|||
|
|
$newFilename = $doc['filename'];
|
|||
|
|
if (strpos($doc['filename'], 'crm2/CRM_Active_Files/') !== false) {
|
|||
|
|
$newFilename = str_replace('crm2/CRM_Active_Files/', '', $doc['filename']);
|
|||
|
|
// Если это полный URL, пересобираем его
|
|||
|
|
if (strpos($newFilename, 'https://') === false && $doc['s3_bucket']) {
|
|||
|
|
$newFilename = "https://s3.twcstorage.ru/{$doc['s3_bucket']}/" . rawurlencode($newS3Key);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!$dryRun) {
|
|||
|
|
echo "🔧 ПРИМЕНЯЕМ ИСПРАВЛЕНИЕ...\n\n";
|
|||
|
|
|
|||
|
|
$updateSql = "UPDATE vtiger_notes SET s3_key = ?, filename = ? WHERE notesid = ?";
|
|||
|
|
$updateStmt = $pdo->prepare($updateSql);
|
|||
|
|
$updateStmt->execute([$newS3Key, $newFilename, $notesId]);
|
|||
|
|
|
|||
|
|
echo "✅ Документ обновлён!\n";
|
|||
|
|
echo " Новый s3_key: $newS3Key\n";
|
|||
|
|
echo " Новый filename: " . substr($newFilename, 0, 100) . "...\n";
|
|||
|
|
} else {
|
|||
|
|
echo "⚠️ РЕЖИМ ПРОВЕРКИ (dry-run)\n";
|
|||
|
|
echo " Для применения изменений установите \$dryRun = false\n";
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
echo "ℹ️ Префикс 'crm2/CRM_Active_Files/' не найден в пути.\n";
|
|||
|
|
echo " Документ уже в правильном формате.\n";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
echo "\n=== ГОТОВО ===\n";
|
|||
|
|
|