# Features — Sheriff

Evidence date: 2026-10-04.

Source: `git@bitbucket.org:overdrive/sheriff.git`, `master` at `6269872`.

Status words used here:

- **Current** — on `master` and reached by a public page, or present as library code.
- **Completed** — a change that landed in git and is still the behaviour.
- **In development** — none found.
- **Planned** — none found.
- **Deprecated / removed** — removed or left unreachable.
- **Not wired** — file exists and no public script includes it.

## Current features

### Public brochure

| Feature | Status | Entry | Body | Last content commit |
|---|---|---|---|---|
| Home, bilingual welcome, physical address, telephone | Current | `index.php` | `home.htm` | `497d493` 2025-05-20 |
| Immovable auction notice | Current | `immovable.php` | `immovable.htm` | `089abd8` 2023-11-14 |
| Movable auction catalogue | Current | `movable.php` | `movable.htm` | `089abd8` 2023-11-14 |
| Shipping contact | Current | `shipping.php` | `shipping.htm` | `16a8f16` 2022-11-25 |
| Jurisdiction suburb table | Current | `jurisdiction.php` | `jurisdiction.htm` | `16a8f16` 2022-11-25 |
| Contact directory | Current | `contact.php` | `contact.htm` | `578206c` 2023-11-16 |
| Shared header, six-item menu, banner, footer | Current | `layouts/Layout1.php` | — | `578206c` 2023-11-16 (Wynberg East telephone) |

Menu highlighting is the string compare in `layouts/Layout1.php` (`$curPage == "Index"` and the five siblings).

### Presentation

| Feature | Status | Where |
|---|---|---|
| Fixed 1000px header, banner, and content column | Current | `css/styles.css` (`.Header`, `.Banner`, `.Content`) |
| Grey menu bar | Current | `css/styles.css` `.Menu` |
| Top background image | Current | `.topBackground` uses `images/backgroundTop.png` |
| Office logo | Current | `images/SASSLogo.png` in the header |
| Banner image | Current | `images/Banner.png` |
| Footer shadow image | Current | `images/FooterShadow.png`, used by `.FooterContact` and `.FooterDisclaimer` in `css/styles.css` |
| Root favicon | Current file | `favicon.ico` is in the tree. The header links `images/icon.ico`, which is not in the tree |

### Inherited Nemo library (present, not used by the six pages)

These classes load, or can load, with the public bootstrap, but the six scripts never call their screen methods.

| Piece | File | What it contains | Public pages |
|---|---|---|---|
| `NemoBasic` | `_nemo.basic.cls.php` | Display, directory scan of `layouts/` and `modules/`, unused Celestis header, footer, partner links, and Google Analytics snippet | `Display()` is used. The Celestis methods are not called |
| `Nemo` | `_nemo.cls.php` | Requires `$_SESSION[USER]` or redirects | Not instantiated |
| `NemoMenu` (basic) | `_nemo.menu.basic.cls.php` | Hard-coded and SQL menu builders (`tblMenuLevel1`, `tblMenuLevel2`) | Included. `BuildMenuSQL()` is not called |
| `NemoMenu` (full) | `_nemo.menu.cls.php` | A second class with the same name | Not included on the public path. Loading it after the basic class would redeclare `NemoMenu` |
| `NemoDatabase` | `_nemo.database.cls.php` | `mysql_query` CRUD against a table name passed to the constructor | Included. Not constructed |
| `NemoEmail` | `_nemo.email.cls.php` | MIME mail, template load from `tblEmailTemplate`, an AJAX `GetTemplate` branch | Included. `Send()` is not called. The AJAX branch runs only when `$_REQUEST['ajaxRequest']` is set |
| `NemoControl` | `_nemo.control.cls.php` | Form control helper | Constructed in `NemoBasic`. The layout does not print its output |
| `NemoList`, `NemoDetails`, `NemoReport` | `_nemo.list*.cls.php`, `_nemo.details.cls.php`, `_nemo.report.cls.php` | SQL lists, detail forms, reports | Not included by the six scripts |
| Helpers | `system.functions.inc.php` | Dates, paging, `Login()`, `SendSMS()`, spam and login inserts, PDF encrypt | Included. The six scripts do not call `Login()` or `SendSMS()` |

`Login()` writes `celusername` and `celpassword` cookies and stores the password on `$_SESSION`. Nothing in the six pages calls it. Provenance: **Implemented**, unused on the public path.

## Completed changes

