Commit graph

1883 commits

Author SHA1 Message Date
Peter Goodhall
ad80e94bd3 Optimize LoTW upload with batch QSO updates
Replaces individual QSO update queries with a new mark_lotw_sent_batch() method in Logbook_model for improved performance during LoTW uploads. Updates Lotw controller to use batch updates within a transaction, reducing database load and increasing efficiency for large QSO uploads.
2025-10-11 15:17:51 +01:00
Peter Goodhall
76f002b214 Revert "Add debug output and refactor queries for LoTW and logbook"
This reverts commit 4cad75be43.
2025-10-11 00:11:46 +01:00
Peter Goodhall
dbb058f198 Revert "Add error handling and verbose logging to LoTW controller"
This reverts commit 7a7b142ee8.
2025-10-11 00:11:38 +01:00
Peter Goodhall
7a7b142ee8 Add error handling and verbose logging to LoTW controller
Wrapped key operations in try-catch blocks to improve error handling and provide detailed error messages during LoTW certificate, QSO, and report file processing. Added verbose logging throughout the process to aid in debugging and monitoring, including status updates for each station profile and user.
2025-10-11 00:09:11 +01:00
Peter Goodhall
4cad75be43 Add debug output and refactor queries for LoTW and logbook
Added extensive debug output and error handling to LoTW upload and download processes for easier troubleshooting. Refactored SQL queries in Logbook_model and Logbookadvanced_model to simplify and optimize data retrieval, replacing subqueries with more direct joins and query builder usage. Removed migration 217_add_performance_indexes.php.
2025-10-11 00:08:03 +01:00
Peter Goodhall
a27b0cf571 Add input validation and parameterized queries to OQRS
Added server-side validation for callsign and station_id inputs in Oqrs controller to prevent invalid data and potential abuse. Updated Oqrs_model to use parameterized queries instead of string concatenation, improving security against SQL injection. Callsigns are now consistently uppercased before querying.
2025-10-10 22:34:06 +01:00
Peter Goodhall
aa5ff3ac11 Use active station profile in QSO controller
Replaced usage of session 'station_profile_id' with the active station profile ID retrieved from the stations model. Improved error handling and messaging when no active station profile is set. This ensures consistency and accuracy when accessing or updating station-specific data.
2025-10-10 18:01:31 +01:00
Peter Goodhall
17d9ef6aa9 Set controller methods to public visibility
Changed several controller methods in Qso.php from implicit or default visibility to explicit 'public' for better clarity and consistency. Also fixed indentation in cwmacrosave for improved readability.
2025-10-10 15:38:24 +01:00
Peter Goodhall
134f9a4995 Remove redundant return statement in Qso controller
Eliminated an unnecessary return statement after sending a JSON response in the Qso controller, improving code clarity.
2025-10-10 15:26:40 +01:00
Peter Goodhall
00aa3bcc0b Improve CW macro handling and error management
Enhanced the Qso controller with better error handling, input validation, and user/session checks for CW macro operations. Added a new cwmacros_test method for testing session data. Updated the footer JS to check for the message element before adding event listeners, preventing errors if the element is missing. Improved error handling in winkey.js when fetching macros to handle HTTP errors more gracefully.
2025-10-10 15:19:42 +01:00
Peter Goodhall
ad9e7b04e0 Improve CW macro saving and UI feedback
Enhanced macro saving with better input sanitization, error handling, and user feedback in Qso.php and Winkey.php. Updated modal forms to display save responses in a dedicated area. Improved JavaScript to handle default macro values and update button labels more robustly. Removed unnecessary WebSocket polling for CW speed in the footer.
2025-10-10 14:54:50 +01:00
Peter Goodhall
62380e0181 Expand band support and improve band display in bandmap
Added support for additional LF, MF, UHF, SHF, and EHF amateur radio bands in Bands model and bandmap view. Updated band ranges and ordering, and improved band name formatting in the bandmap UI for better clarity and consistency across all supported bands.
2025-10-04 23:05:20 +01:00
Peter Goodhall
d661b0a3b7 Remove Bandmap controller and enhance QSY mode handling
Deleted the Bandmap controller as part of code cleanup or refactoring. Improved the QSY command logic in Dxcluster by adding debug logging and handling the mode parameter more robustly. Updated the bandmap view to pass spot information, detect RBN spots, and send the appropriate mode (e.g., CW) with QSY commands.
2025-10-04 14:06:19 +01:00
Peter Goodhall
25a03ab1fa Add optimized radio command APIs and QSY integration
Introduces an optimized API endpoint to fetch all pending radio commands for a user in a single call, along with a maintenance endpoint for cleaning up expired and old commands. Updates the documentation to reflect these new endpoints and usage patterns. Adds a QSY endpoint to Dxcluster for queuing frequency/mode commands from the bandmap, and integrates client-side JavaScript to send QSY commands to the selected radio with user feedback. Enhances backend models to support user-scoped cleanup of expired and old commands.
2025-10-04 13:34:42 +01:00
Peter Goodhall
5c63e5099e Add radio command queueing and management system
Introduces a new radio command queueing system with API endpoints and a user interface for sending, viewing, and managing radio commands. Adds migration for the radio_commands table, extends the Cat model with command-related methods, and implements new controllers and views for both API and web interfaces. This enables integration with desktop apps and provides users with tools to send, track, and cancel radio commands.
2025-10-04 11:48:48 +01:00
Peter Goodhall
97195690b2 Integrate DX Cluster bandmap with QSO and layout
Refactored Dxcluster controller to use header and footer layouts. Removed standalone HTML structure from dxcluster/index.php to fit within the site layout. Added 'Open Bandmap' button and supporting JavaScript to qso/index.php for easier access to the bandmap from the QSO page.
2025-10-02 21:43:35 +01:00
Peter Goodhall
5f0c95804a Add user-specific bands to bandmap and persist radio selection
The bandmap now displays only the bands configured for the current user, using a new Bands model method to retrieve and order them. The band selection dropdown in the bandmap view is dynamically generated based on user bands, with a fallback to defaults. Additionally, the selected radio is now persisted in localStorage and synchronized across selects, and the bandmap window width was adjusted for better display.
2025-10-02 17:40:49 +01:00
Peter Goodhall
c39e727f9a Add DX Cluster controller and bandmap views
Introduces a new Dxcluster controller with authorization checks and two views: a main index page and an interactive bandmap for real-time DX spots visualization. The bandmap view includes a WebSocket connection to a DX Cluster server, dynamic spot rendering, zoom, band selection, and user interface enhancements.
2025-10-02 14:19:39 +01:00
Peter Goodhall
8ee56acb17 Remove Bandmap feature and related files
This commit removes the Bandmap feature, including its controller, views, JavaScript assets, and navigation menu entry. This is because it was broken upstream
2025-10-02 09:46:01 +01:00
Jonathan Naylor
025b462516 Add an EME Initials option to the Analytics menu option for EME
operators.
2025-09-24 19:27:49 +01:00
Peter Goodhall
952007467d Add latitude and longitude to DXCC lookup results
Enhanced the DXCC lookup in Logbook_model to include latitude and longitude in the returned array. Updated API controller to utilize these new fields when returning recent QSOs and callsign lookups, providing more detailed location data in API responses.
2025-09-12 13:14:31 +01:00
Peter Goodhall
b7c065dbdd Add input validation for recent_qsos limit parameter
The recent_qsos API endpoint now validates and sanitizes the $limit parameter, enforcing a default of 10, a minimum of 1, and a maximum of 50. Additionally, get_last_qsos in Logbook_model ensures $num is always an integer to prevent SQL injection.
2025-09-09 14:25:40 +01:00
Peter Goodhall
11c83f5908 Update Api.php 2025-09-09 14:21:53 +01:00
Peter Goodhall
72ea1e3353 Remove limit validation and update SQL join in logbook
Removed the limit parameter validation and sanitization from Api.php, delegating limit handling elsewhere. Changed the SQL query in Logbook_model.php to use LEFT JOIN for station_profile, ensuring all logbook records are included even if no matching station_profile exists.
2025-09-09 14:19:15 +01:00
Peter Goodhall
04ccd0809c Refactor Adif controller for code style and readability
Improved code formatting and consistency in the Adif controller by updating brace placement, indentation, and spacing. Enhanced readability and maintainability without changing core logic or functionality.
2025-08-29 10:59:42 +01:00
Peter Goodhall
76f55f7f27 Add Most Worked Callsigns feature
Introduces a new 'Most Worked Callsigns' page, controller, model, and view to display callsigns worked multiple times from the active logbook. Adds language support for this feature in multiple languages and updates the navigation menu to include a link to the new page. Also includes DataTables integration and filter options for bands, modes, satellites, date range, and minimum QSOs.
2025-08-23 21:11:36 +01:00
Peter Goodhall
a89b04966e Improve error handling for hams.at API fetch
Adds robust error handling and user feedback for failures when fetching satellite data from the hams.at API. The controller now sets error states and messages for connection issues and invalid responses, and the view displays appropriate alerts to users.
2025-08-22 17:27:35 +01:00
Peter Goodhall
67a652bce6 Add archive status for LoTW certificates
Introduces an 'archived' boolean column to the lotw_certs table via migration, adds model and controller logic to toggle archive status, and updates the view to display and allow archiving/unarchiving of certificates. This enables users to mark LoTW certificates as archived for better management.
2025-08-22 17:15:51 +01:00
Peter Goodhall
5ff5e12890 Add public radio status option to logbooks
Introduces a new 'public_radio_status' field to station logbooks, allowing users to enable or disable the display of radio status on public logbook pages. Updates migration, controllers, model, views, and language files to support this feature and provide UI controls for toggling the option.
2025-08-22 14:52:07 +01:00
Peter Goodhall
31ac64ae65 Add offset parameter to visitor map view
Introduces an offset parameter to the Visitor controller and updates the footer view to include the offset in the map URL. This enables paginated or segmented access to QSOs for public logbook pages.

