Add ordering of libraries

namespaces
Svein-Tore Griff With 2015-01-30 10:59:40 +01:00
parent 06ba81c2ab
commit ae6329595b
1 changed files with 14 additions and 8 deletions

View File

@ -1305,8 +1305,8 @@ class H5PStorage {
// Find out which libraries are used by this package/content // Find out which libraries are used by this package/content
$librariesInUse = array(); $librariesInUse = array();
$this->h5pC->findLibraryDependencies($librariesInUse, $this->h5pC->mainJsonData); $nextWeight = $this->h5pC->findLibraryDependencies($librariesInUse, $this->h5pC->mainJsonData);
// Save content // Save content
if ($content === NULL) { if ($content === NULL) {
$content = array(); $content = array();
@ -1836,9 +1836,12 @@ class H5PCore {
* *
* @param array $librariesUsed Flat list of all dependencies. * @param array $librariesUsed Flat list of all dependencies.
* @param array $library To find all dependencies for. * @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) { foreach (array('dynamic', 'preloaded', 'editor') as $type) {
$property = $type . 'Dependencies'; $property = $type . 'Dependencies';
if (!isset($library[$property])) { if (!isset($library[$property])) {
@ -1862,7 +1865,8 @@ class H5PCore {
'library' => $dependencyLibrary, 'library' => $dependencyLibrary,
'type' => $type 'type' => $type
); );
$this->findLibraryDependencies($dependencies, $dependencyLibrary, $type === 'editor'); $nextWeight = $this->findLibraryDependencies($dependencies, $dependencyLibrary, $nextWeight, $type === 'editor');
$dependencies[$dependencyKey]['weight'] = $nextWeight++;
} }
else { else {
// This site is missing a dependency! // This site is missing a dependency!
@ -1870,6 +1874,7 @@ class H5PCore {
} }
} }
} }
return $nextWeight;
} }
/** /**
@ -2220,8 +2225,7 @@ class H5PCore {
class H5PContentValidator { class H5PContentValidator {
public $h5pF; public $h5pF;
public $h5pC; public $h5pC;
private $typeMap; private $typeMap, $libraries, $dependencies, $nextWeight;
private $libraries, $dependencies;
/** /**
* Constructor for the H5PContentValidator * Constructor for the H5PContentValidator
@ -2247,6 +2251,7 @@ class H5PContentValidator {
'select' => 'validateSelect', 'select' => 'validateSelect',
'library' => 'validateLibrary', 'library' => 'validateLibrary',
); );
$this->nextWeight = 1;
// Keep track of the libraries we load to avoid loading it multiple times. // Keep track of the libraries we load to avoid loading it multiple times.
$this->libraries = array(); $this->libraries = array();
@ -2634,7 +2639,8 @@ class H5PContentValidator {
'type' => 'preloaded' '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 { else {