diff --git a/modules/data_release/jsx/manageFileForm.js b/modules/data_release/jsx/manageFileForm.js index 750da65332..0dcc75af7f 100644 --- a/modules/data_release/jsx/manageFileForm.js +++ b/modules/data_release/jsx/manageFileForm.js @@ -192,10 +192,10 @@ class ManageFileForm extends Component { label={t('Username', {ns: 'loris'})} options={ this.state.fieldOptions.usersByFilePermissions[ - this.state.specificReleaseI + this.state.specificReleaseId ] } - onUserInput={(value) => { + onUserInput={(formElement, value) => { this.setState({ selectedUserToRemove: value, }); diff --git a/modules/data_release/php/data_release.class.inc b/modules/data_release/php/data_release.class.inc index dd8b7ba310..0a1efccf12 100644 --- a/modules/data_release/php/data_release.class.inc +++ b/modules/data_release/php/data_release.class.inc @@ -90,8 +90,14 @@ class Data_Release extends \DataFrameworkMenu foreach ($result as $id => $row) { $version = $row['version'] == null || $row['version'] == '' ? - 'Unversioned' : $row['version']; - $result[$id] = $row['file_name'].' - '.$version; + 'Unversioned' : + html_entity_decode($row['version'], ENT_QUOTES | ENT_HTML5, 'UTF-8'); + $filename = html_entity_decode( + $row['file_name'], + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); + $result[$id] = $filename.' - '.$version; } return $result; @@ -118,9 +124,16 @@ class Data_Release extends \DataFrameworkMenu $versionsList = []; foreach ($versions as $version) { - $version = $version == null || $version == '' ? - 'Unversioned' : $version; - $versionsList[$version] = $version; + if ($version === null || $version === '') { + $versionsList['Unversioned'] = 'Unversioned'; + } else { + $versionsList[$version] + = html_entity_decode( + $version, + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); + } } return $versionsList; @@ -229,13 +242,12 @@ class Data_Release extends \DataFrameworkMenu { $result = $db->pselect( " - SELECT LOWER(upr.userid) as userid, dr.id as data_release_id + SELECT dpr.userid as userid, dr.id as data_release_id FROM data_release_permissions dpr JOIN data_release dr ON dr.id = dpr.data_release_id - JOIN user_project_rel upr ON upr.ProjectID = dr.ProjectID - WHERE upr.UserID = :userID", - [':userID' => \User::singleton()->getID()], - 'file_name' + WHERE dr.ProjectID IS NULL OR dr.ProjectID IN + (SELECT ProjectID FROM user_project_rel WHERE UserID = :userID)", + [':userID' => \User::singleton()->getID()] ); $users = $this->getUsersList($db); diff --git a/modules/data_release/php/datareleaseprovisioner.class.inc b/modules/data_release/php/datareleaseprovisioner.class.inc index 8f24a63cbc..29f5e53d07 100644 --- a/modules/data_release/php/datareleaseprovisioner.class.inc +++ b/modules/data_release/php/datareleaseprovisioner.class.inc @@ -85,6 +85,22 @@ class DataReleaseProvisioner extends \LORIS\Data\Provisioners\DBRowProvisioner */ public function getInstance($row) : \LORIS\Data\DataInstance { + if (!empty($row['version'])) { + $row['version'] + = html_entity_decode( + $row['version'], + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); + } + if (!empty($row['fileName'])) { + $row['fileName'] + = html_entity_decode( + $row['fileName'], + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); + } return new DataReleaseRow($row); } }