Finish storage

namespaces
falcon 2012-12-01 22:18:48 +01:00
parent 655a8cd144
commit cff341c984
1 changed files with 25 additions and 4 deletions

View File

@ -10,6 +10,7 @@ interface h5pFramework {
public function storeLibraryData($libraryData); public function storeLibraryData($libraryData);
public function storeContentData($contentId, $contentJson, $mainJsonData); public function storeContentData($contentId, $contentJson, $mainJsonData);
public function saveLibraryUsage($contentId, $librariesInUse); public function saveLibraryUsage($contentId, $librariesInUse);
public function loadLibrary($machineName, $minimumVersion);
} }
class h5pValidator { class h5pValidator {
@ -488,25 +489,45 @@ class h5pSaver {
public function getLibraryUsage(&$librariesInUse, $jsonData, $dynamic = FALSE) { public function getLibraryUsage(&$librariesInUse, $jsonData, $dynamic = FALSE) {
if (isset($jsonData['preloadedDependencies'])) { if (isset($jsonData['preloadedDependencies'])) {
foreach ($jsonData['preloadedDependencies'] as $preloadedDependency) { foreach ($jsonData['preloadedDependencies'] as $preloadedDependency) {
$library = $this->getLibrary($preloadedDependency['machineName'], $preloadedDependency['minimumVersion']);
$librariesInUse[$preloadedDependency['machineName']] = array( $librariesInUse[$preloadedDependency['machineName']] = array(
'mainVersion' => key($this->h5pC->librariesJsonData[$preloadedDependency['machineName']]), 'library' => $library,
'preloaded' => $dynamic ? 0 : 1, 'preloaded' => $dynamic ? 0 : 1,
); );
$this->getLibraryUsage($librariesInUse, end($this->h5pC->librariesJsonData[$preloadedDependency['machineName']]), $dynamic); $this->getLibraryUsage($librariesInUse, $library, $dynamic);
} }
} }
if (isset($jsonData['dynamicDependencies'])) { if (isset($jsonData['dynamicDependencies'])) {
foreach ($jsonData['dynamicDependencies'] as $dynamicDependency) { foreach ($jsonData['dynamicDependencies'] as $dynamicDependency) {
if (!isset($librariesInUse[$dynamicDependency['machineName']])) { if (!isset($librariesInUse[$dynamicDependency['machineName']])) {
$library = $this->getLibrary($dynamicDependency['machineName'], $dynamicDependency['minimumVersion']);
$librariesInUse[$dynamicDependency['machineName']] = array( $librariesInUse[$dynamicDependency['machineName']] = array(
'mainVersion' => key($this->h5pC->librariesJsonData[$dynamicDependency['machineName']]), 'library' => $library,
'preloaded' => 0, 'preloaded' => 0,
); );
} }
$this->getLibraryUsage($librariesInUse, end($this->h5pC->librariesJsonData[$dynamicDependency['machineName']]), TRUE); $this->getLibraryUsage($librariesInUse, $library, TRUE);
} }
} }
} }
/**
* Searches for a suiting library in any uploaded package first, and then in the database
*
* @param string $machineName
* The libraries machineName
* @param int $minimumVersion
* The minimum version for this library
* @return array
* Assosiative array with library information
*/
private function getLibrary($machineName, $minimumVersion) {
if (isset($this->h5pC->librariesJsonData[$machineName]) && key($this->h5pC->librariesJsonData[$machineName]) >= $minimumVersion) {
return current($this->h5pC->librariesJsonData[$machineName]);
}
else {
$this->h5pF->loadLibrary($machineName, $minimumVersion);
}
}
} }
class h5pCore { class h5pCore {