Commit graph

1927 commits

Author SHA1 Message Date
Peter Goodhall
e572821b96 Add Personal Propagation Advisor feature
Introduces the Personal Propagation Advisor, allowing users to analyze their own QSO data to determine the best times, bands, and modes for working specific DXCC entities. Adds a new controller, model methods, view, JavaScript, and language strings in multiple languages. Updates navigation and footer to support the new feature.
2026-01-05 22:14:00 +00:00
Peter Goodhall
b368cba876 Enforce write permissions for QSO modifications
Replaced checks for QSO accessibility with stricter write permission checks across controllers and models. Added a new check_qso_is_writable method to Logbook_model to ensure only authorized users can modify or delete QSOs, including shared logbook scenarios. Updated QSO, Qsl_model, and Sstv_model to use the new permission logic for all write operations.
2025-12-23 11:06:19 +00:00
Peter Goodhall
d9e0fe0900 Improve QSO access checks and error handling
Enhanced the QSO access logic to allow access if the QSO belongs to the user or is part of a user's active logbook, including shared permissions. Added a guard in the controller to prevent accessing missing or inaccessible QSOs, redirecting with a notice if access is denied.
2025-12-20 22:03:12 +00:00
Peter Goodhall
3d77c3d4a0 Revert "Handle missing or inaccessible QSO in logbook view"
This reverts commit 3c2d8461cb.
2025-12-20 21:56:30 +00:00
Peter Goodhall
1583590ecf Improve logbook ownership checks and permissions
Updated Logbooks controller to use profile_clean for station lookup and added a notice for missing stations. Enhanced Setup_model to count logbooks a user owns or has permissions for, ensuring accurate logbook statistics for users with shared access.

Fixes #3389
2025-12-20 21:50:21 +00:00
Peter Goodhall
1aeec6e72d Handle missing station_callsign in QRZ import
Added a check and error log for missing station_callsign during QRZ import. This helps identify records with incomplete data and prevents potential issues when processing QSOs.
2025-12-20 11:25:58 +00:00
Peter Goodhall
e78dedc70e Add checks for entity name in DXCC lookup
Wrapped assignments of 'dxcc_name' with checks to ensure the entity is an array and contains a 'name' key. This prevents potential errors if the entity lookup fails or returns unexpected data.
2025-12-20 11:14:31 +00:00
Peter Goodhall
3c2d8461cb Handle missing or inaccessible QSO in logbook view
Adds a check to ensure that if a QSO is not found or not accessible, the user is redirected to the dashboard with a notice. This prevents errors when attempting to access non-existent or unauthorized QSOs.
2025-12-20 11:10:52 +00:00
Peter Goodhall
429d23fef4 Fix undefined index error for DXCC entity name
Added a check to ensure the DXCC entity is an array and contains a 'name' key before assigning 'dxcc_name' to prevent undefined index errors.
2025-12-18 17:39:42 +00:00
Peter Goodhall
c88c2435bf Remove custom date filter from QRZ data download
Simplifies the QRZ data download process by removing the custom date selection logic. Now, all QRZ data is downloaded regardless of the date specified in the request.
2025-12-09 21:38:49 +00:00
Peter Goodhall
2bd503cdcd Add support for managed email configuration
Introduces logic to detect and enforce centrally managed email settings. When managed, email options are displayed as read-only and cannot be changed by users; attempts to save changes are blocked with a notice. The email options view now conditionally renders a read-only summary and test email form if management is enabled.
2025-12-09 16:09:15 +00:00
Peter Goodhall
9fe5b808a5 Deduplicate LoTW users by callsign during import
Changed the import logic to deduplicate LoTW users by callsign, keeping only the latest timestamp for each callsign. Updated batch insertion to process only unique callsigns and improved reporting to show both total records read and unique callsigns inserted.
2025-12-02 22:58:56 +00:00
Peter Goodhall
0848a9b4c0 Add open registration and public signup feature
Introduces open registration settings in the options area, allowing administrators to enable or disable public user signup. Adds a registration options page, updates sidebar navigation, and implements a public signup form and controller logic. Also refines user model to ensure correct data types for user fields and updates language strings for registration. The login page now links to signup when open registration is enabled.
2025-12-02 18:10:37 +00:00
Peter Goodhall
88f328581b Added Awards Settings 2025-12-02 13:32:11 +00:00
Peter Goodhall
79cd4b4397 Add user-level backup and restore functionality
Introduces user-facing JSON+ZIP export and import for stations, logbooks, and QSOs, including preview and progress views. Updates backup controller to allow all authenticated operators (level 2+) and replaces legacy backup card with new workflow in the UI. Adds new views for import preview and progress, supporting selective import and conflict handling.
2025-11-24 17:30:40 +00:00
Peter Goodhall
a015061f95 Correct FPDF font path definition in Labels controller
Updated the FPDF_FONTPATH definition to remove the 'unifont/' subdirectory, as AddFont() automatically appends it. This ensures fonts are loaded correctly when generating PDFs.
2025-11-22 17:44:36 +00:00
Peter Goodhall
c3ade210cb Improve error handling in label generation
Adds logging of actual errors during label generation for better debugging. Updates error messages to include the specific exception message, and ensures FPDF_FONTPATH is only defined if not already set.
2025-11-22 17:44:03 +00:00
Peter Goodhall
a2255a081c Define FPDF font path before PDF creation
Added a definition for FPDF_FONTPATH to ensure the correct font directory is set before creating the PDF object in the Labels controller.
2025-11-22 17:42:18 +00:00
Peter Goodhall
4282b81172 Add bold callsign styling to label PDF output
Introduces Add_Label_With_Bold_Callsign to render the callsign in bold and larger font on label PDFs. Updates font path to use unifont, adds DejaVuSans-Bold font files, and modifies label generation to use the new method for improved visual emphasis of callsigns.
2025-11-22 17:17:11 +00:00
Peter Goodhall
ac27e6a653 Add welcome email feature for new and existing users
Introduces functionality to send a welcome email with credentials to new users upon creation and allows admins to resend a reminder email (without password) to existing users. Adds email templates, UI options for sending emails, and improves user management interface with new actions and enhanced layout.
2025-11-22 15:23:47 +00:00
Peter Goodhall
476b59abc4 Add logbook sharing email notification
Introduces email notifications when a logbook is shared with a new user, including a new email template and improved error logging for email sending. Also enhances the test email UI with a loading spinner and updates error messages for better clarity.
2025-11-22 15:09:44 +00:00
Peter Goodhall
f2b8a3eeaa Redirect to edit page after logbook creation
After creating a new logbook, users are now redirected to the edit page for the newly created logbook instead of the logbooks list. The add method in Logbooks_model now returns the new logbook ID to support this change.
2025-11-22 14:38:53 +00:00
Peter Goodhall
b287af642b Add multi-user logbook sharing and permissions
Introduces logbook sharing with read, write, and admin permission levels via a new station_logbooks_permissions table and related migration. Updates controllers, models, and views to support managing collaborators, restricts sensitive actions to owners/admins, and adds UI for sharing management. Also adds user lookup by callsign and improves logbook/station location access logic.
2025-11-19 15:37:34 +00:00
Peter Goodhall
e5f815b772 Handle errors when fetching DXpedition data
Added error handling to dxcclist controller to manage failures when fetching or decoding DXpedition data. Updated the view to display error messages to users if data retrieval fails or returns invalid data.
2025-11-18 13:16:22 +00:00
Peter Goodhall
d9e0504e7a Improve error handling for DXpedition data fetch
Added error checks when fetching DXpedition data in Workabledxcc_model and updated Dashboard controller to only sort valid records. The upcoming_dxccs view now displays a warning message if an error occurs, improving user feedback and robustness.
2025-11-18 13:14:41 +00:00
Peter Goodhall
d26068bd3b Add DXCC worked status and radio QSY to DX Cluster
Enhances DX Cluster by showing DXCC entity and worked status per spot, including new band/country indicators. Adds radio selection and QSY functionality, updates UI with improved filters and spot marker styling, and provides user feedback for frequency actions.
2025-11-17 22:40:07 +00:00
Peter Goodhall
38b3003f90 Add callsign worked status check to DX Cluster
Introduces a new API endpoint in Dxcluster.php to batch check if callsigns have been worked, with band-specific and overall status. Updates the DX Cluster view to display worked status icons next to callsigns and asynchronously fetches status for visible spots, improving user awareness of worked contacts.
2025-11-17 17:31:20 +00:00
Peter Goodhall
45528ee293 Add new gridsquares by band to monthly report
Introduces per-band breakdown of new gridsquares in the monthly report, including model, controller, and view changes. The report now displays new gridsquares grouped by band, as well as improved details for new DXCCs and satellite activity breakdowns.
2025-11-14 17:49:25 +00:00
Peter Goodhall
36ae819a22 Show callsign for new DXCC and grid entries in report
Adds callsign information to new DXCC and grid entries in the monthly report, both in the backend data and frontend display. Also updates JSON export to include a filename for downloads. This provides more detailed context for each new entity or grid worked during the month.
2025-11-14 17:11:18 +00:00
Peter Goodhall
66e2376ac4 Add monthly report feature for amateur radio activity
Introduces a new Monthlyreport controller, model, and views to generate comprehensive monthly activity reports for amateur radio logbooks. The feature includes summary statistics, new DXCC entities and gridsquares, breakdowns by mode, band, and propagation, and export options in JSON and text formats for AI/blog post generation. Also adds a navigation link to the header for easy access.
2025-11-14 16:39:56 +00:00
Peter Goodhall
d1378a1deb Add error handling to get_most_worked method
Wrapped database queries in a try-catch block to log errors and prevent failures in the get_most_worked method. Also improved null checks and result array initialization for robustness.
2025-11-14 14:41:36 +00:00
Peter Goodhall
4bd574720c Add advanced statistics features and UI enhancements
Introduces new summary statistics, trends, continent, and most worked data endpoints to Statistics controller, with corresponding AJAX and UI updates in statistics.js and index.php. Adds summary cards, date range filtering, error handling, and improved chart/table rendering for a more interactive statistics dashboard.
2025-11-14 14:36:31 +00:00
Peter Goodhall
63ec8ff1c4 Add bulk satellite assignment to logbook entries
Introduces functionality to assign satellite information to multiple QSOs in Logbook Advanced. Adds controller and model methods for updating satellite data, a new view for satellite selection, and corresponding frontend logic to handle user interaction and update selected entries.
2025-11-07 15:28:18 +00:00
Peter Goodhall
ec1f2d8ddd Add station location selection to Logbook Advanced
Introduces the ability to view and change the station location for selected QSOs in Logbook Advanced. Updates backend, frontend, and QSO model to support station location display and modification, including new UI elements and AJAX handlers. Removes SimpleFLE documentation file.
2025-11-06 11:00:44 +00:00
Peter Goodhall
f2e63b2d0b Support multiple gridsquares in VUCC validation
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.
2025-10-18 14:39:44 +01:00
Peter Goodhall
7d64275095 Add input validation and secure queries for VUCC details
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.
2025-10-18 11:31:48 +01:00
Peter Goodhall
cd344ff71f Update eQSL authentication comment in Eqsl controller
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.
2025-10-14 15:57:54 +01:00
Peter Goodhall
3390d80cd2 Add retry logic to LoTW cURL download
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.
2025-10-13 22:07:00 +01:00
Peter Goodhall
15132cf44d
Update application/controllers/Update.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-13 18:04:49 +01:00
Peter Goodhall
8db65e7b6f Improve LoTW download with cURL and better encoding
Replaces file_get_contents with cURL for downloading LoTW data to provide better error handling and logging. Switches to rawurlencode for credentials to prevent encoding issues. Adds debug and error logs for easier troubleshooting and checks HTTP response codes and file write success.
2025-10-13 16:46:53 +01:00
Peter Goodhall
44a729f335 Optimize QRZ QSO upload/download with batch processing
Improves performance of QRZ QSO upload by batching database updates in the controller and model, reducing the number of individual update queries. Adds a new migration to create indexes supporting QRZ upload/download operations. Refactors QRZ download batch processing to use temporary tables and efficient JOINs for large batch updates, further enhancing speed and scalability.
2025-10-13 15:01:25 +01:00
Peter Goodhall
ce99aa1559 Improve LoTW user CSV import robustness and validation
Enhances the LoTW user activity CSV import by adding network timeouts, user agent, and file validation before truncating the database. Implements batch inserts with error handling, validates callsign format, checks for minimum record count, and provides clearer error messages to improve reliability and data integrity.
2025-10-13 13:57:41 +01:00
Peter Goodhall
db87600d3b Use TRUNCATE for clearing lotw_users table
Replaced empty_table with TRUNCATE TABLE for the lotw_users table to improve performance when clearing its contents before importing new data.
2025-10-13 13:47:43 +01:00
Peter Goodhall
e6ecfa4f1b Require Clublog username to be a valid email address
Enforces that Clublog usernames are valid email addresses throughout the application, reflecting Clublog's policy change to no longer accept callsigns as usernames. Updates validation in controllers, models, and views, adds a migration to clear non-email usernames, and updates language files in multiple languages to clarify the requirement.
2025-10-13 13:40:56 +01:00
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