# victory95-cool/finalcoursework_reviewfilm architecture

> Architecture diagram of the GitHub repository victory95-cool/finalcoursework_reviewfilm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/victory95-cool/finalcoursework_reviewfilm
- Repository: https://github.com/victory95-cool/finalcoursework_reviewfilm

## Overview

This PHP/MySQL application supports public film discovery and reviewer contributions alongside an authenticated admin workflow for catalog, reviewer, and review management. Reviewers can register, submit or edit reviews, and exchange messages with admins. The README establishes the broader product capabilities; sampled controllers and the source index show database/template dependencies. Several admin and messaging routes are unsampled, so their documented responsibilities are included without asserting unverified internal calls.

Main entry points: [`includes/DatabaseFunction.php`](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/includes/DatabaseFunction.php) (Database operations), [`templates`](https://github.com/victory95-cool/finalcoursework_reviewfilm/tree/main/templates) (Public page views), [`Admin/admin_review.php`](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/admin_review.php) (Review moderation), [`Admin/reviewers.php`](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/reviewers.php) (Reviewer management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public film site"]
  node_home["Home page<br/>[index.php]"]
  node_film_browse["Browse films<br/>[films.php]"]
  node_film_detail["Film details<br/>[filmdetail.php]"]
  node_reviews["Review listing<br/>[review.php]"]
  node_submit_review["Submit review<br/>[addreview.php]"]
  node_edit_review["Edit review<br/>[editreview.php]"]
  node_reviewer_signup["Reviewer signup<br/>[addreviewers.php]"]
  node_public_views["Public page views"]
  node_public_layout["Public layout<br/>[layout.html.php]"]
end

subgraph group_admin["Admin management"]
  node_admin_login["Admin authentication<br/>[Login.php]"]
  node_admin_guard["Admin access check<br/>[Check.php]"]
  node_film_admin["Film management<br/>[films.php]"]
  node_review_admin["Review moderation<br/>[admin_review.php]"]
  node_reviewer_admin["Reviewer management<br/>[reviewers.php]"]
  node_admin_views["Admin page views"]
  node_admin_layout["Admin layout"]
end

subgraph group_messaging["Conversations"]
  node_public_message["Contact admin<br/>[contact_admin.php]"]
  node_reviewer_mailbox["Reviewer inbox"]
  node_reviewer_thread["Reviewer conversation<br/>[conversation.php]"]
  node_admin_mailbox["Admin inbox<br/>[mailbox_admin.php]"]
  node_admin_thread["Admin conversation<br/>[conversation.php]"]
  node_conversation_store[("Conversation records")]
end

subgraph group_backend["Shared backend"]
  node_db_access["Database connection"]
  node_db_ops["Database operations"]
  node_mysql[("MySQL database")]
end

node_visitor(("Visitor / reviewer"))
node_admin_actor(("Administrator"))

node_visitor -->|"opens"| node_home
node_visitor -->|"browses"| node_film_browse
node_visitor -->|"views"| node_film_detail
node_visitor -->|"views"| node_reviews
node_visitor -->|"submits"| node_submit_review
node_visitor -->|"edits"| node_edit_review
node_visitor -->|"registers"| node_reviewer_signup
node_home -->|"includes"| node_db_access
node_home -->|"queries"| node_db_ops
node_home -->|"renders"| node_public_views
node_film_browse -->|"includes"| node_db_access
node_film_browse -->|"queries"| node_db_ops
node_film_browse -->|"renders"| node_public_views
node_film_detail -.->|"loads details"| node_db_ops
node_film_detail -.->|"renders"| node_public_views
node_reviews -->|"queries"| node_db_ops
node_reviews -->|"renders"| node_public_views
node_submit_review -->|"inserts review"| node_db_ops
node_submit_review -->|"renders"| node_public_views
node_edit_review -->|"updates review"| node_db_ops
node_edit_review -->|"renders"| node_public_views
node_reviewer_signup -->|"creates reviewer"| node_db_ops
node_reviewer_signup -->|"renders"| node_public_views
node_public_views -->|"wrapped by"| node_public_layout
node_admin_actor -->|"authenticates"| node_admin_login
node_admin_login -->|"requires"| node_db_access
node_admin_login -->|"looks up admin"| node_db_ops
node_admin_login -->|"renders login"| node_admin_views
node_admin_actor -->|"manages films"| node_film_admin
node_admin_actor -->|"moderates reviews"| node_review_admin
node_admin_actor -->|"manages reviewers"| node_reviewer_admin
node_film_admin -.->|"checks access"| node_admin_guard
node_review_admin -->|"checks access"| node_admin_guard
node_review_admin -->|"includes"| node_db_access
node_review_admin -->|"queries"| node_db_ops
node_review_admin -->|"renders"| node_admin_views
node_reviewer_admin -->|"checks access"| node_admin_guard
node_reviewer_admin -->|"includes"| node_db_access
node_reviewer_admin -->|"queries"| node_db_ops
node_reviewer_admin -->|"renders"| node_admin_views
node_admin_views -->|"wrapped by"| node_admin_layout
node_visitor -->|"contacts"| node_public_message
node_visitor -->|"checks messages"| node_reviewer_mailbox
node_admin_actor -->|"checks messages"| node_admin_mailbox
node_public_message -->|"stores message"| node_db_ops
node_reviewer_mailbox -->|"loads inbox"| node_db_ops
node_reviewer_thread -->|"loads conversation"| node_db_ops
node_admin_thread -->|"loads conversation"| node_db_ops

click node_home "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/index.php"
click node_film_browse "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/films.php"
click node_film_detail "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/filmdetail.php"
click node_reviews "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/review.php"
click node_submit_review "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/addreview.php"
click node_edit_review "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/editreview.php"
click node_reviewer_signup "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/addreviewers.php"
click node_public_views "https://github.com/victory95-cool/finalcoursework_reviewfilm/tree/main/templates"
click node_admin_login "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/login/Login.php"
click node_admin_guard "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/login/Check.php"
click node_film_admin "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/films.php"
click node_review_admin "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/admin_review.php"
click node_reviewer_admin "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/reviewers.php"
click node_admin_views "https://github.com/victory95-cool/finalcoursework_reviewfilm/tree/main/templates"
click node_public_message "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/contact_admin.php"
click node_reviewer_mailbox "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/mailbox_reviewer.php"
click node_reviewer_thread "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/conversation.php"
click node_admin_mailbox "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/mailbox_admin.php"
click node_admin_thread "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/conversation.php"
click node_conversation_store "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/includes/DatabaseFunction.php"
click node_db_access "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/includes/DatabaseConnection.php"
click node_db_ops "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/includes/DatabaseFunction.php"
click node_public_layout "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/templates/layout.html.php"
click node_admin_layout "https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/templates/admin_layout.html.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_home,node_film_browse,node_film_detail,node_reviews,node_submit_review,node_edit_review,node_reviewer_signup,node_public_views,node_public_layout,node_visitor toneBlue
class node_admin_login,node_admin_guard,node_film_admin,node_review_admin,node_reviewer_admin,node_admin_views,node_admin_layout toneAmber
class node_public_message,node_reviewer_mailbox,node_reviewer_thread,node_admin_mailbox,node_admin_thread,node_conversation_store toneMint
class node_db_access,node_db_ops,node_mysql toneRose
class node_admin_actor toneIndigo
```

## Components

### Public film site

- [Home page](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/index.php): `index.php`
- [Browse films](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/films.php): `films.php`
- [Film details](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/filmdetail.php): `filmdetail.php`
- [Review listing](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/review.php): `review.php`
- [Submit review](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/addreview.php): `addreview.php`
- [Edit review](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/editreview.php): `editreview.php`
- [Reviewer signup](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/addreviewers.php): `addreviewers.php`
- [Public page views](https://github.com/victory95-cool/finalcoursework_reviewfilm/tree/main/templates): `templates`
- [Public layout](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/templates/layout.html.php): `templates/layout.html.php`

### Admin management

- [Admin authentication](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/login/Login.php): `Admin/login/Login.php`
- [Admin access check](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/login/Check.php): `Admin/login/Check.php`
- [Film management](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/films.php): `Admin/films.php`
- [Review moderation](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/admin_review.php): `Admin/admin_review.php`
- [Reviewer management](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/reviewers.php): `Admin/reviewers.php`
- [Admin page views](https://github.com/victory95-cool/finalcoursework_reviewfilm/tree/main/templates): `templates`
- [Admin layout](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/templates/admin_layout.html.php): `templates/admin_layout.html.php`

### Conversations

- [Contact admin](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/contact_admin.php): `contact_admin.php`
- [Reviewer inbox](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/mailbox_reviewer.php): `mailbox_reviewer.php`
- [Reviewer conversation](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/conversation.php): `conversation.php`
- [Admin inbox](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/mailbox_admin.php): `Admin/mailbox_admin.php`
- [Admin conversation](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/Admin/conversation.php): `Admin/conversation.php`
- [Conversation records](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/includes/DatabaseFunction.php): `includes/DatabaseFunction.php`

### Shared backend

- [Database connection](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/includes/DatabaseConnection.php): `includes/DatabaseConnection.php`
- [Database operations](https://github.com/victory95-cool/finalcoursework_reviewfilm/blob/main/includes/DatabaseFunction.php): `includes/DatabaseFunction.php`
- **MySQL database**

### Other components

- **Visitor / reviewer**
- **Administrator**

## Connections

- Visitor / reviewer → Home page: opens (evidence: `README.md`)
- Visitor / reviewer → Browse films: browses (evidence: `README.md`)
- Visitor / reviewer → Film details: views (evidence: `README.md`)
- Visitor / reviewer → Review listing: views (evidence: `README.md`)
- Visitor / reviewer → Submit review: submits (evidence: `README.md`)
- Visitor / reviewer → Edit review: edits (evidence: `README.md`)
- Visitor / reviewer → Reviewer signup: registers (evidence: `README.md`)
- Home page → Database connection: includes (evidence: `index.php`)
- Home page → Database operations: queries (evidence: `index.php`)
- Home page → Public page views: renders (evidence: `index.php`)
- Browse films → Database connection: includes (evidence: `films.php`)
- Browse films → Database operations: queries (evidence: `films.php`)
- Browse films → Public page views: renders (evidence: `films.php`)
- Film details → Database operations: loads details
- Film details → Public page views: renders
- Review listing → Database operations: queries (evidence: `review.php`)
- Review listing → Public page views: renders (evidence: `review.php`)
- Submit review → Database operations: inserts review (evidence: `addreview.php`)
- Submit review → Public page views: renders (evidence: `addreview.php`)
- Edit review → Database operations: updates review (evidence: `editreview.php`)
- Edit review → Public page views: renders (evidence: `editreview.php`)
- Reviewer signup → Database operations: creates reviewer (evidence: `addreviewers.php`)
- Reviewer signup → Public page views: renders (evidence: `addreviewers.php`)
- Public page views → Public layout: wrapped by (evidence: `templates/layout.html.php`)
- Administrator → Admin authentication: authenticates (evidence: `README.md`)
- Admin authentication → Database connection: requires (evidence: `Admin/login/Login.php`)
- Admin authentication → Database operations: looks up admin (evidence: `Admin/login/Login.php`)
- Admin authentication → Admin page views: renders login (evidence: `Admin/login/Login.php`)
- Administrator → Film management: manages films (evidence: `README.md`)
- Administrator → Review moderation: moderates reviews (evidence: `README.md`)
- Administrator → Reviewer management: manages reviewers (evidence: `README.md`)
- Film management → Admin access check: checks access
- Review moderation → Admin access check: checks access (evidence: `Admin/admin_review.php`)
- Review moderation → Database connection: includes (evidence: `Admin/admin_review.php`)
- Review moderation → Database operations: queries (evidence: `Admin/admin_review.php`)
- Review moderation → Admin page views: renders (evidence: `Admin/admin_review.php`)
- Reviewer management → Admin access check: checks access (evidence: `Admin/reviewers.php`)
- Reviewer management → Database connection: includes (evidence: `Admin/reviewers.php`)
- Reviewer management → Database operations: queries (evidence: `Admin/reviewers.php`)
- Reviewer management → Admin page views: renders (evidence: `Admin/reviewers.php`)
- Admin page views → Admin layout: wrapped by (evidence: `templates/admin_layout.html.php`)
- Visitor / reviewer → Contact admin: contacts (evidence: `README.md`)
- Visitor / reviewer → Reviewer inbox: checks messages (evidence: `README.md`)
- Administrator → Admin inbox: checks messages (evidence: `README.md`)
- Contact admin → Database operations: stores message (evidence: `contact_admin.php`)
- Reviewer inbox → Database operations: loads inbox (evidence: `mailbox_reviewer.php`)
- Reviewer conversation → Database operations: loads conversation (evidence: `conversation.php`)
- Admin conversation → Database operations: loads conversation (evidence: `Admin/conversation.php`)
