From 10ced369dc910473141b04e9d0b899a4249d3ce4 Mon Sep 17 00:00:00 2001 From: Michael Lapadula Date: Fri, 19 Jun 2026 15:38:59 -0400 Subject: [PATCH 1/7] [data_release] Add html_entity_decode when querying db for versions --- modules/data_release/php/data_release.class.inc | 4 ++-- modules/data_release/php/datareleaseprovisioner.class.inc | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/data_release/php/data_release.class.inc b/modules/data_release/php/data_release.class.inc index dd8b7ba310..f9e587ad37 100644 --- a/modules/data_release/php/data_release.class.inc +++ b/modules/data_release/php/data_release.class.inc @@ -90,7 +90,7 @@ class Data_Release extends \DataFrameworkMenu foreach ($result as $id => $row) { $version = $row['version'] == null || $row['version'] == '' ? - 'Unversioned' : $row['version']; + 'Unversioned' : html_entity_decode($row['version'], ENT_QUOTES | ENT_HTML5, 'UTF-8'); $result[$id] = $row['file_name'].' - '.$version; } @@ -119,7 +119,7 @@ class Data_Release extends \DataFrameworkMenu $versionsList = []; foreach ($versions as $version) { $version = $version == null || $version == '' ? - 'Unversioned' : $version; + 'Unversioned' : html_entity_decode($version, ENT_QUOTES | ENT_HTML5, 'UTF-8'); $versionsList[$version] = $version; } diff --git a/modules/data_release/php/datareleaseprovisioner.class.inc b/modules/data_release/php/datareleaseprovisioner.class.inc index 8f24a63cbc..e3e2d82730 100644 --- a/modules/data_release/php/datareleaseprovisioner.class.inc +++ b/modules/data_release/php/datareleaseprovisioner.class.inc @@ -85,6 +85,9 @@ 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'); + } return new DataReleaseRow($row); } } From f806906e9776cdf75484d31133f76a3334f90b5a Mon Sep 17 00:00:00 2001 From: Michael Lapadula Date: Thu, 25 Jun 2026 15:25:33 -0400 Subject: [PATCH 2/7] Fix bug manage permission --- modules/data_release/php/data_release.class.inc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/data_release/php/data_release.class.inc b/modules/data_release/php/data_release.class.inc index f9e587ad37..118df45fe0 100644 --- a/modules/data_release/php/data_release.class.inc +++ b/modules/data_release/php/data_release.class.inc @@ -118,9 +118,12 @@ class Data_Release extends \DataFrameworkMenu $versionsList = []; foreach ($versions as $version) { - $version = $version == null || $version == '' ? - 'Unversioned' : html_entity_decode($version, ENT_QUOTES | ENT_HTML5, 'UTF-8'); - $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; From 04d615efa64d9cf53441438db1422011d2ef247a Mon Sep 17 00:00:00 2001 From: Michael Lapadula Date: Thu, 25 Jun 2026 15:51:24 -0400 Subject: [PATCH 3/7] formatting --- modules/data_release/php/data_release.class.inc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/data_release/php/data_release.class.inc b/modules/data_release/php/data_release.class.inc index 118df45fe0..9fe3a199f3 100644 --- a/modules/data_release/php/data_release.class.inc +++ b/modules/data_release/php/data_release.class.inc @@ -121,8 +121,12 @@ class Data_Release extends \DataFrameworkMenu if ($version === null || $version === '') { $versionsList['Unversioned'] = 'Unversioned'; } else { - $versionsList[$version] = - html_entity_decode($version, ENT_QUOTES | ENT_HTML5, 'UTF-8'); + $versionsList[$version] + = html_entity_decode( + $version, + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); } } From d080cfb4634bee0cfb30145ebb8e8fbcbab3a756 Mon Sep 17 00:00:00 2001 From: Michael Lapadula Date: Fri, 26 Jun 2026 09:53:54 -0400 Subject: [PATCH 4/7] Fix formatting --- modules/data_release/php/data_release.class.inc | 11 ++++++----- .../data_release/php/datareleaseprovisioner.class.inc | 7 ++++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/data_release/php/data_release.class.inc b/modules/data_release/php/data_release.class.inc index 9fe3a199f3..8c71a2ad8c 100644 --- a/modules/data_release/php/data_release.class.inc +++ b/modules/data_release/php/data_release.class.inc @@ -90,7 +90,8 @@ class Data_Release extends \DataFrameworkMenu foreach ($result as $id => $row) { $version = $row['version'] == null || $row['version'] == '' ? - 'Unversioned' : html_entity_decode($row['version'], ENT_QUOTES | ENT_HTML5, 'UTF-8'); + 'Unversioned' : + html_entity_decode($row['version'], ENT_QUOTES | ENT_HTML5, 'UTF-8'); $result[$id] = $row['file_name'].' - '.$version; } @@ -121,10 +122,10 @@ class Data_Release extends \DataFrameworkMenu if ($version === null || $version === '') { $versionsList['Unversioned'] = 'Unversioned'; } else { - $versionsList[$version] - = html_entity_decode( - $version, - ENT_QUOTES | ENT_HTML5, + $versionsList[$version] + = html_entity_decode( + $version, + ENT_QUOTES | ENT_HTML5, 'UTF-8' ); } diff --git a/modules/data_release/php/datareleaseprovisioner.class.inc b/modules/data_release/php/datareleaseprovisioner.class.inc index e3e2d82730..c924188f71 100644 --- a/modules/data_release/php/datareleaseprovisioner.class.inc +++ b/modules/data_release/php/datareleaseprovisioner.class.inc @@ -86,7 +86,12 @@ 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'); + $row['version'] + = html_entity_decode( + $row['version'], + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); } return new DataReleaseRow($row); } From aec7f800c3bda213717494bec6675f6ed0786acd Mon Sep 17 00:00:00 2001 From: Michael Lapadula Date: Mon, 29 Jun 2026 16:17:14 -0400 Subject: [PATCH 5/7] Adding decoding to file names also --- modules/data_release/php/data_release.class.inc | 12 ++++++------ .../php/datareleaseprovisioner.class.inc | 8 ++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/data_release/php/data_release.class.inc b/modules/data_release/php/data_release.class.inc index 8c71a2ad8c..8b6a8f6eb0 100644 --- a/modules/data_release/php/data_release.class.inc +++ b/modules/data_release/php/data_release.class.inc @@ -92,7 +92,8 @@ class Data_Release extends \DataFrameworkMenu $version = $row['version'] == null || $row['version'] == '' ? 'Unversioned' : html_entity_decode($row['version'], ENT_QUOTES | ENT_HTML5, 'UTF-8'); - $result[$id] = $row['file_name'].' - '.$version; + $filename = html_entity_decode($row['file_name'], ENT_QUOTES | ENT_HTML5, 'UTF-8'); + $result[$id] = $filename.' - '.$version; } return $result; @@ -237,13 +238,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 c924188f71..29f5e53d07 100644 --- a/modules/data_release/php/datareleaseprovisioner.class.inc +++ b/modules/data_release/php/datareleaseprovisioner.class.inc @@ -93,6 +93,14 @@ class DataReleaseProvisioner extends \LORIS\Data\Provisioners\DBRowProvisioner 'UTF-8' ); } + if (!empty($row['fileName'])) { + $row['fileName'] + = html_entity_decode( + $row['fileName'], + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); + } return new DataReleaseRow($row); } } From e1037670e8a74271a77d48361dfbb95cd7473fa2 Mon Sep 17 00:00:00 2001 From: Michael Lapadula Date: Mon, 29 Jun 2026 16:18:12 -0400 Subject: [PATCH 6/7] Fix small bug where nothing would appear in remove permissions dropdown --- modules/data_release/jsx/manageFileForm.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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, }); From 25a82ab88a1c2a9d36ed1b7ce38eedb7c33586d2 Mon Sep 17 00:00:00 2001 From: Michael Lapadula Date: Mon, 29 Jun 2026 16:35:00 -0400 Subject: [PATCH 7/7] fix formatting --- modules/data_release/php/data_release.class.inc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/data_release/php/data_release.class.inc b/modules/data_release/php/data_release.class.inc index 8b6a8f6eb0..0a1efccf12 100644 --- a/modules/data_release/php/data_release.class.inc +++ b/modules/data_release/php/data_release.class.inc @@ -92,7 +92,11 @@ class Data_Release extends \DataFrameworkMenu $version = $row['version'] == null || $row['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'); + $filename = html_entity_decode( + $row['file_name'], + ENT_QUOTES | ENT_HTML5, + 'UTF-8' + ); $result[$id] = $filename.' - '.$version; }