Changed getDependenciesFiles format to make it easier to use on all systems.

namespaces
Frode Petterson 2014-05-09 10:48:05 +02:00
parent 86441f4bec
commit 08f8c46544
1 changed files with 46 additions and 14 deletions

View File

@ -1338,13 +1338,55 @@ class H5PCore {
return $dependencies; return $dependencies;
} }
/**
* Get all dependency assets of the given type
*
* @param array $dependency
* @param string $type
* @param array $assets
*/
private function getDependencyAssets($dependency, $type, &$assets) {
// Check if dependency has any files of this type
if (empty($dependency[$type]) || $dependency[$type][0] === '') {
return;
}
// Check if we should skip CSS.
if ($type === 'preloadedCss' && (isset($dependency['dropCss']) && $dependency['dropCss'] === '1')) {
return;
}
foreach ($dependency[$type] as $file) {
$assets[] = (object) array(
'path' => $dependency['path'] . '/' . trim(is_array($file) ? $file['path'] : $file),
'version' => $dependency['version']
);
}
}
/**
* Combines path with cache buster / version.
*
* @param array $assets
* @return array
*/
public function getAssetsUrls($assets) {
$urls = array();
foreach ($assets as $asset) {
$urls[] = $asset->path . $asset->version;
}
return $urls;
}
/** /**
* Return file paths for all dependecies files. * Return file paths for all dependecies files.
* *
* @param array $dependencies * @param array $dependencies
* @return array files. * @return array files.
*/ */
public function getDependenciesFiles($dependencies, $addCacheBuster = TRUE) { public function getDependenciesFiles($dependencies) {
$files = array( $files = array(
'scripts' => array(), 'scripts' => array(),
'styles' => array() 'styles' => array()
@ -1356,19 +1398,9 @@ class H5PCore {
$dependency['preloadedCss'] = explode(',', $dependency['preloadedCss']); $dependency['preloadedCss'] = explode(',', $dependency['preloadedCss']);
} }
$version = $addCacheBuster ? "?ver={$dependency['majorVersion']}.{$dependency['minorVersion']}.{$dependency['patchVersion']}" : ''; $dependency['version'] = "?ver={$dependency['majorVersion']}.{$dependency['minorVersion']}.{$dependency['patchVersion']}";
if (!empty($dependency['preloadedJs']) && $dependency['preloadedJs'][0] !== '') { $this->getDependencyAssets($dependency, 'preloadedJs', $files['scripts']);
foreach ($dependency['preloadedJs'] as $file) { $this->getDependencyAssets($dependency, 'preloadedCss', $files['styles']);
$file = trim(is_array($file) ? $file['path'] : $file) . $version;
$files['scripts'][] = $dependency['path'] . '/' . $file;
}
}
if ((!isset($dependency['dropCss']) || $dependency['dropCss'] !== '1') && !empty($dependency['preloadedCss']) && $dependency['preloadedCss'][0] !== '') {
foreach ($dependency['preloadedCss'] as $file) {
$file = trim(is_array($file) ? $file['path'] : $file) . $version;
$files['styles'][] = $dependency['path'] . '/' . $file;
}
}
} }
return $files; return $files;
} }