# Features — bluecard.footprintapp.net

Evidence date: 2026-10-19. Source: `origin/prod` at `aa2cc42` (2022-10-19). `origin/master` at `3e123e6` is called out where it still differs.

Provenance: **Documented**, **Implemented**, **Inferred**, **Planned**, **Unknown**.

No feature list existed in the source repository. Status below is evidence from code and git, not a release record.

## Current (present on prod)

### Blue Card wizard

| Feature | What it does | Source |
|---|---|---|
| Incident step | Date, 24-hour time, venue, cause, both teams, provincial union | `application/modules/default/views/scripts/index/index.phtml`, `IndexController::indexAction` |
| Reporter step | Role, name, surname, email, mobile | same view |
| Player-as-reporter | Extra ID, age, position, gender, ethnicity, and the other-player step is removed | `Player_Selected` |
| Other-player step | Player identity, school/club, town/city, province, position, gender, ethnicity | section `playerdetails`. School, town, and province added in `f990a10` |
| BokSmart number | Shown for Referee and Coach only | `Player_Selected` |
| Extra contacts | One row by default, up to four, browser-enforced | `AddNewContact` |
| Consent step | SARIISPP paragraphs and an "Agree & Submit" button. No checkbox | consent section, jQuery Steps labels |
| Reference number | 8 hex characters generated per page view | `IndexController::random_id` |
| Thank-you panel | Reference, Sports Concussion SA contacts, download links | `indexAction` thank-you HTML, revealed by `Finished` |
| SA Rugby chrome | Banner, Springboks title, SARU copyright footer | `application/layouts/default.phtml` |

### Notification and storage

| Feature | What it does | Source |
|---|---|---|
| Submit | `POST /index/submit` stores the serialised form | `Finished`, `submitAction` |
| Player email body | Used when the role is Player | `player_contant` |
| Reporter email body | Used for every other role | `contant` |
| Privacy line | Light-blue sentence linking to the SARU privacy policy | both templates. Added in `eb445ff`, colour in `d6bc607` |
| Union copy | CC BokSmart reps for the named union | `Model_Bluecard::getUnionsEmails` |
| Contact copy | CC non-empty contact emails | `submitAction` |
| Attachments | Seven concussion files from `public/archives/bluecard/` | `submitAction` |
| Public downloads | Thank-you links to `public/archives/bluecarddownload/` | thank-you HTML |
| Save | Insert into `BlueCard_Consents` after the mail attempt | `Model_Bluecard::insertData` |

### Delivery

| Feature | What it does | Source |
|---|---|---|
| QA deploy | Push to `qa` zips the tree and runs CodeDeploy | `bitbucket-pipelines.yml` |
| Prod deploy | Push to `prod` does the same with prod variables | same file, `appspec.yml` |
| Apache start | ApplicationStart runs `service httpd start` | `scripts/start_server` |

## Present on master, not on prod

`master` was not updated after 10 March 2022. These are the import, not a later product.

| Feature | Evidence | Status |
|---|---|---|
| Blue Card as its own module | `application/modules/bluecard` on `master` | Superseded on the branch that became prod. The form moved into `default` in `85d79d4` |
| Match centre (tournaments, fixtures, commentary, match reports, cron, ajax refresh) | `application/modules/default` controllers on `master` | Not in the prod module tree |
| Login and password reset | `LoginController` on `master` | Not on prod |
| Food menu | `application/modules/menu` on `master` | Not on prod |
| Company registration, permits, users | `application/modules/companiesold`, `companyonl` on `master` | Not on prod |
| Second site tree | `website/` (26,740 paths) on `master` | Not in the prod root |
| Hosting probe pages | `test/php`, `test/fcgi`, `test/ssi` on `master` | Not an application test suite. Not on prod |

## Changed after the module move

All of these are on `bluecard-11-03-2022` and, through merges, on `qa` and `prod`.

| When | Change | Evidence |
|---|---|---|
| 2022-03-11 | Form becomes the top-level default module. Other modules drop out of `application/modules` | `85d79d4` |
| 2022-03-11 | Static `wp-content` and `wp-includes` added for the layout CSS | `e48e386` |
| 2022-05-05 | Download and email files updated | `4cc360d` |
| 2022-05-16 | Research-consent file replaced. Dated backups kept under `public/archives/.../backup.16-05-2022/` | `4b7c3a9` |
| 2022-05-25 | Email body includes the POPI / privacy sentence. Register also stored as `.xlsx.zip` | `eb445ff` |
| 2022-05-25 | Email banner background becomes `lightblue` | `d6bc607` |
| 2022-05-26 | Absolute links built in `IndexController` use `https` | `4e9ba84`. Layout font links remain `http` |
| 2022-10-18 | School/club, town/city, and province added for the player who is not the reporter. Legend text set to "Who was involved1" | `f990a10` |

## In the prod tree but not a live feature

| Item | Evidence | Status |
|---|---|---|
| `testAction` | `IndexController::testAction`, route `/index/test` | **Implemented** and reachable. Sends a real message to a hardcoded mailbox. Not a documented product feature |
| Unused models | `application/models` files other than `Bluecard.php`, `Unions.php`, `Ethnicity.php` | **Implemented** files. No reference from the default module. **Inferred** leftover |
| `updateData` on the Blue Card model | `Bluecard.php` | No caller on prod |
| Layout ini keys for admin, union, referee, gir, accreditations | `application.ini` | Layout files for those names are not on prod. Only `default.phtml` exists |
| `PG` plugins other than `LayoutPicker` | `library/PG/Controller/Plugin/` | Not referenced by the default module |
| `public/dompdf` | path on prod | Not referenced by `IndexController` |
| `public/178.json`, `public/209.json`, `public/archives/lastupdate.txt` | small leftover files. `lastupdate.txt` contains `{"date":"2018-09-16 21:45:18"}`. `178.json` is the text `Array` plus a 2018 timestamp | Not read by the Blue Card controller |
| `scripts/stop_server` | file exists | Not named in `appspec.yml` |
| Commented maintenance page | top of `public/index.php` | Not active |

## Planned

No roadmap, ticket, or TODO that describes future work was found. Nothing in this document is **Planned**.

## Deprecated or removed

No deprecation notice was found. The practical removal is commit `85d79d4`: the `bluecard` module path, the match-centre controllers, the menu module, the company modules, their layouts, and `website/` are absent from `prod`.

The prod application does not redirect old `/bluecard/...` URLs. Those routes 404 through `ErrorController` ("Page not found"). **Implemented** error page. Whether any external link still uses the old module path is **Unknown**.
