### FILE: index.php
Authentication Context Lost. Please log in to Microsoft 365.";
return;
}
// Configuration parameters matching architectural defaults
$deviceNameFilter = "CON-WIN11";
$syncAgeHoursThreshold = 24;
$cutoffTime = time() - ($syncAgeHoursThreshold * 3600);
// 1. Fetch Managed Devices via Graph Substrate
$selectFields = "id,deviceName,userPrincipalName,lastSyncDateTime,complianceState,operatingSystem,osVersion";
$devicesEndpoint = "deviceManagement/managedDevices?\$filter=startsWith(deviceName,'{$deviceNameFilter}')&\$select={$selectFields}";
try {
$devicesResult = $ms->graphCall($devicesEndpoint, $accessToken, 'GET');
$devices = $devicesResult['value'] ?? [];
} catch (Exception $e) {
echo "
Graph API Error: " . htmlspecialchars($e->getMessage()) . "
";
return;
}
$totalDevices = count($devices);
$staleCount = 0;
$failedAppsTotalCount = 0;
$triageReport = [];
foreach ($devices as $device) {
$deviceId = $device['id'];
$deviceName = $device['deviceName'];
$upn = $device['userPrincipalName'];
$compliance = $device['complianceState'];
$lastSyncStr = $device['lastSyncDateTime'];
$lastSyncTime = strtotime($lastSyncStr);
$isStale = $lastSyncTime < $cutoffTime;
if ($isStale) {
$staleCount++;
}
$failedApps = [];
// 2. Probe Win32 App Enrollment Engine Failures for lagging or non-compliant machines
if ($isStale || $compliance !== 'compliant') {
$appStatusEndpoint = "deviceManagement/managedDevices('{$deviceId}')/deviceInstallStates?\$filter=installState eq 'failed'";
try {
$appResponse = $ms->graphCall($appStatusEndpoint, $accessToken, 'GET');
$appStates = $appResponse['value'] ?? [];
foreach ($appStates as $state) {
$failedApps[] = $state['appName'] . " [Code: " . ($state['errorCode'] ?? 'Unknown') . "]";
$failedAppsTotalCount++;
}
} catch (Exception $e) {
// Gracefully catch secondary queries to prevent dashboard halt
$failedApps[] = "Query Failed: " . $e->getMessage();
}
}
$triageReport[] = [
'id' => $deviceId,
'name' => $deviceName,
'upn' => $upn,
'compliance' => $compliance,
'lastSync' => $lastSyncStr,
'stale' => $isStale,
'failedApps' => $failedApps
];
}
$stalePercentage = $totalDevices > 0 ? round(($staleCount / $totalDevices) * 100) : 0;
?>
24h)", $staleCount, "{$stalePercentage}% of monitored fleet", $staleCount > 0 ? 'down' : 'up', "⏰", $stalePercentage); ?>
0 ? 'down' : 'up', "⚠️"); ?>
| Device Name |
Primary User (UPN) |
Compliance State |
Last Sync Timestamp |
IME App Status |
Actions |
| No devices found matching current filters. |
|
|
|
|
No Failures
|
|