Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
126 lines
4.9 KiB
PHP
126 lines
4.9 KiB
PHP
<?php
|
||
/**
|
||
* Скрипт для проверки документа в CRM
|
||
*/
|
||
|
||
error_reporting(E_ALL);
|
||
ini_set('display_errors', 1);
|
||
|
||
require_once 'config.inc.php';
|
||
require_once 'include/database/PearDatabase.php';
|
||
|
||
global $adb;
|
||
if (!$adb) {
|
||
$adb = PearDatabase::getInstance();
|
||
}
|
||
|
||
$recordId = 397217;
|
||
|
||
echo "=== Проверка документа ID: $recordId ===\n\n";
|
||
|
||
// 1. Проверка в vtiger_notes
|
||
$query1 = "SELECT n.*, e.deleted, e.smownerid, e.setype
|
||
FROM vtiger_notes n
|
||
LEFT JOIN vtiger_crmentity e ON e.crmid = n.notesid
|
||
WHERE n.notesid = ?";
|
||
$result1 = $adb->pquery($query1, array($recordId));
|
||
|
||
if ($adb->num_rows($result1) > 0) {
|
||
$row1 = $adb->fetchByAssoc($result1, -1, false);
|
||
echo "✅ Документ найден в vtiger_notes:\n";
|
||
echo " - Title: " . (isset($row1['title']) ? $row1['title'] : 'N/A') . "\n";
|
||
echo " - Filename: " . (isset($row1['filename']) ? $row1['filename'] : 'N/A') . "\n";
|
||
echo " - Filelocationtype: " . (isset($row1['filelocationtype']) ? $row1['filelocationtype'] : 'N/A') . "\n";
|
||
echo " - Deleted: " . (isset($row1['deleted']) ? $row1['deleted'] : 'N/A') . "\n";
|
||
echo " - Owner: " . (isset($row1['smownerid']) ? $row1['smownerid'] : 'N/A') . "\n";
|
||
echo " - Setype: " . (isset($row1['setype']) ? $row1['setype'] : 'N/A') . "\n";
|
||
echo " - Все поля: " . print_r($row1, true) . "\n\n";
|
||
} else {
|
||
echo "❌ Документ НЕ найден в vtiger_notes!\n\n";
|
||
}
|
||
|
||
// 2. Проверка в vtiger_attachments
|
||
$query2 = "SELECT a.*, sar.crmid
|
||
FROM vtiger_attachments a
|
||
LEFT JOIN vtiger_seattachmentsrel sar ON sar.attachmentsid = a.attachmentsid
|
||
WHERE sar.crmid = ?";
|
||
$result2 = $adb->pquery($query2, array($recordId));
|
||
|
||
if ($adb->num_rows($result2) > 0) {
|
||
echo "✅ Вложения найдены:\n";
|
||
while ($row2 = $adb->fetchByAssoc($result2)) {
|
||
echo " - AttachmentsID: " . ($row2['attachmentsid'] ?? 'N/A') . "\n";
|
||
echo " - Name: " . ($row2['name'] ?? 'N/A') . "\n";
|
||
echo " - Storedname: " . ($row2['storedname'] ?? 'N/A') . "\n";
|
||
echo " - Path: " . ($row2['path'] ?? 'N/A') . "\n";
|
||
echo " - Type: " . ($row2['type'] ?? 'N/A') . "\n";
|
||
echo " - Size: " . ($row2['size'] ?? 'N/A') . "\n";
|
||
|
||
// Проверка существования файла
|
||
if (isset($row2['path']) && isset($row2['attachmentsid']) && isset($row2['storedname'])) {
|
||
$filePath = $row2['path'] . $row2['attachmentsid'] . '_' . $row2['storedname'];
|
||
if (file_exists($filePath)) {
|
||
echo " - ✅ Файл существует: $filePath\n";
|
||
echo " - Размер файла: " . filesize($filePath) . " байт\n";
|
||
} else {
|
||
echo " - ❌ Файл НЕ существует: $filePath\n";
|
||
}
|
||
}
|
||
echo "\n";
|
||
}
|
||
} else {
|
||
echo "❌ Вложения НЕ найдены!\n\n";
|
||
}
|
||
|
||
// 3. Проверка в vtiger_notescf (кастомные поля)
|
||
$query3 = "SELECT * FROM vtiger_notescf WHERE notesid = ?";
|
||
$result3 = $adb->pquery($query3, array($recordId));
|
||
|
||
if ($adb->num_rows($result3) > 0) {
|
||
$row3 = $adb->fetchByAssoc($result3);
|
||
echo "✅ Кастомные поля найдены:\n";
|
||
foreach ($row3 as $key => $value) {
|
||
if ($key !== 'notesid' && !empty($value)) {
|
||
echo " - $key: $value\n";
|
||
}
|
||
}
|
||
echo "\n";
|
||
} else {
|
||
echo "⚠️ Кастомные поля не найдены (это нормально)\n\n";
|
||
}
|
||
|
||
// 4. Проверка S3 ключа (если filelocationtype = 'E')
|
||
if (isset($row1['filelocationtype']) && $row1['filelocationtype'] == 'E') {
|
||
$query4 = "SELECT cf_* FROM vtiger_notescf WHERE notesid = ?";
|
||
$result4 = $adb->pquery($query4, array($recordId));
|
||
if ($adb->num_rows($result4) > 0) {
|
||
$row4 = $adb->fetchByAssoc($result4);
|
||
echo "📦 Проверка S3 хранилища:\n";
|
||
foreach ($row4 as $key => $value) {
|
||
if (strpos($key, 's3') !== false || strpos($key, 'S3') !== false) {
|
||
echo " - $key: $value\n";
|
||
}
|
||
}
|
||
echo "\n";
|
||
}
|
||
}
|
||
|
||
// 5. Проверка связей
|
||
$query5 = "SELECT rel.*, e.setype
|
||
FROM vtiger_crmentityrel rel
|
||
LEFT JOIN vtiger_crmentity e ON e.crmid = rel.relcrmid
|
||
WHERE rel.crmid = ? OR rel.relcrmid = ?";
|
||
$result5 = $adb->pquery($query5, array($recordId, $recordId));
|
||
|
||
if ($adb->num_rows($result5) > 0) {
|
||
echo "🔗 Связи документа:\n";
|
||
while ($row5 = $adb->fetchByAssoc($result5)) {
|
||
echo " - " . $row5['module'] . " (" . $row5['crmid'] . ") ↔ " . $row5['relmodule'] . " (" . $row5['relcrmid'] . ")\n";
|
||
}
|
||
echo "\n";
|
||
} else {
|
||
echo "⚠️ Связи не найдены\n\n";
|
||
}
|
||
|
||
echo "=== Проверка завершена ===\n";
|