Files
crm.clientright.ru/crm_extensions/file_storage/check_project_396447.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

129 lines
3.9 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
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=utf8",
$dbconfig['db_username'],
$dbconfig['db_password'],
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$projectId = 396447;
// Получаем информацию о проекте
$sqlProject = "SELECT projectid, projectname, projectstatus FROM vtiger_project WHERE projectid = ?";
$stmtProject = $pdo->prepare($sqlProject);
$stmtProject->execute([$projectId]);
$project = $stmtProject->fetch(PDO::FETCH_ASSOC);
if (!$project) {
die("❌ Проект $projectId не найден!\n");
}
echo "📋 ПРОЕКТ: {$project['projectname']}\n";
echo " ID: {$project['projectid']}\n";
echo " Статус: {$project['projectstatus']}\n";
echo "\n" . str_repeat("=", 80) . "\n\n";
// Получаем документы проекта
$sql = "SELECT
n.notesid,
n.title,
n.filename,
n.filelocationtype,
n.foldername,
n.s3_key,
n.nc_path,
n.filesize,
e.createdtime,
e.modifiedtime,
u.user_name,
e.deleted
FROM vtiger_notes n
INNER JOIN vtiger_crmentity e ON e.crmid = n.notesid
INNER JOIN vtiger_senotesrel snr ON snr.notesid = n.notesid
LEFT JOIN vtiger_users u ON u.id = e.smownerid
WHERE snr.crmid = ? AND e.deleted = 0
ORDER BY e.createdtime DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute([$projectId]);
$documents = $stmt->fetchAll(PDO::FETCH_ASSOC);
$count = count($documents);
echo "📄 НАЙДЕНО ДОКУМЕНТОВ: $count\n\n";
if ($count == 0) {
echo "⚠️ Документы не найдены!\n";
exit;
}
$totalSize = 0;
$s3Count = 0;
$localCount = 0;
$brokenCount = 0;
foreach ($documents as $i => $doc) {
$num = $i + 1;
echo "[$num] ID: " . ($doc['notesid'] ?? 'N/A') . "\n";
echo " Название: " . ($doc['title'] ?? 'не указано') . "\n";
echo " Файл: " . ($doc['filename'] ?? 'не указано') . "\n";
echo " Расположение: " . ($doc['filelocationtype'] ?: 'не указано') . "\n";
if (!empty($doc['s3_key'])) {
echo " S3 Key: " . $doc['s3_key'] . "\n";
$s3Count++;
}
if (!empty($doc['nc_path'])) {
echo " Nextcloud Path: " . $doc['nc_path'] . "\n";
}
if (!empty($doc['foldername'])) {
echo " Папка CRM: " . $doc['foldername'] . "\n";
}
if (!empty($doc['filesize']) && $doc['filesize'] > 0) {
$sizeKB = round($doc['filesize'] / 1024, 2);
$sizeMB = round($doc['filesize'] / 1024 / 1024, 2);
if ($sizeMB >= 1) {
echo " Размер: {$sizeMB} MB\n";
} else {
echo " Размер: {$sizeKB} KB\n";
}
$totalSize += $doc['filesize'];
} else {
echo " Размер: не указан\n";
}
echo " Создан: " . ($doc['createdtime'] ?? 'не указано') . "\n";
echo " Изменён: " . ($doc['modifiedtime'] ?? 'не указано') . "\n";
if (!empty($doc['user_name'])) {
echo " Владелец: " . $doc['user_name'] . "\n";
}
// Проверка на битые файлы
if (empty($doc['filename']) && empty($doc['s3_key'])) {
echo " ВНИМАНИЕ: Файл без имени и пути!\n";
$brokenCount++;
}
echo "\n";
}
echo str_repeat("=", 80) . "\n";
echo "📊 СТАТИСТИКА:\n";
echo " Всего документов: $count\n";
echo " В S3: $s3Count\n";
echo " Локальных: " . ($count - $s3Count) . "\n";
if ($brokenCount > 0) {
echo " ⚠️ Битых (без файла): $brokenCount\n";
}
if ($totalSize > 0) {
$totalMB = round($totalSize / 1024 / 1024, 2);
echo " Общий размер: {$totalMB} MB\n";
}
echo "\n";