connect_error) { die("Connection failed: " . $mysqli->connect_error); } $mysqli->set_charset("utf8"); echo "=== ПРОБЛЕМНЫЕ ФАЙЛЫ ===\n"; echo "Дата отчета: " . date('Y-m-d H:i:s') . "\n\n"; // Получаем все файлы с префиксом [PROBLEM_] $query = "SELECT notesid, filename, filesize, filetype, filelocationtype FROM vtiger_notes WHERE filename LIKE '[PROBLEM_%' ORDER BY notesid ASC"; $result = $mysqli->query($query); if (!$result) { die("Query failed: " . $mysqli->error); } $problematicFiles = []; while ($row = $result->fetch_assoc()) { $problematicFiles[] = $row; } echo "Всего проблемных файлов: " . count($problematicFiles) . "\n\n"; if (empty($problematicFiles)) { echo "Проблемных файлов не найдено.\n"; $mysqli->close(); exit(0); } // Группируем по дате создания проблемы $groupedByDate = []; foreach ($problematicFiles as $file) { if (preg_match('/\[PROBLEM_(\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2})\]/', $file['filename'], $matches)) { $problemDate = $matches[1]; $groupedByDate[$problemDate][] = $file; } } echo "ГРУППИРОВКА ПО ДАТЕ ПРОБЛЕМЫ:\n"; foreach ($groupedByDate as $date => $files) { echo " $date: " . count($files) . " файлов\n"; } echo "\n"; echo "ДЕТАЛЬНЫЙ СПИСОК:\n"; echo sprintf("%-8s %-50s %-10s %-25s %s\n", "ID", "Original Filename", "Size", "Type", "Problem Date"); echo str_repeat("-", 120) . "\n"; foreach ($problematicFiles as $file) { // Извлекаем оригинальное имя файла $originalFilename = preg_replace('/\[PROBLEM_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\] /', '', $file['filename']); // Извлекаем дату проблемы $problemDate = ''; if (preg_match('/\[PROBLEM_(\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2})\]/', $file['filename'], $matches)) { $problemDate = $matches[1]; } echo sprintf("%-8s %-50s %-10s %-25s %s\n", $file['notesid'], substr($originalFilename, 0, 47) . (strlen($originalFilename) > 47 ? '...' : ''), $file['filesize'], substr($file['filetype'], 0, 22) . (strlen($file['filetype']) > 22 ? '...' : ''), $problemDate ); } echo "\n"; echo "РЕКОМЕНДАЦИИ ПО ОБРАБОТКЕ:\n"; echo "1. Проверить физическое существование файлов на диске\n"; echo "2. Найти файлы с похожими именами или ID\n"; echo "3. Принять решение: удалить, архивировать или восстановить\n"; echo "4. Использовать SQL для массовых операций:\n"; echo " - Удаление: DELETE FROM vtiger_notes WHERE filename LIKE '[PROBLEM_%'\n"; echo " - Архивирование: UPDATE vtiger_notes SET filelocationtype = 'A' WHERE filename LIKE '[PROBLEM_%'\n"; echo " - Восстановление: UPDATE vtiger_notes SET filename = REPLACE(filename, '[PROBLEM_YYYY-MM-DD_HH-MM-SS] ', '') WHERE filename LIKE '[PROBLEM_%'\n"; $mysqli->close(); ?>