{$propfindUrl}"); // XML запрос для получения fileid $xmlRequest = ' '; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $propfindUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PROPFIND'); curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlRequest); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Depth: 0', 'Content-Type: application/xml' ]); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curlError = curl_error($ch); curl_close($ch); if ($response === false) { error_log("Nextcloud Editor: Ошибка cURL: " . $curlError); } else { error_log("Nextcloud Editor: HTTP код: {$httpCode}"); if ($httpCode === 207 && preg_match('/(\d+)<\/oc:fileid>/', $response, $matches)) { $fileId = (int)$matches[1]; error_log("Nextcloud Editor: Получен fileId: {$fileId}"); } else { error_log("Nextcloud Editor: Файл не найден по пути: {$ncPath} (HTTP {$httpCode})"); } } if (!$fileId) { $errorMsg = "❌ Ошибка: Не удалось получить fileId для файла {$fileName}"; error_log("Nextcloud Editor ERROR: " . $errorMsg); die($errorMsg); } // Формируем URL для Nextcloud // РАБОЧИЙ ФОРМАТ - редирект на файл с автооткрытием редактора! $redirectUrl = $nextcloudUrl . '/apps/files/files/' . $fileId . '?dir=/&editing=true&openfile=true'; // Логирование error_log("Nextcloud Editor: Redirect to $redirectUrl for file (ID: $fileId)"); // Делаем редирект header('Location: ' . $redirectUrl); exit; ?>