# Features — knowmorescan (Knowmore)

Evidence date: 2026-10-10. Source: `git@bitbucket.org:overdrive/knowmorescan.git`, `master` at `71190cf` (2022-06-02).

There is no features document in the source repository. Status labels:

- **Current** — present on `master` and referenced by a live entry point or a class that other code calls.
- **Completed** — called out by a commit or a comment as finished work, and still in the tree.
- **In development** — none identified. The last commit is 2022-06-02.
- **Planned** — none written down in the repository.
- **Deprecated / removed** — still in the tree but comments or commented routes say it should not be used, or a newer path replaced it.
- **Uncertain** — file exists; whether production still uses it was not established.

## Current — public site

| Feature | Where | Notes |
|---|---|---|
| Home | `index.html` | Static WordPress export. Title "Home - Knowmore". Promotes the Advanced Executive Assistant course |
| About | `about.html` | Audience, purpose, CPD through Old Mutual Wealth, partner-only content |
| Courses index and audience pages | `courses.html`, `executive-assistants-and-support-staff.html`, `financial-planners-advisers-and-para-planners.html`, `business-owners.html` | TCF course and Executive Assistant course are named in the page descriptions |
| Business tools marketing | `business-tools.html`, `business-assesment-tool.html`, `client-satisfaction-survey-tool.html`, `gap-analysis.html`, `valuation-service.html` | Filename uses "assesment" |
| Workshops | `workshops.html` | Advice and business-management workshops |
| Publications | `publications.html` | Static library page. CMS articles are a separate admin (see below) |
| CPD points | `cpd-points.html` | Marketing page. The learner report is `training/my.cpd.points.php` |
| Login | `login.html` → `second.wp.php` | Email and password fields `strUsername`, `strPassword`, `Action=Login` |
| Register | `register.html` iframe → `register.ph3.php` | Absolute production URL inside the iframe |
| Contact | `contact-us.html` | Old Mutual Wealth Mutualpark address |
| Legal | `privacy-policy.html`, `terms-and-conditions.html`, `copyright.html`, `disclaimer.html` | Owner named as Old Mutual Wealth (Pty) Ltd 2011/134187/07 |
| HTTPS and extensionless HTML | `.htaccess` | Also denies `wp-config.php` and `.user.ini` |
| Robots and sitemap | `robots.txt`, `sitemap.xml` | Present. Contents not treated as a product feature beyond "files exist" |

## Current — learner portal (`training/`)

| Feature | Where |
|---|---|
| Home with last login and current-year BAT pillar snapshot | `training/index.php` |
| Courses and modules | `home.courses.php`, `course.php`, `module.php`, `module.wi.php` |
| Workshops and workshop assignments | `home.workshops.php`, `workshop.php`, `workshop.assignments.php` |
| Assignments and article assessments | `my.assignments.php`, `assignments.php`, `article.assessments.php` |
| Forums | `forum.php`, `general.forum.php` |
| CPD points | `my.cpd.points.php` |
| Profile | `profile.php`, `learner.profile.php` |
| Business-tools entry | `home.tools.php`, `login.business_tools.php` |
| Wealth Intelligence pages | `home.wi.php`, `avp.wp.overview.php`, `avp.wp.business.management.php`, `avp.wp.business.overview.php`, `avp.wp.financial.planning.php`, `avp.wp.wealth.management.php`, `avp.my.info.php`, `avp.my.team.php`, `avp.media.php` |
| Purchases | `purchase.php`, `purchase.courses.php`, `purchase.workshops.php`, `purchase.omw.php`, `transactions.php` |
| Messages | `training/message.php` |

Layouts for these screens are under `layouts/` (`layout.learner.*.php`, `layout.AVP.*.php`, `layout.login.incl.php`).

## Current — business tools (`tools/`)

| Feature | Where |
|---|---|
| Business Assessment (BAT), including a 2020 engine | `bat.class.php`, `bat.engine.php`, `bat.engine2.php`, `bat.engine3.pwm.php`, `bat_2020.class.php`, `bat_2020.engine.php`, `bat.chart.php` |
| Client survey (CAT) and respondent survey (CSS) | `cat.class.php`, `cat.engine.php`, `cat.pdf.php`, `cat.export.php`, `css.survey.php`, `cat.unregister.php` |
| TCF gap analysis | `gap.TCF.class.php`, `gap.TCF.engine.php` |
| RDR gap analysis | `gap.RDR.class.php`, `gap.RDR.engine.php` |
| PoPI gap analysis | `gap.PoPI.class.php`, `gap.PoPI.engine.php` |
| SCP gap analysis | `gap.SCP.class.php`, `gap.SCP.engine.php` |
| Practice setup and income/expense captures | `practice.setup.php`, `ie.engine.php`, `ie.*.sav.php` |
| Invoices and PDF helpers | `invoicePDF.php`, `dtPDF.php`, `product_pdf.php`, `product_excel.php` |
| Survey email read-receipt | `email.read.receipt.php`, `email.read.online.php` |

`tools/webadmin/` is a second Nemo admin tree (questionnaires, value drivers, TCF, tickets, and similar). It overlaps `webadmin/`. Which tree is the one operators use is **Uncertain**.

## Current — webadmin

Nemo admin screens (one PHP file per area), including learner, user, user type, user category, client, practice, course, module and module parts, workshop, venue, product, voucher, licence, invoice, SLA, advert, article, CPD, email template, report, region, country, security group, settings, usage log, message.

Password framework: `webadmin/_nemo.password.cls.php`.