| Change | Commit | Date | What a visitor would notice |
|---|---|---|---|
| PHP 8 compatibility notes and edits | `4aa934b` and the three Wessels commits on 2023-11-14 | 2022-11-28 and 2023-11-14 | No new page. Dynamic properties were declared on `NemoBasic`. A null `HTTP_REFERER` is coalesced to `""` before `explode` |
| Immovable and movable notices replaced from production | `089abd8` | 2023-11-14 | Those two HTML files changed. The commit message says the files were copied from prod |
| Contact details | `578206c` | 2023-11-16 | Contact page edited. Footer telephone for Sheriff for Wynberg East set to `021 224 0055`. Home postal box text corrected, then later removed |
| Postal address removed from home | `497d493` | 2025-05-20 | "Postal Address" / "Pos Adres", PO Box 18162, and Docex 16 no longer appear |
| `E_STRICT` dropped from error reporting | `6269872` | 2025-05-20 | No visible page change. `display_errors` stays on |

## In development

None. The only branch is `master`. No TODO, FIXME, or roadmap file was found that describes unfinished product work. Commented blocks exist (Celestis methods, database error messages, the Mark Withers contact cell). Those are leftovers, not a named in-progress feature.

## Planned

None found.

## Deprecated or removed

| Item | Status | Evidence |
|---|---|---|
| Postal address on the home page | Removed 2025-05-20 | `497d493` |
| `E_STRICT` in `error_reporting` | Removed 2025-05-20 | `6269872` |
| Mark Withers as Office Supervisor on the contact page | Not rendered. The cell is an HTML comment | `contact.htm` |
| `get_magic_quotes_gpc` branch | Commented out, with a PHP 8 note | `system.functions.inc.php` |
| `NemoBasic` database construction | Commented out, with a PHP 8 note dated 24/11/2022 | `_nemo.basic.cls.php` |
| Host-specific `BASE_URL` values in `index.php` (`localhost/Sheriff`, `dev.overdrive.co.za/Sheriff`) | Still in the file, overwritten by `system.php` before the page object is built | `index.php`, `system.php` |

## Not wired (in the tree, not served by the six scripts)

| Path | Note |
|---|---|
| `immovable.inc.htm` | Older auction lines, including Thursday 8 September 2005 and December 2013 sales for other sheriffs (Cape Town East, addresses in Kenilworth, Vredehoek, Woodstock). No PHP file sets `includes` to this name |
| `layouts/immovable.htm`, `layouts/movable.htm` | Extra Word HTML sitting next to the real layout PHP. `Display()` loads `Layout1.php`, not these files |
| `js/immovable.htm`, `js/movable.htm`, `js/index.html`, `js/movable.doc` | Copies under `js/`. The header does not use them as pages |
| `home_files/`, `contact_files/`, `immovable_files/`, `movable_files/`, `jurisdiction_files/`, `shipping_files/` | Word export sidecars (theme, file list, images) |
| `immovable.docx`, `movable.docx`, `movable.doc`, `Immovable.zip`, `layouts/immovable.docx` | Office documents. Not linked from the menu |
| `*20221128` and `_nemo.basic.cls.php202211228` | Snapshots taken around the PHP 8 edit. PHP does not execute them |
| `modules/` | Referenced. Directory absent |

## Front-end scripts that are linked

`layouts/header.incl.php` emits script tags for:

- `js/jquery.js`
- `js/passwordstrength.js`
- `js/jquery.inputmask.js`
- `js/jquery-ui-1.8.6.custom.min.js`
- `js/scripts.js`
- `js/maxlength.js`
- `js/jquery.cycle/jquery.cycle.min.js`

Those files are in the repository. The six pages do not contain a password field, an input mask, a date picker, or a cycle slideshow. `NemoBasic::Header()` contains a commented jQuery Cycle call. Provenance: **Implemented** as linked files. Use by the current notices is not visible in the page bodies.

Also in `js/` and not linked by the header: `CalendarControl.js`, `md5.js`, `jquery.cycle` source and examples.

## Stylesheets the header names that are absent

| Linked path | In the repository? |
|---|---|
| `css/styles.css` | Yes |
| `css/ie.lamp.css` | No. Emitted inside an IE conditional when `SERVER_NAME` is `lamp` |
| `css/ie.live.css` | No. Emitted for every other host, inside the same IE conditional |
| `css/passwordstrength.css` | No |
| `css/smoothness/jquery-ui-1.8.6.custom.css` | No |

Provenance: **Implemented** links, missing files.

## Recently changed

The last product-facing change is the home-page postal-address removal on 2025-05-20. The same day removed `E_STRICT` from `system.php`. No feature flag accompanies either change.
