# Features — FootPrintLive

Evidence date: 2026-10-14. Source: `master` at `e54fddb`.

Status values used here: **Current** (present and reachable in code on this revision), **Completed** (a dated change that is in the tree), **In development** (only if a branch or comment says work is unfinished), **Planned** (a written future item), **Deprecated / removed** (commented out, copied aside, or replaced in a changelog line).

No feature is marked **Planned**. The repository has no backlog.

## Current features

### Identity

| Feature | Where | Status |
|---|---|---|
| Login page with terms and privacy text | `default` `LoginController::indexAction`, views under `login/` | **Current** |
| Terms check before session | `checktermsAction` | **Current** |
| Login that records acceptance | `loginuserAction`, `LoginNow` | **Current** |
| Logout | `logoutAction` clears auth and session, redirects to `/` | **Current** |
| Password reset email and form | `resetpasswordAction`, `resetAction` | **Current** |
| First-time profile (`/first`) | `FirstController` | **Current** |
| Online-user count in the menu | Menu calls `/login/isloggedin` pattern; menu shows "Online Users" for `UnionType` below 3 | **Current** |
| Hardcoded password override for a named account | `LoginController` and `Api_LoginController` | **Current**. Not a product goal. See business rules |

### Back office (default module menu)

| Feature | Entry | Status |
|---|---|---|
| Dashboard | `/` `IndexController::indexAction` | **Current** |
| Users list and add | `/members/`, `/members/add` | **Current** |
| Member profile | `/members/profile/id/{id}` | **Current** |
| Member list Excel | `MembersController::generateExcel` | **Current** |
| Organisations list and add | `/organisations/` | **Current** |
| Squad list and create | `/squad/`, `/squad/create` | **Current** |
| Competition squad payload | `SquadController::competitionsquadAction` | **Current** |
| Manage tournaments | `/tournament/` `TournamentController` | **Current** |
| List fixtures | `/fixture/` | **Current** |
| Referee assessors | `/fixture/assessors` when `UnionType` < 3 | **Current** |
| Add tournament popup | UserID 1 only | **Current** |
| Accreditations list and add | `/accreditation/`, `/accreditation/addtest/` | **Current** |
| My / list / add assessments | `/assessment/...` | **Current** |
| Scout list and players | `/scout/`, `/scout/players/` | **Current** |
| Blue card cases | `/bluecard/` | **Current** |
| News list and add | `/cms/news`, `/cms/addnews` | **Current** |
| Food sessions, nutrition, allergens, venues | `/food/...` | **Current** |
| FP4 Squad shortcut | `/union/` for seven hardcoded UserIDs | **Current** |
| System settings | leagues, cities, bonafide uploads, society leagues, national panels, duplicate users, add venue. `UnionType` < 3 | **Current** |

### Other modules

| Feature | Where | Status |
|---|---|---|
| Union squad workspace | `union` module, index redirects to `/union/squads/` | **Current** |
| Get Into Rugby squads | `gir` module, index redirects to `/gir/squads/` | **Current** in code. Menu link is commented out |
| Live scoring | `live` `ScoreController::scoringAction` | **Current** |
| Referee flows with SMS | `referee` module and copies under `live` and `pub` | **Current** |
| Accreditation collections | `accreditations` index redirects to collections | **Current** |
| Accreditation printer / code lookup | `printers` `IndexController` | **Current** |
| Admin members | `admin` `MembersController` | **Current**. Difference from `default` members is **Unknown** |
| App module squad/fixture/tournament screens | `app` controllers, same names as `union` | **Current** as files. Production entry is **Unknown** |
| JSON API | `api` controllers listed below | **Current** |
| Accreditation email queue | `CronController::schedual_test`, `mypass` | **Current** |
| MyPass PDF | `/pdf/mypass/id/{AAID}` fetched by the cron, rendered with dompdf | **Current** |
| BokSmart number script | `boksmartmssql.php` and `TestController` actions `boksmartAction`, `boksmartnumberAction`, `boksmartbybnumberAction` | **Current** as code. The root script is a manual probe |
| BrightSign image dump for one fixture | `BrightsignController`, fixture id fixed at 492 | **Current** and hardcoded |
| Stadium add/list | `StadiumsController` | **Current** |
| Messaging, medical, performance, citing, courses, calendar, documents, selectors | Matching `default` controllers | **Current** as controllers. Menu exposure varies |

