From e7b7cd2abe219de096f1a9b5fcb2704f427deebc Mon Sep 17 00:00:00 2001 From: git Date: Fri, 9 Jan 2015 09:59:29 +0100 Subject: [PATCH 1/4] Issue https://www.drupal.org/node/2402099 by drinkdecaf: H5P on Pantheon Environments --- h5p.classes.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/h5p.classes.php b/h5p.classes.php index 5940e06..619463a 100644 --- a/h5p.classes.php +++ b/h5p.classes.php @@ -1275,7 +1275,8 @@ class H5PStorage { } $destination_path = $libraries_path . DIRECTORY_SEPARATOR . H5PCore::libraryToString($library, TRUE); H5PCore::deleteFileTree($destination_path); - rename($library['uploadDirectory'], $destination_path); + $this->h5pC->copyFileTree($library['uploadDirectory'], $destination_path); + H5PCore::deleteFileTree($library['uploadDirectory']); $library_saved = TRUE; } From ae8609dd86084aa78b7d8d0c8f0b57840a414597 Mon Sep 17 00:00:00 2001 From: Frode Petterson Date: Fri, 9 Jan 2015 10:00:40 +0100 Subject: [PATCH 2/4] Replaced another rename function. --- h5p.classes.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/h5p.classes.php b/h5p.classes.php index 619463a..af50df5 100644 --- a/h5p.classes.php +++ b/h5p.classes.php @@ -412,13 +412,13 @@ interface H5PFrameworkInterface { * Start an atomic operation against the dependency storage */ public function lockDependencyStorage(); - + /** * Stops an atomic operation against the dependency storage */ public function unlockDependencyStorage(); - - + + /** * Delete a library from database and file system * @@ -1327,7 +1327,8 @@ class H5PStorage { // Move the content folder $destination_path = $contents_path . DIRECTORY_SEPARATOR . $contentId; - @rename($current_path, $destination_path); + $this->h5pC->copyFileTree($current_path, $destination_path); + H5PCore::deleteFileTree($current_path); // Save the content library dependencies $this->h5pF->saveLibraryUsage($contentId, $librariesInUse); From b0e6bed5173b18e7939ac8c01b15a359747e4f61 Mon Sep 17 00:00:00 2001 From: Svein-Tore Griff With Date: Tue, 27 Jan 2015 11:28:02 +0100 Subject: [PATCH 3/4] Update README.txt --- README.txt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.txt b/README.txt index f6ff53d..a6caa31 100644 --- a/README.txt +++ b/README.txt @@ -1,13 +1,12 @@ This folder contains the h5p general library. The files within this folder are not specific to any framework. Any interaction with LMS, CMS or other frameworks is done through interfaces. Plattforms needs to implement -the following interfaces in order for the h5p libraries to work: - - - TODO: Fill in here - -In addition frameworks need to do the following: +the H5PFrameworkInterface(in h5p.classes.php) and also do the following: - Provide a form for uploading h5p packages. - Place the uploaded h5p packages in a temporary directory + +++ -See existing implementations for details. For instance the Drupal h5p module located on drupal.org/project/h5p \ No newline at end of file +See existing implementations for details. For instance the Drupal h5p module located on drupal.org/project/h5p + +We will make available documentations and tutorials for creating platform integrations in the future From ae6329595ba603179d62992c206458004d01606b Mon Sep 17 00:00:00 2001 From: Svein-Tore Griff With Date: Fri, 30 Jan 2015 10:59:40 +0100 Subject: [PATCH 4/4] Add ordering of libraries --- h5p.classes.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/h5p.classes.php b/h5p.classes.php index 5940e06..1503ad4 100644 --- a/h5p.classes.php +++ b/h5p.classes.php @@ -1305,8 +1305,8 @@ class H5PStorage { // Find out which libraries are used by this package/content $librariesInUse = array(); - $this->h5pC->findLibraryDependencies($librariesInUse, $this->h5pC->mainJsonData); - + $nextWeight = $this->h5pC->findLibraryDependencies($librariesInUse, $this->h5pC->mainJsonData); + // Save content if ($content === NULL) { $content = array(); @@ -1836,9 +1836,12 @@ class H5PCore { * * @param array $librariesUsed Flat list of all dependencies. * @param array $library To find all dependencies for. - * @param bool $editor Used interally to force all preloaded sub dependencies of an editor dependecy to be editor dependencies. + * @param int $nextWeight An integer determining the order of the libraries + * when they are loaded + * @param bool $editor Used interally to force all preloaded sub dependencies + * of an editor dependecy to be editor dependencies. */ - public function findLibraryDependencies(&$dependencies, $library, $editor = FALSE) { + public function findLibraryDependencies(&$dependencies, $library, $nextWeight = 1, $editor = FALSE) { foreach (array('dynamic', 'preloaded', 'editor') as $type) { $property = $type . 'Dependencies'; if (!isset($library[$property])) { @@ -1862,7 +1865,8 @@ class H5PCore { 'library' => $dependencyLibrary, 'type' => $type ); - $this->findLibraryDependencies($dependencies, $dependencyLibrary, $type === 'editor'); + $nextWeight = $this->findLibraryDependencies($dependencies, $dependencyLibrary, $nextWeight, $type === 'editor'); + $dependencies[$dependencyKey]['weight'] = $nextWeight++; } else { // This site is missing a dependency! @@ -1870,6 +1874,7 @@ class H5PCore { } } } + return $nextWeight; } /** @@ -2220,8 +2225,7 @@ class H5PCore { class H5PContentValidator { public $h5pF; public $h5pC; - private $typeMap; - private $libraries, $dependencies; + private $typeMap, $libraries, $dependencies, $nextWeight; /** * Constructor for the H5PContentValidator @@ -2247,6 +2251,7 @@ class H5PContentValidator { 'select' => 'validateSelect', 'library' => 'validateLibrary', ); + $this->nextWeight = 1; // Keep track of the libraries we load to avoid loading it multiple times. $this->libraries = array(); @@ -2634,7 +2639,8 @@ class H5PContentValidator { 'type' => 'preloaded' ); - $this->h5pC->findLibraryDependencies($this->dependencies, $library); + $this->nextWeight = $this->h5pC->findLibraryDependencies($this->dependencies, $library, $this->nextWeight); + $this->dependencies[$depkey]['weight'] = $this->nextWeight++; } } else {