Skip to main content

Overview

The CourseController manages course records, linking subjects with teachers. All operations require administrator privileges. File Location: app/controllers/CourseController.php Dependencies:
  • Course model
  • Subject model
  • Teacher model
  • Auth helper

Methods

index()

Displays list of all courses with their associated subjects and teachers. Authorization: Admin only Behavior:
  • Retrieves all course records with related data
  • Renders course listing view
Code Example:
// Admin: list courses
public function index()
{
    Auth::admin();

    $courseModel = new Course();
    $courses = $courseModel->getAll();

    require __DIR__ . '/../views/courses/index.php';
}
View Location: app/views/courses/index.php

create()

Displays course creation form and handles course creation. Authorization: Admin only
subject_id
integer
required
ID of the subject for this course (POST request)
teacher_id
integer
required
ID of the teacher assigned to this course (POST request)
Behavior:
  • GET request: Loads available subjects and teachers, displays form
  • POST request: Creates new course linking subject and teacher
Code Example:
// Admin: create course
public function create()
{
    Auth::admin();

    $subjectModel = new Subject();
    $teacherModel = new Teacher();

    $subjects = $subjectModel->all();
    $teachers = $teacherModel->all();

    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $courseModel = new Course();
        $courseModel->create(
            $_POST['subject_id'],
            $_POST['teacher_id']
        );

        header("Location: /school_management/public/courses");
        exit;
    }

    require __DIR__ . '/../views/courses/create.php';
}
Response:
  • GET: Renders creation form with subject and teacher dropdowns
  • POST: Redirects to /courses

delete()

Deletes a course record. Authorization: Admin only
id
integer
required
Course ID to delete (from GET query parameter)
Behavior:
  1. Validates admin authorization
  2. Deletes course from database
  3. Redirects to course listing
Code Example:
// Admin: delete course
public function delete()
{
    Auth::admin();

    $courseModel = new Course();
    $courseModel->delete($_GET['id']);

    header("Location: /school_management/public/courses");
    exit;
}
Response: Redirects to /courses

Usage Examples

Creating a Course

// POST /courses/create
$_POST = [
    'subject_id' => 5,  // Mathematics
    'teacher_id' => 3   // Dr. Sarah Williams
];

Deleting a Course

// GET /courses/delete?id=12
$_GET['id'] = 12;

Notes

  • A course represents a subject taught by a specific teacher
  • Multiple courses can exist for the same subject (different teachers/sections)
  • Courses are referenced by enrollments and timetables
  • Deleting a course may affect enrollments and grades

Build docs developers (and LLMs) love