From 8480d24f5a74014e693c17ddfc38e6f08820ed43 Mon Sep 17 00:00:00 2001
From: Mark Johnson <mark.johnson@catalyst-eu.net>
Date: Wed, 22 Jun 2022 11:08:38 +0100
Subject: [PATCH] Fix paths for update files.

Fixes #453

The previous code could result in a curl error if $CFG->tempdir didn't
already exist, and a chmod error if it did exist as it was being passed
$stream as a file resource rather than a string.

Change-Id: Ia1b0c22c380d3ba4e57e7f1b85d414db45ba9106
---
 classes/framework.php | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/classes/framework.php b/classes/framework.php
index 7584827..fc7ab69 100644
--- a/classes/framework.php
+++ b/classes/framework.php
@@ -215,15 +215,15 @@ class framework implements \H5PFrameworkInterface {
             @set_time_limit(0);
 
             // Generate local tmp file path.
-            $localfolder = $CFG->tempdir . uniqid('/hvp-');
-            $stream      = $localfolder . '.h5p';
+            $localfolder = make_temp_directory(uniqid('hvp-'));
+            $localpath = $localfolder . '.h5p';
 
             // Add folder and file paths to H5P Core.
             $interface = self::instance('interface');
             $interface->getUploadedH5pFolderPath($localfolder);
-            $interface->getUploadedH5pPath($stream);
+            $interface->getUploadedH5pPath($localpath);
 
-            $stream                  = fopen($stream, 'w');
+            $stream = fopen($localpath, 'w');
             $options['CURLOPT_FILE'] = $stream;
         }
 
@@ -244,7 +244,7 @@ class framework implements \H5PFrameworkInterface {
 
         if ($stream !== null) {
             fclose($stream);
-            @chmod($stream, $CFG->filepermissions);
+            @chmod($localpath, $CFG->filepermissions);
         }
 
         $errorno = $curl->get_errno();
-- 
GitLab