Conversation
Introduces a retry mechanism with exponential backoff for the cURL request in the LoTW controller. This improves reliability by attempting the download up to three times before failing, and logs each retry attempt for better debugging.
Clarified the comment regarding eQSL authentication to indicate that the user's actual eQSL credentials are used, and that the station callsign is managed in the ADIF data via eqslqthnickname. Removed outdated logic related to username handling for linked accounts.
Introduces a '1+' option to the Min QSOs select field in the most worked view, allowing users to filter results with a minimum of one QSO.
script.sh now uses value of DIRECTORY variable from .env file
Replaced all instances of Peter Goodhall's callsign from 2M0SQL to MM9SQL in the README to reflect the updated callsign.
Enhanced input validation for gridsquare and band parameters in Awards controller to prevent invalid data and potential abuse. Updated Logbook_model to use parameterized queries and early return for empty logbook relationships, improving security and reliability of VUCC QSO details retrieval.
Updated gridsquare validation to allow multiple comma-separated gridsquares for VUCC awards. Each gridsquare is now individually validated for correct format, improving input flexibility and error handling.
Replaced raw SQL LIKE conditions with CodeIgniter's query builder 'like' and 'or_like' methods for VUCC search cases. This improves code readability and helps prevent SQL injection.
Updated the date formatting logic in footer.php to use the user's preferred date format from session or config. The date input now displays according to various supported formats, improving localization and user experience. Hopefully fixes #3358
In Logbook_model.php, LoTW and eQSL sent status are reset to 'N' when editing a QSO that was previously sent, ensuring re-upload to these services. In common.js, a handler updates DXCC, location, and state fields when the callsign is changed in the QSO edit modal.
Updated the SQL statement in Logbook_model to use utf8mb4_general_ci collation instead of utf8mb4_unicode_ci for the MEMORY table QSO_LOOKUP. This may improve performance for certain lookup operations.
Introduces migration 231 to update the application version to 2.7.6 and trigger the version info dialog for users. Updates the migration version in the configuration to 231.
There was a problem hiding this comment.
Pull Request Overview
This pull request tags Cloudlog as version 2.7.6 and introduces several improvements focused on security, reliability, and user experience. Key changes include enhanced input validation for VUCC gridsquare and band parameters, retry logic for LoTW downloads, and automatic updates to QSO upload status when records are edited.
- Added comprehensive input validation for VUCC gridsquare and band inputs to prevent malformed data
- Implemented retry logic with exponential backoff for LoTW downloads to handle transient network issues
- Enhanced QSO editing to reset upload status for LoTW, eQSL, and ClubLog when records are modified
Reviewed Changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| application/migrations/231_tag_2_7_6.php | Adds migration to tag version 2.7.6 |
| application/config/migration.php | Updates migration version to 231 |
| application/controllers/Awards.php | Adds validation for VUCC gridsquare and band inputs |
| application/models/Logbook_model.php | Refactors VUCC queries to use parameterized queries and adds upload status reset on QSO edit |
| application/controllers/Lotw.php | Implements retry logic with exponential backoff for LoTW downloads |
| application/controllers/Eqsl.php | Updates comment about eQSL authentication |
| assets/js/sections/common.js | Adds callsign change handler to auto-update DXCC and location fields |
| application/views/interface_assets/footer.php | Implements user date format preference in UTC date stamp function |
| application/views/mostworked/index.php | Adds "1+" option to Min QSOs filter |
| script.sh | Replaces hardcoded paths with ${DIRECTORY} variable |
| README.md | Updates maintainer callsign from 2M0SQL to MM9SQL |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| formattedDate = months[now.getUTCMonth()] + ' ' + now.getUTCDate() + ', ' + year4; | ||
| break; | ||
| case 'M d, y': | ||
| var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; |
There was a problem hiding this comment.
The months array is defined twice in cases 'M d, Y' and 'M d, y'. This duplicated logic should be extracted to a single variable before the switch statement to improve maintainability.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This pull request introduces several improvements and bug fixes across the Cloudlog application, focusing on enhanced input validation, improved reliability for external integrations, better user experience, and internal code updates. The most significant changes include stricter validation for VUCC gridsquare and band inputs, more robust handling of LoTW downloads, improvements to QSO editing and upload status, and user interface enhancements for date formatting and callsign handling.
Input validation and security:
Awards.php, ensuring only valid values are accepted and preventing malformed or malicious data from being processed.Logbook_model.phpto use parameterized queries and safer LIKE conditions, reducing the risk of SQL injection and improving maintainability.External integration reliability:
Lotw.php, increasing robustness against temporary network issues and improving user experience when syncing with LoTW.QSO editing and upload status:
Logbook_model.phpto reset LoTW and eQSL upload status when a QSO is edited, ensuring that modified QSOs are correctly re-uploaded to these services. Also added support for ClubLog upload status.User interface and usability improvements:
Maintenance, migration, and documentation:
script.shto use the${DIRECTORY}variable for greater flexibility.utf8mb4_general_cifor broader compatibility.Logbook_model.php.