From fd4fe78b17b495874419b987b0a296db70329c77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Wed, 23 Mar 2022 13:00:12 +0000
Subject: [PATCH] Resolve "Courseware: EmbedBlock ignoriert Proxy
 Einstellungen"

---
 lib/models/Courseware/BlockTypes/Embed.php | 28 +++++++---------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/lib/models/Courseware/BlockTypes/Embed.php b/lib/models/Courseware/BlockTypes/Embed.php
index a6496c66543..2882443a408 100755
--- a/lib/models/Courseware/BlockTypes/Embed.php
+++ b/lib/models/Courseware/BlockTypes/Embed.php
@@ -53,19 +53,19 @@ class Embed extends BlockType
 
         $oembedRequest = $this->buildOembedRequest($payload['source'], $payload['url']);
         $payload['oembed_request'] = $oembedRequest;
-        $request = $this->curlGet($oembedRequest);
         $payload['oembed-unauthorized'] = false;
         $payload['oembed-not-found'] = false;
-
-        if ('Unauthorized' == $request) {
+        $payload['oembed'] = '';
+        $payload['request'] = '';
+        $request = \FileManager::fetchURLMetadata($oembedRequest);
+        if ($request['response_code'] === 200) {
+            $payload['request'] = file_get_contents($oembedRequest, false, get_default_http_stream_context($oembedRequest));
+            $payload['oembed'] = json_decode($payload['request']);
+        } elseif ($request['response_code'] === 401) {
             $payload['oembed_unauthorized'] = true;
-        }
-        if ('Not Found' == $request) {
+        } else {
             $payload['oembed_not_found'] = true;
         }
-        $payload['oembed'] = json_decode($request);
-        $payload['request'] = $request;
-
         return $payload;
     }
 
@@ -95,18 +95,6 @@ class Embed extends BlockType
         return $endPoints[$source].'?url='.rawurlencode($url).'&format=json';
     }
 
-    private function curlGet($url)
-    {
-        $curl = curl_init($url);
-        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
-        curl_setopt($curl, CURLOPT_TIMEOUT, 30);
-        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
-        $return = curl_exec($curl);
-        curl_close($curl);
-
-        return $return;
-    }
-
     public static function getCategories(): array
     {
         return ['external'];
-- 
GitLab