### API surface (module `api`)

| Controller | Actions seen | Status |
|---|---|---|
| `LoginController` | `login`, fixture/squad/match-report/score/log lists by date | **Current** |
| `TournamentsController` | tournaments, squads, logs, news, profile, teams | **Current** |
| `TournController` | squad, career, commentary, leagues, list, profile, match report, logs, top scorers, fixtures, logos | **Current** |
| `FixturesController` | commentary file upload, fixture details, lists, scores, logs | **Current** |
| `PlayersController` | profile, profile test, photo | **Current** |
| `TeamsController` | profile | **Current** |
| `AccreditationController` | events, check, applicants, updates, images, services, pictures | **Current** |
| `GetdataController` | tournaments and logos (duplicate `tournamentsAction` declared twice) | **Current** |
| `MobileupdatesController` | `getteams` | **Current** |

Provenance for this table: **Implemented** (action names from the controllers).

## Completed changes (dated)

| Date | Change | Evidence | Status |
|---|---|---|---|
| 2019-05-13 | Member Excel export inserts ID Number between Gender and Age, and shifts Age, Ethnicity, Boksmart, National Panel, and League one column to the right | `changelog.txt` item 1; `MembersController` comments "HDP - 13/05/2019" | **Completed** on `master` |
| 2019-05-17 | Competition squad indemnity/checklist flag uses file type 23 ("Checklist Document") instead of file type 16, and keeps only the latest file whose `DateCreated` year is the current year | `changelog.txt` item 2; `SquadController::competitionsquadAction` | **Completed** on `master` |

Both changelog lines are under the heading "Release 1".

## In development

No file on `master` is marked in progress.

The remote branch `development` tip `6620f7e` (2019-11-19) is titled "Changes to VAP API's". That tree was not read, so those changes are not listed as features of this document set. **Unknown / Requires Confirmation.**

Branch `acc-tyrone` (`38e3150593b3aad5661b42af347d75f6971695b4`) was not read.

## Deprecated, copied, or unwired

| Item | Evidence | Status |
|---|---|---|
| Get Into Rugby menu item | HTML comment around the `/gir/` link in `menu/default.phtml` | **Deprecated / removed** from the menu. Route still exists |
| Distance learning menu | HTML comment around `/learning/` | **Deprecated / removed** from the menu. `LearningController` remains |
| Second scout menu that points at `/members/` | Commented block in the same menu | **Deprecated / removed** from the menu |
| `LoginController::indexoldAction` | Method comment "OLD FUNCTIONS" above the older POST login | **Deprecated** path still callable if the action is requested |
| `union_old` module | Directory name and a parallel controller set | **Deprecated** copy still in the tree |
| Controllers named `Copy of *.php` and `*Controller - Copy.php` | Present beside the live controllers | **Deprecated** files. Not routed by class name |
| `TestController`, `MytestController`, `SquadtestController`, `SquadstestController` | Large test and data-fix actions inside modules | **Current** as reachable PHP if the URL is requested. Not a supported product surface. **Inferred** |
| AppWiz push | `senddata_to_Api` exists; the call in `schedual_test` is commented, including the `AC==23` branch | **Deprecated** on the queue path. Method remains |
| Commented database bootstrap | `Bootstrap::_initDb` is commented and is not the adapter in use | **Removed** from startup. The ini adapter is the one that runs |
| SparkPost client | Files under `public/SparkPost` only. No `new SparkPost` in `application/` | Vendored, **unwired** |
| `schedual()` | Empty method that exits | Unused |
| Scan-host Sonar files | Named on OVER-127, absent from git | Not a feature of this revision |

## Recently changed, relative to this snapshot

The newest product edits called out by the project itself are the two May 2019 changelog items. The newest git commit on `master` is the September 2019 import of the whole tree, which does not describe a feature.

## Feature map by area

```text
Login / first profile
  -> Dashboard (or union squads)
       -> Members, organisations, squads
       -> Tournaments and fixtures
       -> Accreditations -> cron MyPass email
       -> Assessments, scout, blue card, news, food
       -> Settings (national / union type < 3)
Live score and referee SMS sit beside the back office
API reads the same fixtures, squads, and accreditations as JSON
```

Provenance: **Inferred** structure from the routes above. It matches the controllers that were opened.
