Summary
Improve the mactrack AJAX API for consistency, robustness, and fix critical bugs in mactrack_disable().
Critical bugs in mactrack_disable() (lib/mactrack_functions.php)
- Wrong table names: Uses
mactrack_devices and mactack_devices instead of mac_track_devices
- Wrong variable: Passes
$stat to mactrack_format_device_row() instead of $dbinfo
- Missing null check: No guard when
$dbinfo is empty (device not found)
Proposed improvements
High priority (bug fixes)
- Fix table names to
mac_track_devices
- Fix
$stat → $dbinfo
- Add null check for
$dbinfo before use
Medium priority (API consistency)
- Standardize JSON response envelope:
{ "success": true|false, "data": {...}, "error": "..." }
- Add HTTP status codes (200, 400, 404, 500)
- Validate
device_id, site_id, ifIndex at entry point
- Handle edge cases: empty
$dbinfo, disabled device, failed command
Lower priority
- Consolidate
mactrack_ajax.php and mactrack_ajax_admin.php into single router
- Add PHPDoc to
api_mactrack_* functions
- Use POST for state-changing actions (enable, disable, rescan)
Related
- Part of cross-plugin API consistency (see gpsmap API improvements)
- Ref: conversation on API improvements across plugins
Summary
Improve the mactrack AJAX API for consistency, robustness, and fix critical bugs in
mactrack_disable().Critical bugs in mactrack_disable() (lib/mactrack_functions.php)
mactrack_devicesandmactack_devicesinstead ofmac_track_devices$stattomactrack_format_device_row()instead of$dbinfo$dbinfois empty (device not found)Proposed improvements
High priority (bug fixes)
mac_track_devices$stat→$dbinfo$dbinfobefore useMedium priority (API consistency)
{ "success": true|false, "data": {...}, "error": "..." }device_id,site_id,ifIndexat entry point$dbinfo, disabled device, failed commandLower priority
mactrack_ajax.phpandmactrack_ajax_admin.phpinto single routerapi_mactrack_*functionsRelated