Files
crm.clientright.ru/crm_extensions/file_storage/get_problematic_files.php

96 lines
3.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

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
/**
* Get Problematic Files Report
*
* Этот скрипт выводит список файлов, помеченных как проблемные
*/
require_once '/var/www/fastuser/data/www/crm.clientright.ru/config.inc.php';
// Подключение к базе данных
$mysqli = new mysqli($dbconfig['db_server'], $dbconfig['db_username'], $dbconfig['db_password'], $dbconfig['db_name']);
if ($mysqli->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();
?>