Menu from the database: `webadmin/_nemo.menu.cls.php`.

Cron: `cron.daily.php`, `cron.hourly.php`, and `cron.hourly1.php` through `cron.hourly8.php`.

Shortcuts: `gotoBusinessTools.php`, `gotoBusinessToolsBAT2.php`, `gotoAcademyWebadmin.php`.

## Current — CMS (CodeIgniter 4)

Added in commits `ddd825b` (2022-01-27) through `71190cf` (2022-06-02).

| Feature | Where | Status |
|---|---|---|
| Login, logout, forgot password, reset password | `cms/app/Controllers/Login.php`, routes in `cms/app/Config/Routes.php` | Current |
| Self-registration of a CMS user | route `register` → `Login::register` | Current in code. Whether public self-registration is intended is **Requires Confirmation** |
| Article list, add, edit, delete, archive | `cms/app/Controllers/Article.php` | Current. Role must be `cmsadmin` |
| Article categories and tags | `db_updates/update.1.sql`, `update.3.sql`, `update.4.sql` | Schema only; admin UI for categories was not found as its own controller |
| User list, add, edit, delete with authorship reassignment | `cms/app/Controllers/User.php` | Current |
| Password policy (length 8, upper, lower, digit) | `User.php`, `Login.php` | Completed in `2286f50` and still present |
| Pagination, search, sidebar revision | Commit `18f783c` | Completed; sidebar is `cms/app/Views/templates/sidenav.php` |
| Profile | route `admin/profile` | Current |
| Security groups | `cms/app/Controllers/SecurityGroup.php` | Routes exist. No sidebar link in `sidenav.php` |
| Image upload (Dropzone) | `DropzoneController`, routes `image-upload` and `dropzone/upload` | Current route. Not linked from the sidebar excerpt |
| Old Mutual logo in the CMS chrome | `sidenav.php` image `old-mutual-header-logo-resized.png` | Current |

## Completed changes recorded in Git (2022)

These are already on `master`. They are not a separate unreleased branch.

- CMS application committed (`ddd825b`, `6747c50`).
- App redirect URL updated (`615aef8`). The target URL was not re-read for this document.
- CMS list pagination and search (`18f783c`).
- Dashboard item hidden in the sidebar (`ebd6e6c`). The `<li>` is inside an HTML comment. The route in `Routes.php` is also commented out. The logo `href` still points at `admin/dashboard`.
- Validation messages and password policy (`2286f50`).
- Do not delete the signed-in CMS user; reassign articles first (`4a10866`).
- Logout link fix (`5fddd16`).
- Add/edit footer no longer clipped (`720e48c`).
- CMS backend review tweaks (`8540ce0`, `8a2b78b`, `f39a239`, `f9e83ce`, `6f066ea`) merged by `71190cf`.

## Deprecated, legacy, or commented

| Item | Evidence | Label |
|---|---|---|
| BAT 1 / BAT 2 database switch | Comment in `bat.class.php` dated 2016-05-06: "database switch depreciated" | Deprecated in comments. Old engine files are still in the tree |
| User-category block and WPS block on the learner home | Comment in `training/index.php` dated 2017-03-08: permanently hidden. CSS `display: none` is set in that file | Implemented as hidden |
| CMS dashboard | Route commented; sidebar item commented | Removed from the nav; link remains on the logo |
| reCAPTCHA on `register.ph3.php` | Include commented out | Not active at that include |
| Netcash form on workshop purchase | HTML form commented in `training/purchase.workshops.php`; SagePay form is the active `action` | Commented alternative |
| Celestis contact page | `contact.us.php` | Still executable. The static `contact-us.html` replaced the public copy. Whether the PHP URL is still linked is **Uncertain** |
| `content.php` iframe to `www.celestis.co.za` | Still the whole page body | Legacy. **Uncertain** if any menu still opens it |
| `training/index.old.php`, `modules/*.php20201116`, `*.php20200331`, `*.bak` | Dated or backup filenames | Superseded copies left in the tree |
| `index.php.bad`, `login.typo.php`, `message.typo.php`, `tools/typo.php` | Filenames | **Uncertain**. `training/index.php` still calls `getTypoIframe2` for latest blog posts |
| `phpinfo.php` at the repository root and `tools/phpinfo.php` | Files exist | Dangerous if the vhost still maps them. Not a product feature |
| `test.php` | Root and `tools/test.php` | Not a product feature |
| ADFS sample | `tools/Xadfs-idp-hosted.php` contains SimpleSAMLphp example metadata (`example-userpass`, `server.pem`) | Looks like a sample, not a configured IdP. **Uncertain** |
| CMS `Pages::showme` | Not registered in `Routes.php` (`setAutoRoute(false)`) | Unused by the router |
| Join-demo routes `inner-join`, `left-join`, `right-join` | `Routes.php` points at `Site::` methods. No `Site` controller was found | Dead routes |

## Planned

No roadmap, TODO list, or ticket reference in the repository describes future features. **Unknown / Requires Confirmation** if work continued outside this remote after 2022-06-02.

## Recently changed

Relative to the January 2022 initial commit, the changes that landed before the tip are the CMS admin, its SQL, password policy, user-deletion rules, and the May 2022 backend tweaks. The Nemo learner and tools code is older than the Git history (comments from 2010 onward) and was not observably rewritten in these commits.

## Removed

Nothing in Git history from `1a40ac7` to `71190cf` was identified as a product feature that was deleted and is now absent. Commented dashboard and commented payment forms are the closest cases, and the files remain.
