Merge branch 'master' into improved-file-handling
commit
c9e5680e85
|
@ -143,11 +143,18 @@ class H5PDefaultStorage implements \H5PFileStorage {
|
||||||
* Path on file system to temporary export file.
|
* Path on file system to temporary export file.
|
||||||
* @param string $filename
|
* @param string $filename
|
||||||
* Name of export file.
|
* Name of export file.
|
||||||
|
* @throws Exception Unable to save the file
|
||||||
*/
|
*/
|
||||||
public function saveExport($source, $filename) {
|
public function saveExport($source, $filename) {
|
||||||
$this->deleteExport($filename);
|
$this->deleteExport($filename);
|
||||||
self::dirReady("{$this->path}/exports");
|
|
||||||
copy($source, "{$this->path}/exports/{$filename}");
|
if (!self::dirReady("{$this->path}/exports")) {
|
||||||
|
throw new Exception("Unable to create directory for H5P export file.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!copy($source, "{$this->path}/exports/{$filename}")) {
|
||||||
|
throw new Exception("Unable to save H5P export file.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -162,6 +169,17 @@ class H5PDefaultStorage implements \H5PFileStorage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given export file exists
|
||||||
|
*
|
||||||
|
* @param string $filename
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function hasExport($filename) {
|
||||||
|
$target = "{$this->path}/exports/{$filename}";
|
||||||
|
return file_exists($target);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will concatenate all JavaScrips and Stylesheets into two files in order
|
* Will concatenate all JavaScrips and Stylesheets into two files in order
|
||||||
* to improve page performance.
|
* to improve page performance.
|
||||||
|
|
|
@ -90,6 +90,14 @@ interface H5PFileStorage {
|
||||||
*/
|
*/
|
||||||
public function deleteExport($filename);
|
public function deleteExport($filename);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given export file exists
|
||||||
|
*
|
||||||
|
* @param string $filename
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function hasExport($filename);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will concatenate all JavaScrips and Stylesheets into two files in order
|
* Will concatenate all JavaScrips and Stylesheets into two files in order
|
||||||
* to improve page performance.
|
* to improve page performance.
|
||||||
|
|
|
@ -553,6 +553,11 @@ interface H5PFrameworkInterface {
|
||||||
* return int
|
* return int
|
||||||
*/
|
*/
|
||||||
public function getLibraryContentCount();
|
public function getLibraryContentCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will trigger after the export file is created.
|
||||||
|
*/
|
||||||
|
public function afterExportCreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1574,11 +1579,15 @@ Class H5PExport {
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
$zip->open($tmpFile, ZipArchive::CREATE | ZipArchive::OVERWRITE);
|
$zip->open($tmpFile, ZipArchive::CREATE | ZipArchive::OVERWRITE);
|
||||||
|
|
||||||
|
// Some system needs the root prefix for ZipArchive's addFile()
|
||||||
|
$rootPrefix = (empty($_SERVER['DOCUMENT_ROOT']) ? '' : $_SERVER['DOCUMENT_ROOT'] . '/');
|
||||||
|
|
||||||
// Add all the files from the tmp dir.
|
// Add all the files from the tmp dir.
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
// Please note that the zip format has no concept of folders, we must
|
// Please note that the zip format has no concept of folders, we must
|
||||||
// use forward slashes to separate our directories.
|
// use forward slashes to separate our directories.
|
||||||
$zip->addFile($file->absolutePath, $file->relativePath);
|
$zip->addFile($file->absolutePath, $file->relativePath);
|
||||||
|
$zip->addFile($rootPrefix . $file->absolutePath, $file->relativePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close zip and remove tmp dir
|
// Close zip and remove tmp dir
|
||||||
|
@ -1591,9 +1600,11 @@ Class H5PExport {
|
||||||
}
|
}
|
||||||
catch (Exception $e) {
|
catch (Exception $e) {
|
||||||
$this->h5pF->setErrorMessage($this->h5pF->t($e->getMessage()));
|
$this->h5pF->setErrorMessage($this->h5pF->t($e->getMessage()));
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
unlink($tmpFile);
|
unlink($tmpFile);
|
||||||
|
$this->h5pF->afterExportCreated();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1808,7 +1819,10 @@ class H5PCore {
|
||||||
* @return Object NULL on failure.
|
* @return Object NULL on failure.
|
||||||
*/
|
*/
|
||||||
public function filterParameters(&$content) {
|
public function filterParameters(&$content) {
|
||||||
if (isset($content['filtered']) && $content['filtered'] !== '') {
|
if (!empty($content['filtered']) &&
|
||||||
|
(!$this->exportEnabled ||
|
||||||
|
($content['slug'] &&
|
||||||
|
$this->fs->hasExport($content['slug'] . '-' . $content['id'] . '.h5p')))) {
|
||||||
return $content['filtered'];
|
return $content['filtered'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue