connect_error) { die("Connection failed: " . $mysqli->connect_error); } $mysqli->set_charset("utf8"); echo "=== Analysis of Remaining 316 Internal Files ===\n\n"; // Get all remaining internal files $query = "SELECT notesid, filename, filesize, filetype, s3_key FROM vtiger_notes WHERE filelocationtype = 'I' ORDER BY notesid DESC"; $result = $mysqli->query($query); if (!$result) { die("Query failed: " . $mysqli->error); } $categories = [ 'empty_filename' => [], 'duplicate_applications' => [], 'file_15_series' => [], 'evidence_files' => [], 'recent_files' => [], // ID > 390000 'old_files' => [], // ID < 100000 'other' => [] ]; $stats = [ 'total' => 0, 'with_s3_key' => 0, 'without_s3_key' => 0, 'zero_size' => 0, 'has_size' => 0 ]; while ($row = $result->fetch_assoc()) { $stats['total']++; $notesid = (int)$row['notesid']; $filename = trim($row['filename']); $filesize = (int)$row['filesize']; $s3_key = $row['s3_key']; // Stats if (!empty($s3_key)) { $stats['with_s3_key']++; } else { $stats['without_s3_key']++; } if ($filesize == 0) { $stats['zero_size']++; } else { $stats['has_size']++; } // Categorize if (empty($filename)) { $categories['empty_filename'][] = $row; } elseif (strpos($filename, '7 заявление потребителя') !== false) { $categories['duplicate_applications'][] = $row; } elseif (strpos($filename, 'file_15_') !== false) { $categories['file_15_series'][] = $row; } elseif (strpos($filename, 'доказательство_') !== false) { $categories['evidence_files'][] = $row; } elseif ($notesid > 390000) { $categories['recent_files'][] = $row; } elseif ($notesid < 100000) { $categories['old_files'][] = $row; } else { $categories['other'][] = $row; } } $mysqli->close(); // Print analysis echo "STATISTICS:\n"; echo "Total Internal files: {$stats['total']}\n"; echo "With S3 key: {$stats['with_s3_key']}\n"; echo "Without S3 key: {$stats['without_s3_key']}\n"; echo "Zero size: {$stats['zero_size']}\n"; echo "Has size: {$stats['has_size']}\n\n"; echo "CATEGORIES:\n"; foreach ($categories as $category => $files) { $count = count($files); echo "$category: $count files\n"; if ($count > 0 && $count <= 10) { // Show all if 10 or less foreach ($files as $file) { echo " - ID {$file['notesid']}: {$file['filename']} ({$file['filesize']} bytes)\n"; } } elseif ($count > 10) { // Show first 5 and last 5 echo " First 5:\n"; for ($i = 0; $i < 5; $i++) { $file = $files[$i]; echo " - ID {$file['notesid']}: {$file['filename']} ({$file['filesize']} bytes)\n"; } echo " Last 5:\n"; for ($i = $count - 5; $i < $count; $i++) { $file = $files[$i]; echo " - ID {$file['notesid']}: {$file['filename']} ({$file['filesize']} bytes)\n"; } } echo "\n"; } // Save detailed report $report = [ 'timestamp' => date('Y-m-d H:i:s'), 'statistics' => $stats, 'categories' => [] ]; foreach ($categories as $category => $files) { $report['categories'][$category] = [ 'count' => count($files), 'files' => $files ]; } file_put_contents($ROOT . 'crm_extensions/file_storage/remaining_internal_analysis.json', json_encode($report, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); echo "Detailed report saved to: remaining_internal_analysis.json\n";