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'; }