Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
105 lines
3.6 KiB
PHP
105 lines
3.6 KiB
PHP
<?php
|
||
/**
|
||
* Упрощённая проверка комментариев (прямое подключение к БД)
|
||
* Вызов: https://crm.clientright.ru/scripts/check_replay_comment_simple.php?contact_id=392299
|
||
*/
|
||
error_reporting(E_ALL);
|
||
ini_set('display_errors', '1');
|
||
|
||
chdir(dirname(__DIR__));
|
||
require_once 'config.inc.php';
|
||
require_once 'include/database/PearDatabase.php';
|
||
|
||
$contact_id = isset($_GET['contact_id']) ? (int)$_GET['contact_id'] : 392299;
|
||
|
||
header('Content-Type: text/plain; charset=utf-8');
|
||
|
||
$adb = new PearDatabase();
|
||
|
||
$q = $adb->pquery(
|
||
"SELECT m.modcommentsid, m.commentcontent, m.related_to, m.channel, m.customer, m.userid,
|
||
e.smownerid, e.deleted, e.setype, e.createdtime
|
||
FROM vtiger_modcomments m
|
||
INNER JOIN vtiger_crmentity e ON e.crmid = m.modcommentsid
|
||
WHERE m.related_to = ?
|
||
ORDER BY m.modcommentsid DESC
|
||
LIMIT 10",
|
||
array($contact_id)
|
||
);
|
||
|
||
echo "Комментарии для contact_id={$contact_id}:\n";
|
||
echo str_repeat('=', 70) . "\n\n";
|
||
|
||
if ($adb->num_rows($q) === 0) {
|
||
echo "❌ Записей в vtiger_modcomments для этого контакта НЕТ.\n";
|
||
exit;
|
||
}
|
||
|
||
$count = $adb->num_rows($q);
|
||
echo "✅ Найдено записей: {$count}\n\n";
|
||
|
||
for ($i = 0; $i < $count; $i++) {
|
||
echo "--- Запись #{$i} ---\n";
|
||
flush();
|
||
|
||
try {
|
||
$modcommentsid = $adb->query_result($q, $i, 'modcommentsid');
|
||
echo "modcommentsid: {$modcommentsid}\n";
|
||
flush();
|
||
|
||
$deleted = $adb->query_result($q, $i, 'deleted');
|
||
echo " deleted: " . ($deleted !== false ? $deleted : 'NULL/FALSE') . "\n";
|
||
|
||
$setype = $adb->query_result($q, $i, 'setype');
|
||
echo " setype: {$setype}\n";
|
||
|
||
$channel = $adb->query_result($q, $i, 'channel');
|
||
echo " channel: " . ($channel ? $channel : 'NULL') . "\n";
|
||
|
||
$smownerid = $adb->query_result($q, $i, 'smownerid');
|
||
echo " smownerid: {$smownerid}\n";
|
||
|
||
$customer = $adb->query_result($q, $i, 'customer');
|
||
echo " customer: {$customer}\n";
|
||
|
||
$userid = $adb->query_result($q, $i, 'userid');
|
||
echo " userid: {$userid}\n";
|
||
|
||
$createdtime = $adb->query_result($q, $i, 'createdtime');
|
||
echo " createdtime: {$createdtime}\n";
|
||
|
||
$commentcontent = $adb->query_result($q, $i, 'commentcontent');
|
||
$text_preview = mb_substr($commentcontent, 0, 60, 'UTF-8');
|
||
echo " text: {$text_preview}...\n";
|
||
echo "\n";
|
||
flush();
|
||
} catch (Exception $e) {
|
||
echo " ОШИБКА при чтении записи: " . $e->getMessage() . "\n\n";
|
||
flush();
|
||
}
|
||
}
|
||
|
||
// Проверка наличия в modcommentscf
|
||
$q2 = $adb->pquery(
|
||
"SELECT m.modcommentsid
|
||
FROM vtiger_modcomments m
|
||
LEFT JOIN vtiger_modcommentscf c ON c.modcommentsid = m.modcommentsid
|
||
WHERE m.related_to = ? AND c.modcommentsid IS NULL
|
||
ORDER BY m.modcommentsid DESC LIMIT 10",
|
||
array($contact_id)
|
||
);
|
||
|
||
$missing_count = $adb->num_rows($q2);
|
||
if ($missing_count > 0) {
|
||
echo str_repeat('=', 70) . "\n";
|
||
echo "⚠️ ВНИМАНИЕ: Комментарии БЕЗ строки в vtiger_modcommentscf: {$missing_count}\n";
|
||
echo "(они НЕ попадут в список, т.к. используется INNER JOIN)\n\n";
|
||
for ($i = 0; $i < $missing_count; $i++) {
|
||
$mid = $adb->query_result($q2, $i, 'modcommentsid');
|
||
echo " - modcommentsid: {$mid}\n";
|
||
}
|
||
} else {
|
||
echo str_repeat('=', 70) . "\n";
|
||
echo "✅ Все комментарии есть в vtiger_modcommentscf.\n";
|
||
}
|