OPPG-436: Rewrote logic so that the entire library processing is skipped if the user doesn't have access to update libraries
parent
fcc9ed4e24
commit
b69ee7c2e3
|
@ -92,15 +92,13 @@ interface H5PFrameworkInterface {
|
|||
public function isPatchedLibrary($library);
|
||||
|
||||
/**
|
||||
* Is the current user allowed to update the library data?
|
||||
* Is the current user allowed to update libraries?
|
||||
*
|
||||
* @param object $library
|
||||
* The library data for a library we are checking
|
||||
* @return boolean
|
||||
* TRUE if the user us allowed to update with the given library data OR the library already exists with the current version levels.
|
||||
* FALSE if the user is not allowed to update or create the library.
|
||||
* TRUE if the user is allowed to update libraries
|
||||
* FALSE if the user is not allowed to update libraries
|
||||
*/
|
||||
public function isAllowedLibraryUpdate($library);
|
||||
public function mayUpdateLibraries();
|
||||
|
||||
/**
|
||||
* Store data about a library
|
||||
|
@ -389,7 +387,7 @@ class H5PValidator {
|
|||
}
|
||||
|
||||
// The rest should be library folders
|
||||
else {
|
||||
elseif ($this->h5pF->mayUpdateLibraries()) {
|
||||
if (!is_dir($filePath)) {
|
||||
// Ignore this. Probably a file that shouldn't have been included.
|
||||
continue;
|
||||
|
@ -429,6 +427,9 @@ class H5PValidator {
|
|||
foreach ($missingLibraries as $library) {
|
||||
$this->h5pF->setErrorMessage($this->h5pF->t('Missing required library @library', array('@library' => $this->h5pC->libraryToString($library))));
|
||||
}
|
||||
if (!$this->h5pF->mayUpdateLibraries()) {
|
||||
$this->h5pF->setInfoMessage($this->h5pF->t("Note that the libraries may exist in the file you uploaded, but you're not allowed to upload new libraries. Contact the site administrator about this."));
|
||||
}
|
||||
}
|
||||
$valid = empty($missingLibraries) && $valid;
|
||||
}
|
||||
|
@ -462,12 +463,6 @@ class H5PValidator {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
// check if allowed to update this library
|
||||
if (! $this->h5pF->isAllowedLibraryUpdate($h5pData)) {
|
||||
$this->h5pF->setErrorMessage($this->h5pF->t('Not allowed to update library %name', array('%name' => $h5pData['machineName'])));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// validate json if a semantics file is provided
|
||||
$semanticsPath = $filePath . DIRECTORY_SEPARATOR . 'semantics.json';
|
||||
if (file_exists($semanticsPath)) {
|
||||
|
@ -849,7 +844,7 @@ class H5PStorage {
|
|||
public function savePackage($contentId, $contentMainId = NULL) {
|
||||
// Save the libraries we processed during validation
|
||||
$library_saved = FALSE;
|
||||
|
||||
$mayUpdateLibraries = $this->h5pF->mayUpdateLibraries();
|
||||
foreach ($this->h5pC->librariesJsonData as $key => &$library) {
|
||||
$libraryId = $this->h5pF->getLibraryId($key, $library['majorVersion'], $library['minorVersion']);
|
||||
$library['saveDependencies'] = TRUE;
|
||||
|
@ -867,6 +862,11 @@ class H5PStorage {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (!$mayUpdateLibraries) {
|
||||
// This shouldn't happen, but just to be safe...
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->h5pF->saveLibraryData($library, $new);
|
||||
|
||||
$current_path = $this->h5pF->getUploadedH5pFolderPath() . DIRECTORY_SEPARATOR . $key;
|
||||
|
|
Loading…
Reference in New Issue