# Shared platform pieces ## Footer (`footer.php`) Flexible site-wide footer for hub, crashes, tickets, graphs, and builder consoles. **Configure:** edit `footer.config.php` (copy from `footer.config.example.php`). ### Layout ``` ┌─────────────────────────────────────────────┐ │ top (optional, full width) │ ├──────────────────────────┬──────────────────┤ │ left (optional / auto) │ right (optional) │ ├──────────────────────────┴──────────────────┤ │ bottom (optional, full width) │ └─────────────────────────────────────────────┘ ``` When `left` is null, the left column is built from `copyright_symbol`, `holder`, and year settings. | Key | Purpose | |-----|---------| | `top` | Full-width line above main row (`null` = hidden) | | `left` | Main left text; `null` = auto copyright line | | `right` | Main right text (e.g. build id, links) | | `bottom` | Full-width line below main row | | `holder` | Copyright name (default left) | | `copyright_symbol` | `©` (U+00A9) or empty | | `show_year` | Append year / range on default left | | `year` | Fixed end year, or `null` for current | | `year_start` | Start year (integer). With `year_through_current` → `2026 - current`; else range `2026–{end}` | | `year_through_current` | If true with `year_start`, year label is `{start} - current` (not a rolling end year) | | `use_i18n` | `data-i18n` on auto-built left column | | `footer_class` | Extra CSS class (always adds `platform-footer`) | **Per-page override** when rendering: ```php platform_render_footer([ 'right' => 'OTA: staging', 'bottom' => 'Internal only', ]); ``` **In PHP views:** `` (loaded via each app `bootstrap.php`). **Hub:** `examples/app_hub/index.php` (landing nginx runs it through PHP-FPM). **Static HTML export:** ```bash php examples/platform/scripts/render-footer-html.php ``` **Gitea** (`/git/`) uses the upstream Gitea UI; this footer does not apply there unless you customize Gitea templates separately.