# Features — menu.mypass.zone

Evidence date: 2026-10-09. Source: `master` at `ca37151` (2022-07-21).

Status words mean:

- **Active** — a controller action renders it and the menu views link to it, or the layout includes it.
- **Present, not linked** — an action or view file exists and the menu flow does not navigate to it.
- **Unused in this app** — files exist and no controller here calls them.
- **Inactive** — left in the tree commented out.

## Current features

### F-01 — Venue list

Active.

`/` loads venues for tournament `284` and links each one to its dates. Cards show image, name, and description.

Evidence: `application/modules/default/controllers/IndexController.php` (`indexAction`), `application/models/MenuVenues.php` (`getAllByID`), `application/modules/default/views/scripts/index/index.phtml`.

### F-02 — Date picker

Active.

`/session/dates/id/{VID}` lists one tile per distinct date for the venue. The label is the day and month. Back returns to `/`.

Evidence: `SessionController::datesAction`, `application/models/TournamentFoodSession.php` (`getAllByVenue`), `views/scripts/session/dates.phtml`.

### F-03 — Session picker

Active.

`/session/menus/id/{SID}` lists the sessions on that session's venue and date, with image, title, date, start time, and end time.

Evidence: `SessionController::menusAction`, `getAllByVenueAndDates`, `views/scripts/session/menus.phtml`.

The back control in the sub-heading has a broken `href` (`href="/` is not closed). The venue name in the title is a separate, valid link back to the date list.

### F-04 — Menu items

Active.

`/session/menu/id/{SID}` prints each `SessionFood_Items` title and description in `Position` order, and shows a QR code for the matching `www.sarugby.online` menu URL.

Evidence: `SessionController::menuAction`, `application/models/FoodSessionItems.php` (`getAll`), `views/scripts/session/menu.phtml`.

### F-05 — Nutrition and allergen popup

Active from the menu page script.

Dish anchors are rewritten in the browser. A click opens a Bootstrap modal and loads `/session/nutrition/id/{id}` without the layout. The fragment shows allergens (image and title) and portion, energy, protein, carbohydrate, and fat.

Evidence: script in `session/menu.phtml`, `SessionController::nutritionAction`, `application/models/Nutritions.php`, `application/models/Allergens.php`, `views/scripts/session/nutrition.phtml`.

### F-06 — Site chrome

Active.

Springboks title, SA Rugby banner, SARU copyright, Sportsline CSS and jQuery. The banner's link target is `/menu`.

Evidence: `application/layouts/default.phtml`.

### F-07 — Error pages

Active as the Zend error handler.

404 for a missing route, controller, or action. 500 for other exceptions. Views: `views/scripts/error/error.phtml` and `default.phtml`.

Evidence: `application/modules/default/controllers/ErrorController.php`.

## Present, not linked

### F-08 — Session index

`/session` (`SessionController::indexAction`) assigns nothing and has no dedicated view script in the tree beyond the other session actions. The layout still renders.

### F-09 — Allergen view file

`views/scripts/session/allergen.phtml` is empty. There is no `allergenAction`. Allergens are rendered inside the nutrition fragment.

### F-10 — Sportsline navigation partial

`views/scripts/menu/default.phtml` is a navbar with "Home" (`http://www.sarugby.co.za`) and "Menu" (`/menu/`). `menu/template.phtml` is present. The layout's `partial('/menu/default.phtml')` calls are commented out. There is no menu controller.

### F-11 — Model write methods

`insertData`, `updateData`, and `deleteData` exist on `MenuVenues`, `TournamentFoodSession`, `FoodSessionItems`, `Nutritions`, and `Allergens`. No action in this repository calls them. Menu editing is not a feature of the running pages.

## Unused or stub features in this tree

These files ship in the repository. No menu controller calls them.

| Area | Evidence | Notes |
|---|---|---|
| Fixtures, scores, squads, tournaments, unions, positions, player profile | `Fixture.php`, `Copy of Fixture.php`, `FixtureScores.php`, `Squad.php`, `Tournament.php`, `Unions.php`, `Positions.php`, `Profile.php`, `GirProfile.php` | `Positions.php` and `GirProfile.php` call `Zend_Auth`. `Fixture.php` can construct `Model_Profile` |
| Accreditation and permits | `AccreditationList.php`, `AccreditationPermits.php`, `AccreditationGates.php`, `AccreditationLoadingZones.php`, `AccreditationLoadingServices.php`, `AccreCompanyTypes.php`, `AccreVehicleTypes.php` | `AccreditationPermits` can construct `Model_AccreditationList` |
| Companies and B-BBEE | `CompanyProfile.php`, `CompanyEvents.php`, `UserProfile.php`, `BBEELevel.php`, `BBEETypes.php` | `CompanyProfile` selects email and password columns from `CompaniesLogin` |
| News, match reports, logs, countries, ethnicity, blue card | `NewsArticles.php`, `MatchReport.php`, `Logs.php`, `Country.php`, `Ethnicity.php`, `Bluecard.php`, `ComentryAndCiting.php` | Table names only. Not traced further because nothing in the menu flow calls them |
| Inactive players screen | `views/scripts/index/inactive/players.phtml` | Static widget markup. No action renders this path |
| View helpers | `views/helpers/Efiling.php` returns the string `34`. `Userdetails.php` returns a fixed string. `image.php` and `Controller.php` are present | Not referenced by the menu views |
| `library/Other/Functions.php` | Email and date helpers | Not referenced by the three controllers |
| `public/dompdf` | Vendored PDF library and its demo pages | No application PHP references dompdf |
| `public/178.json`, `public/209.json` | Static files in the web root. `209.json` is a 2018 rugby log for tournament id `209` | Not referenced by application code. Tournament `209` is not the menu filter (`284`) |
| `public/limitless`, `public/bootstrap2`, `public/global_assets`, `public/dist`, `public/starters` | Theme and plugin assets | The menu layout uses the Sportsline files under `wp-content`, not these trees |
| `public/error_log` | PHP notices from 2018-10-03 for `TournamentsController` under `/home/sarugby/public_html/` | Historical log committed with the import. That controller is not in this repository |

## Planned features

None are described in the repository. **Unknown / Requires Confirmation**.

## Recently changed (last commits on master)

| Commit | Date | Feature effect |
|---|---|---|
| `051af10` | 2022-07-19 | Gitignore for `application.ini`. No product behaviour |
| `e1a466e` | 2022-07-20 | Initial application, including the menu controllers and the previous bluecard deploy path |
| `ca37151` | 2022-07-21 | Deploy destination changed to `/mnt/data/www/html/mypass.zone/menu.mypass.zone/`. No application code change |

No product behaviour has changed in Git since the import on 2022-07-20.

## Deprecated or removed

- Maintenance takeover in `public/index.php` (message that the site is down, then `exit`) is commented out. Inactive.
- HTTPS and `www` redirect rules in the root `.htaccess` are commented out. Inactive.
- Layout include of the sports navigation partial is commented out. Inactive.

## Not features of this product

- WordPress as an application. `wp-content` and `wp-includes` are static theme files. There is no WordPress bootstrap in the request path. `public/index.php` boots Zend.
- CodeDeploy branch deploys from `master`. Pipelines are defined only for `qa` and `prod`.
- SonarQube scan scripts named in the onboarding brief. They are not in `master` at `ca37151`.
