/** * Get all scripts, css and semantics data for a library * * @param string $library_name * Name of the library we want to fetch data for */ public function getLibraryData($machineName, $majorVersion, $minorVersion) { $libraryData = new stdClass(); $libraryData->semantics = $this->storage->getSemantics($machineName, $majorVersion, $minorVersion); $language = $this->storage->getLanguage($machineName, $majorVersion, $minorVersion); if ($language) { $libraryData->language = $language; } $editorLibraryIds = $this->storage->getEditorLibraries($machineName, $majorVersion, $minorVersion); foreach ($editorLibraryIds as $editorLibraryId => $editorLibrary) { $filePaths = $this->storage->getFilePaths($editorLibraryId); if (!empty($filePaths['js'])) { foreach ($filePaths['js'] as $jsFilePath) { // TODO: rtrim and check substr(-1) === '}'? jsmin? if (!isset($libraryData->javascript[$jsFilePath])) { $libraryData->javascript[$jsFilePath] = ''; } $libraryData->javascript[$jsFilePath] .= "\n" . file_get_contents($jsFilePath); } } $language = $this->storage->getLanguage($editorLibrary['machineName'], $editorLibrary['majorVersion'], $editorLibrary['minorVersion']); if ($language) { $lang = '; H5PEditor.language["' . $editorLibrary['machineName'] . '"] = ' . $language . ';'; $libraryData->javascript[md5($lang)] = $lang; } if (!empty($filePaths['css'])) { foreach ($filePaths['css'] as $cssFilePath) { H5peditor::buildCssPath(NULL, $this->basePath . dirname($cssFilePath) . '/'); $css = preg_replace_callback('/url\\([\'"]?(?![a-z]+:|\\/+)([^\'")]+)[\'"]?\\)/i', 'H5peditor::buildCssPath', file_get_contents($cssFilePath)); $libraryData->css[$cssFilePath] = $css; } } } return json_encode($libraryData); }
/** * Get all scripts, css and semantics data for a library * * @param string $library_name * Name of the library we want to fetch data for * @param string $prefix Optional. Files are relative to another dir. */ public function getLibraryData($machineName, $majorVersion, $minorVersion, $languageCode, $path = '', $prefix = '') { $libraryData = new stdClass(); $libraries = $this->findEditorLibraries($machineName, $majorVersion, $minorVersion); $libraryData->semantics = $this->h5p->loadLibrarySemantics($machineName, $majorVersion, $minorVersion); $libraryData->language = $this->getLibraryLanguage($machineName, $majorVersion, $minorVersion, $languageCode); $files = $this->h5p->getDependenciesFiles($libraries, $prefix); $this->storage->alterLibraryFiles($files, $libraries); if ($path) { $path .= '/'; } // Javascripts if (!empty($files['scripts'])) { foreach ($files['scripts'] as $script) { if (preg_match('/:\\/\\//', $script->path) === 1) { // External file $libraryData->javascript[$script->path . $script->version] = "\n" . file_get_contents($script->path); } else { // Local file $libraryData->javascript[$this->h5p->url . $script->path . $script->version] = "\n" . file_get_contents($path . $script->path); } } } // Stylesheets if (!empty($files['styles'])) { foreach ($files['styles'] as $css) { if (preg_match('/:\\/\\//', $css->path) === 1) { // External file $libraryData->css[$css->path . $css->version] = file_get_contents($css->path); } else { // Local file H5peditor::buildCssPath(NULL, $this->h5p->url . dirname($css->path) . '/'); $libraryData->css[$this->h5p->url . $css->path . $css->version] = preg_replace_callback('/url\\([\'"]?(?![a-z]+:|\\/+)([^\'")]+)[\'"]?\\)/i', 'H5peditor::buildCssPath', file_get_contents($path . $css->path)); } } } // Add translations for libraries. foreach ($libraries as $library) { $language = $this->getLibraryLanguage($library['machineName'], $library['majorVersion'], $library['minorVersion'], $languageCode); if ($language !== NULL) { $lang = '; H5PEditor.language["' . $library['machineName'] . '"] = ' . $language . ';'; $libraryData->javascript[md5($lang)] = $lang; } } return json_encode($libraryData); }