$isCaller ? $number : generateRandomNumber($prefixes, $number),
'receiver' => $isCaller ? $names[array_rand($names)] : $number,
'start_time' => $startTime,
'duration' => rand(5, 300),
'type' => $isCaller ? 'Outgoing' : 'Incoming'
];
}
usort($records, function($a, $b) {
return strtotime($b['start_time']) - strtotime($a['start_time']);
});
return $records;
}
function formatDuration($seconds) {
$mins = floor($seconds / 60);
$secs = $seconds % 60;
return sprintf('%d:%02d', $mins, $secs);
}
function calculateStats($records) {
$incoming = count(array_filter($records, fn($r) => $r['type'] === 'Incoming'));
$outgoing = count($records) - $incoming;
$totalDuration = array_sum(array_column($records, 'duration'));
$avgDuration = $totalDuration / count($records);
return compact('incoming', 'outgoing', 'totalDuration', 'avgDuration');
}
// Process Form
$message = '';
$cdrData = [];
$showCDR = false;
$phoneNumber = '';
$availableMonths = 0;
$isBlocked = false;
if ($_POST) {
$phoneNumber = trim($_POST['phone_number'] ?? '');
$selectedMonths = (int)($_POST['months'] ?? 0);
if (!isValidPakistaniNumber($phoneNumber)) {
$message = ['text' => '❌ Invalid number format. Please enter a valid Pakistani mobile number (03XXXXXXXXX)', 'type' => 'error'];
} elseif (isBlocked($phoneNumber, $blockedNumbers)) {
$message = ['text' => '🛡️ Protected Number - CDR access restricted', 'type' => 'blocked'];
$isBlocked = true;
} else {
if (!isset($_SESSION['checked_numbers'][$phoneNumber])) {
// First time checking - set available months
$availableMonths = [1, 6, 12][rand(0, 2)];
$_SESSION['checked_numbers'][$phoneNumber] = $availableMonths;
$message = ['text' => "✅ CDR available for {$availableMonths} month" . ($availableMonths > 1 ? 's' : '') . " for this number.", 'type' => 'success'];
} else {
// Number already checked - get available months
$availableMonths = $_SESSION['checked_numbers'][$phoneNumber];
if ($selectedMonths > 0) {
// Generate CDR request
if ($selectedMonths <= $availableMonths) {
$cdrData = generateCDR($phoneNumber, $selectedMonths, $pakistaniNames, $pakistaniPrefixes);
$showCDR = true;
$message = ['text' => "✅ CDR generated successfully for {$selectedMonths} month" . ($selectedMonths > 1 ? 's' : '') . ".", 'type' => 'success'];
} else {
$message = ['text' => "❌ Only {$availableMonths} month" . ($availableMonths > 1 ? 's' : '') . " of CDR available for this number.", 'type' => 'error'];
}
}
}
}
}
// Get available months for display
if (!isset($_SESSION['checked_numbers'][$phoneNumber]) && $phoneNumber) {
$availableMonths = 0;
} else if (isset($_SESSION['checked_numbers'][$phoneNumber])) {
$availableMonths = $_SESSION['checked_numbers'][$phoneNumber];
}
?>
CDR - Call Data Record
🛡️
Access Restricted
CDR records for the number = htmlspecialchars($phoneNumber) ?> cannot be accessed due to privacy restrictions or security policies.
📞 Contact Support:
For authorized access to restricted numbers, please contact our support team with proper documentation and legal authorization.
= count($cdrData) ?>
Total Calls
= $stats['incoming'] ?>
Incoming
= $stats['outgoing'] ?>
Outgoing
= formatDuration($stats['avgDuration']) ?>
Avg Duration
| Caller |
Receiver |
Start Time |
Duration |
Type |
| = htmlspecialchars($record['caller']) ?> |
= htmlspecialchars($record['receiver']) ?> |
= date('M j, Y g:i A', strtotime($record['start_time'])) ?> |
= formatDuration($record['duration']) ?> |
= $record['type'] ?>
|
Select CDR Duration
How many months of CDR do you want for ?