Fixes #3317
2025-08-19 17:38:45 +01:00
Peter Goodhall
6af65e6dbb
[Feature] Add filtering options to public gridsquare maps 2025-08-19 17:28:24 +01:00
copilot-swe-agent[bot]
499e752dbd Fix form visibility and mode handling for visitor gridmap
Co-authored-by: magicbug <84308+magicbug@users.noreply.github.com>
2025-08-19 16:17:02 +00:00
copilot-swe-agent[bot]
251fe3cc35 Add filtering support to public gridsquare maps
Co-authored-by: magicbug <84308+magicbug@users.noreply.github.com>
2025-08-19 16:14:47 +00:00
Peter Goodhall
c229173b15
Update application/controllers/Options.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-17 22:14:18 +01:00
copilot-swe-agent[bot]
b1aacb94ab Fix appearance options flash message issue - show single success message
Co-authored-by: magicbug <84308+magicbug@users.noreply.github.com>
2025-08-17 20:59:23 +00:00
Peter Goodhall
a39ef57fdd Add IOTA status handling to DXCC list
Introduces batch processing of IOTA worked/confirmed status in the controller and model, and updates the DXCC list view to display IOTA badges with status and links. Enhances visibility of IOTA information for each DXCC entry.
2025-08-14 15:36:38 +01:00
Peter Goodhall
98ef3d8d83 Remove unused test method from Adif controller
Deleted the test() method from Adif.php as it was not used and contained only temporary validation code.
2025-08-13 15:58:04 +01:00
Peter Goodhall
d1bb6ff3ea Add DXCC satellite contact tracking and display
Introduces 'workedViaSatellite' status to DXCC tracking in both controller and model, including batch queries for satellite contacts. Updates the DXCC list view to show a badge when a country has been worked via satellite, improving visibility of satellite achievements.
2025-08-11 16:08:06 +01:00
Peter Goodhall
12127b8d85 Fix DXCC country matching case sensitivity
Updated SQL queries in Workabledxcc controller and model to use case-insensitive matching for DXCC country names by comparing UPPER(COL_COUNTRY) to UPPER(?). This resolves issues where country names with different cases were not matched correctly.
2025-08-11 15:12:14 +01:00
Peter Goodhall
9b17ff9250 Optimize DXCC list queries and add DB indexes
Refactored Workabledxcc controller and model to batch DXCC entity and worked/confirmed status lookups for improved performance. Added migration to create composite indexes on DXCC-related columns to further speed up queries. Updated migration version to 205.
2025-08-11 14:50:56 +01:00
Peter Goodhall
66d6fc91a8 Improve update status handling and error reporting
Added get_status endpoint to Update controller for serving update status. Enhanced update_status to handle directory creation and log errors. Updated footer view to use new endpoint, improved error handling and retry logic for status updates.
2025-08-09 21:35:47 +01:00
Peter Goodhall
046dc4b4ef Optimize dashboard data retrieval with consolidated queries
Replaced multiple individual queries in Dashboard controller with consolidated methods for setup counts and country statistics. Added getAllSetupCounts to Setup_model and get_countries_statistics_consolidated to Logbook_model to improve performance and reduce database load.
2025-08-09 21:24:35 +01:00
Peter Goodhall
3d7258c1f5 Optimize dashboard model loading and DXCC count
Refactored Dashboard controller to load common models in the constructor and optimize dashboard options processing using associative arrays for faster lookups. Replaced DXCC entity counting logic with a new get_total_dxcc_count() method in the Dxcc model to avoid loading all records, improving performance.
2025-08-09 21:14:39 +01:00
Peter Goodhall
278a4b384c Optimize QSO statistics retrieval with consolidated query
Replaced multiple individual queries for QSO statistics in Dashboard controller with a single consolidated query in Logbook_model. This improves performance by reducing database calls when fetching today's, total, monthly, and yearly QSO counts.
2025-08-09 21:10:04 +01:00
Peter Goodhall
b3eaa6d1cb Normalize submode returns to parent mode
Updated the mapping logic for several digital modes to return the parent mode name instead of the specific submode. This change ensures consistency in mode reporting and simplifies downstream processing.
2025-08-02 13:04:39 +01:00
Peter Goodhall
670d068243 Fix mode mapping for RTTY and CW submodes
Corrects the returned mode for RTTY/ASCI and CW/PCW submodes to consistently return 'RTTY' and 'CW' respectively, ensuring accurate mode representation.
2025-08-02 12:01:38 +01:00
Peter Goodhall
7d47bd08a9 Return 'SSB' for LSB and USB submodes in Lotw
Updated the Lotw controller to return 'SSB' instead of 'LSB' or 'USB' when the submode is LSB or USB. This change ensures consistent handling of SSB submodes.
2025-08-02 11:57:56 +01:00
Peter Goodhall
5c5b739e52 Remove debug log messages from Station controller and model
Eliminated unnecessary log_message calls that output posted data and state values as errors. This cleanup reduces log noise and improves code clarity.
2025-08-02 11:31:45 +01:00
Peter Goodhall
01b24e095e Update Station.php 2025-08-02 11:19:58 +01:00
Steven Dodd
36e21c2380
Forced http version and added compression 2025-07-31 15:55:07 +01:00