getItems('Location', ['is_deleted' => 0, 'range' => '0-1000']); break; case 'computers': $items = $glpi->getItems('Computer', ['is_deleted' => 0, 'range' => '0-1000']); // Если GLPI вернул пустой массив, пробуем запросить мониторы или периферию if (empty($items)) { $items = $glpi->getItems('Monitor', ['is_deleted' => 0, 'range' => '0-100']); } if (empty($items)) { $items = $glpi->getItems('Peripheral', ['is_deleted' => 0, 'range' => '0-100']); } break; case 'itilcategories': $items = $glpi->getItems('ITILCategory', ['is_deleted' => 0, 'range' => '0-1000']); break; } $result = []; if (is_array($items)) { foreach ($items as $item) { $id = $item['id'] ?? null; $name = $item['name'] ?? $item['completename'] ?? null; if ($id && $name) { // Для компьютеров добавляем инвентарный номер (otherserial или serial) if ($type === 'computers') { $inventory = $item['otherserial'] ?? $item['serial'] ?? ''; if (!empty($inventory)) { $name .= ' (Инв.№: ' . htmlspecialchars($inventory) . ')'; } } $result[] = ['id' => $id, 'name' => $name]; } } } // Fallback для компьютеров – если данных нет, отдаём статический список if ($type === 'computers' && empty($result)) { $result = [ ['id' => 'pc', 'name' => 'Персональный компьютер'], ['id' => 'laptop', 'name' => 'Ноутбук'], ['id' => 'printer', 'name' => 'Принтер / МФУ'], ['id' => 'network', 'name' => 'Сетевое оборудование'], ['id' => 'other', 'name' => 'Другое'], ]; } header('Content-Type: application/json; charset=utf-8'); echo json_encode($result); } catch (Exception $e) { error_log("GLPI data fetch error ($type): " . $e->getMessage()); http_response_code(500); echo json_encode(['error' => $e->getMessage()]); } exit;