diff --git a/code/events_indexer/events_indexer.jar b/code/events_indexer/events_indexer.jar
index 966ede73f3..0c2310f113 100644
Binary files a/code/events_indexer/events_indexer.jar and b/code/events_indexer/events_indexer.jar differ
diff --git a/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEvent.java b/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEvent.java
index 1867d82176..c902355000 100644
--- a/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEvent.java
+++ b/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEvent.java
@@ -190,7 +190,12 @@ public String getRawValue() {
public String getValue() {
if (allowableValues.length > 0 && StringUtils.isNumeric(value)) {
- return allowableValues[Integer.parseInt(value)];
+ try {
+ return allowableValues[Integer.parseInt(value)];
+ }catch (ArrayIndexOutOfBoundsException e) {
+ //MDN 2/6/25 do additional handling and logging if we don't get a good value.
+ return "Unknown";
+ }
} else {
return value;
}
diff --git a/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEventsIndexer.java b/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEventsIndexer.java
index e9a4aa717b..4ecb179b39 100644
--- a/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEventsIndexer.java
+++ b/code/events_indexer/src/com/turning_leaf_technologies/events/NativeEventsIndexer.java
@@ -102,8 +102,8 @@ private void loadEvents() {
void indexEvents() {
-
- if (runFullUpdate) {
+ //MDN 2/6/2025 temporarily run full update always until processing just changes can be done
+ if (true || runFullUpdate) {
try {
solrUpdateServer.deleteByQuery("type:event AND source:" + this.settingsId);
} catch (BaseHttpSolrClient.RemoteSolrException rse) {
diff --git a/code/web/release_notes/25.01.02.MD b/code/web/release_notes/25.01.02.MD
new file mode 100644
index 0000000000..cc22e6ae54
--- /dev/null
+++ b/code/web/release_notes/25.01.02.MD
@@ -0,0 +1,10 @@
+## Aspen Discovery Updates
+### Account Updates
+- Correct remember this pickup location functionality when sublocations are not defined for a location. (DIS-296) (*MDN*)
+
+## This release includes code contributions from
+### Grove For Libraries
+- Mark Noble (MDN)
+
+## Special Testing thanks to
+- Joe Salamon (Cuyahoga Public Library)
\ No newline at end of file
diff --git a/code/web/release_notes/25.02.00.MD b/code/web/release_notes/25.02.00.MD
index 21a822fb59..8bb22e23a3 100644
--- a/code/web/release_notes/25.02.00.MD
+++ b/code/web/release_notes/25.02.00.MD
@@ -57,6 +57,7 @@
### Aspen LiDA Updates
- When validating authentication tokens for LiDA, use the API keys within Branded App Settings if available, rather than validating against the Greenhouse. (DIS-270) (*MDN*)
+- Allow any user with the permission to modify system variables the permission to enable branded apps, not just aspen_admin. (DIS-270) (*MDN*)
- Added new setting to show/hide More Info button on the Grouped Work screen in Aspen LiDA. (DIS-207) (*KK*)
@@ -149,24 +150,24 @@
### Koha Updates
- When existing volumes during indexing, only load volumes for the current indexing profile. (*MDN*)
-- For libraries that use Koha as their ILS, and use the koha-plugin-newsletter-consent plugin
- - Administrator with the permission to edit library settings will be able to toggle on/off the 'Enable ILS-issued consents' setting under the 'Data Protection Regulations' section. (*CZ*)
- - if the Koha plugin has not been installed and enabled in Koha, then the 'Enable ILS-issued consents' setting will not appear as it requires the plugin to be installed and enabled. (*CZ*)
- - if the Koha plugin is uninstalled or disabled in Koha while 'Enable ILS-issued consents' is toggled on, 'Enable ILS-issued consents' will still display. (*CZ*)
+- For libraries that use Koha as their ILS, and use the koha-plugin-newsletter-consent plugin (DIS-98)
+ - Administrator with the permission to edit library settings will be able to toggle on/off the 'Enable ILS-issued consents' setting under the 'Data Protection Regulations' section. (DIS-98) (*CZ*)
+ - if the Koha plugin has not been installed and enabled in Koha, then the 'Enable ILS-issued consents' setting will not appear as it requires the plugin to be installed and enabled. (DIS-98) (*CZ*)
+ - if the Koha plugin is uninstalled or disabled in Koha while 'Enable ILS-issued consents' is toggled on, 'Enable ILS-issued consents' will still display. (DIS-98) (*CZ*)
- If 'Enable ILS-issued consents' is enabled:
- - the 'Privacy Settings' options will appear in patron side menus. (*CZ*)
- - In the self-registration form, under a ‘Privacy’ section, patrons need to see information about the consent types set by their library in Koha. For example, they may be given the opportunity to receive the library’s newsletter. (*CZ*)
- - Patrons will be able to choose to opt in, which implies that consent is not assumed by default. (*CZ*)
- - Patrons will be able to submit their consent along with their registration form. (*CZ*)
- - Patrons will be sent to Koha, where it is stored. (*CZ*)
- - Patrons will be able to view and change their consent information (as retrieved from Koha) at any point through the ‘Your Account > Privacy Settings ’ section. (*CZ*)
- - If ILS consent is enabled in the Aspen settings, but the Koha plugin is disabled or uninstalled, patron will see an informative message in 'Privacy Settings'. (*CZ*)
+ - the 'Privacy Settings' options will appear in patron's side menus. (DIS-98) (*CZ*)
+ - In the self-registration form, under a ‘Privacy’ section, patrons need to see information about the consent types set by their library in Koha. For example, they may be given the opportunity to receive the library’s newsletter. (DIS-98) (*CZ*)
+ - Patrons will be able to choose to opt in, which implies that consent is not assumed by default. (DIS-98) (*CZ*)
+ - Patrons will be able to submit their consent along with their registration form. (DIS-98) (*CZ*)
+ - Patrons will be sent to Koha, where it is stored. (DIS-98) (*CZ*)
+ - Patrons will be able to view and change their consent information (as retrieved from Koha) at any point through the ‘Your Account > Privacy Settings ’ section. (DIS-98) (*CZ*)
+ - If ILS consent is enabled in the Aspen settings, but the Koha plugin is disabled or uninstalled, patron will see an informative message in 'Privacy Settings'. (DIS-98) (*CZ*)
### Material Request Updates
- Allow some patron types to submit unlimited material requests. (DIS-256) (*MDN*)
- Allow requests per calendar year to be based on a start date selected by the library rather than using January 1st always. (DIS-291) (*MDN*)
-- When placing a request, check to see if the title already exists within the catalog and if so, let the patron know. This check can be disabled within library settings. (DIS-320)
-- When managing requests, if "Check Requests for Existing Titles in the Catalog" is on for a library, show a new column that indicates if the request exists in the catalog, exists in another format, or does not exist. The value is checked once per day. (DIS-320)
+- When placing a request, check to see if the title already exists within the catalog and if so, let the patron know. This check can be disabled within library settings. (DIS-320) (*MDN*)
+- When managing requests, if "Check Requests for Existing Titles in the Catalog" is on for a library, show a new column that indicates if the request exists in the catalog, exists in another format, or does not exist. The value is checked once per day. (DIS-320) (*MDN*)
@@ -257,6 +258,8 @@
- Jordan Fields (Grove)
## This release includes sponsored developments from
+- Colorado Department of Corrections
+- Colorado Library Consortium (CLiC)
- Greater Manchester Inter Library Consortial System (GMILCS)
- Metropolitan Library System
- Minuteman Library Network
diff --git a/code/web/services/Admin/Libraries.php b/code/web/services/Admin/Libraries.php
index 14521b11a7..9046059ab3 100644
--- a/code/web/services/Admin/Libraries.php
+++ b/code/web/services/Admin/Libraries.php
@@ -80,11 +80,13 @@ function getObjectStructure($context = ''): array {
$catalogDriver = CatalogFactory::getCatalogConnectionInstance(trim($accountProfile->driver), $accountProfile);
$consentPluginNames = $catalogDriver->getPluginNamesByMethodName('patron_consent_type');
$anyConsentPluginsEnabled = false;
- foreach($consentPluginNames as $pluginName) {
- $pluginStatus = $catalogDriver->getPluginStatus($pluginName);
- if ($pluginStatus['enabled']) {
- $anyConsentPluginsEnabled = true;
- break;
+ if ($consentPluginNames != false) {
+ foreach ($consentPluginNames as $pluginName) {
+ $pluginStatus = $catalogDriver->getPluginStatus($pluginName);
+ if ($pluginStatus['enabled']) {
+ $anyConsentPluginsEnabled = true;
+ break;
+ }
}
}
diff --git a/code/web/services/NativeEvents/event.php b/code/web/services/NativeEvents/Event.php
similarity index 100%
rename from code/web/services/NativeEvents/event.php
rename to code/web/services/NativeEvents/Event.php
diff --git a/code/web/services/Record/AJAX.php b/code/web/services/Record/AJAX.php
index c33b0bcd85..01e647d32e 100644
--- a/code/web/services/Record/AJAX.php
+++ b/code/web/services/Record/AJAX.php
@@ -1820,27 +1820,37 @@ function setupHoldForm(string $recordSource, ?bool &$rememberHoldPickupLocation,
if (!$multipleAccountPickupLocations && !$promptForHoldNotifications && $library->allowRememberPickupLocation) {
//If the patron's preferred pickup location is not valid, then force them to pick a new location
$preferredPickupLocationIsValid = false;
+ $preferredPickupLocation = null;
$preferredPickupSublocationIsValid = false;
foreach ($locations as $location) {
if (is_object($location) && ($location->locationId == $user->pickupLocationId)) {
$preferredPickupLocationIsValid = true;
+ $preferredPickupLocation = $location;
break;
}
}
- require_once ROOT_DIR . '/sys/LibraryLocation/Sublocation.php';
- require_once ROOT_DIR . '/sys/LibraryLocation/SublocationPatronType.php';
- $patronType = $user->getPTypeObj();
- $sublocationLookup = new Sublocation();
- $sublocationLookup->id = $user->pickupSublocationId;
- $sublocationLookup->isValidHoldPickupAreaILS = 1;
- $sublocationLookup->isValidHoldPickupAreaAspen = 1;
- if ($sublocationLookup->find(true)) {
- $sublocationPType = new SublocationPatronType();
- $sublocationPType->patronTypeId = $patronType->id;
- $sublocationPType->sublocationId = $sublocationLookup->id;
- if ($sublocationPType->find(true)) {
- $preferredPickupSublocationIsValid = true;
+ $preferredPickupSublocationIsValid = true;
+ if ($preferredPickupLocationIsValid) {
+ //The preferred location is valid, check to see if sublocations are in use and if so if the preferred pickup area is valid
+ $preferredSublocationsAtPreferredLocation = $preferredPickupLocation->getPickupSublocations($user);
+ if (count($preferredSublocationsAtPreferredLocation) > 1) {
+ $preferredPickupSublocationIsValid = false;
+ require_once ROOT_DIR . '/sys/LibraryLocation/Sublocation.php';
+ require_once ROOT_DIR . '/sys/LibraryLocation/SublocationPatronType.php';
+ $patronType = $user->getPTypeObj();
+ $sublocationLookup = new Sublocation();
+ $sublocationLookup->id = $user->pickupSublocationId;
+ $sublocationLookup->isValidHoldPickupAreaILS = 1;
+ $sublocationLookup->isValidHoldPickupAreaAspen = 1;
+ if ($sublocationLookup->find(true)) {
+ $sublocationPType = new SublocationPatronType();
+ $sublocationPType->patronTypeId = $patronType->id;
+ $sublocationPType->sublocationId = $sublocationLookup->id;
+ if ($sublocationPType->find(true)) {
+ $preferredPickupSublocationIsValid = true;
+ }
+ }
}
}
@@ -1848,7 +1858,8 @@ function setupHoldForm(string $recordSource, ?bool &$rememberHoldPickupLocation,
$rememberHoldPickupLocation = $user->rememberHoldPickupLocation;
} else {
$rememberHoldPickupLocation = false;
- } } else {
+ }
+ } else {
$rememberHoldPickupLocation = false;
}
$interface->assign('rememberHoldPickupLocation', $rememberHoldPickupLocation);
diff --git a/code/web/sys/DBMaintenance/version_updates/25.01.02.php b/code/web/sys/DBMaintenance/version_updates/25.01.02.php
new file mode 100644
index 0000000000..13f94c088b
--- /dev/null
+++ b/code/web/sys/DBMaintenance/version_updates/25.01.02.php
@@ -0,0 +1,39 @@
+ [
+ 'title' => '',
+ 'description' => '',
+ 'continueOnError' => false,
+ 'sql' => [
+ ''
+ ]
+ ], //name*/
+
+ //mark - Grove
+
+ //katherine
+
+ //kirstien - Grove
+
+ //sublocation_ptype_uniqueness
+
+ //kodi
+
+ //alexander - PTFS-Europe
+
+ //chloe - PTFS-Europe
+
+ //James Staub - Nashville Public Library
+
+ //Lucas Montoya - Theke Solutions
+
+ //other
+
+ //yanjun - ByWater
+
+
+ ];
+}
diff --git a/code/web/sys/DBMaintenance/version_updates/25.02.00.php b/code/web/sys/DBMaintenance/version_updates/25.02.00.php
index fa72826eac..6b7d83b1e5 100644
--- a/code/web/sys/DBMaintenance/version_updates/25.02.00.php
+++ b/code/web/sys/DBMaintenance/version_updates/25.02.00.php
@@ -266,6 +266,16 @@ function getUpdates25_02_00(): array {
"ALTER TABLE system_variables ADD COLUMN enableAspenEvents TINYINT(1) DEFAULT 0"
]
], //native_events_indexing_tables
+ 'increase_event_field_lengths' => [
+ 'title' => 'Increase field lengths for some Aspen Events tables',
+ 'description' => 'Increase field lengths for some Aspen Events tables',
+ 'sql' => [
+ 'ALTER TABLE event_field CHANGE COLUMN allowableValues allowableValues TEXT',
+ 'ALTER TABLE event CHANGE COLUMN description description TEXT',
+ 'ALTER TABLE event_type CHANGE COLUMN description description TEXT',
+ 'ALTER TABLE event_instance CHANGE COLUMN note note TEXT',
+ ]
+ ], //increase_event_field_lengths
//kirstien - Grove
'lida_general_settings_add_more_info' => [
diff --git a/code/web/sys/SystemVariables.php b/code/web/sys/SystemVariables.php
index efdb8efe19..7446c4046b 100644
--- a/code/web/sys/SystemVariables.php
+++ b/code/web/sys/SystemVariables.php
@@ -380,7 +380,6 @@ static function getObjectStructure($context = ''): array {
$objectStructure['indexingSection']['properties']['storeRecordDetailsInDatabase']['type'] = 'hidden';
$objectStructure['indexingSection']['properties']['indexVersion']['type'] = 'hidden';
$objectStructure['indexingSection']['properties']['searchVersion']['type'] = 'hidden';
- $objectStructure['enableBrandedApp']['type'] = 'hidden';
$objectStructure['enableAspenEvents']['type'] = 'hidden';
}