Files
crm.clientright.ru/crm_extensions/file_storage/fix_document_397340_path.php
Fedor cd90b0d58a feat: Добавлен инструмент генерации документов для AI Ассистента
- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI
- Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код)
- Установлен PHPWord для красивого форматирования документов
- Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале)
- Замена пробелов на подчеркивания в именах папок
- Создана документация для AI и разработчиков
- Добавлены API для работы с шаблонами Nextcloud
2025-11-12 19:46:06 +03:00

93 lines
3.9 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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";