$_SESSION['message']['warning'] = 'All parameters are required.';
    header('Location: ../administration/schedule');
    die;
}
$role = $_SESSION['user']->getRole()->getName();
if ($role === 'Professor') {
    $componentsScheduled = ComponentDAL::findByModule($module);
    foreach ($componentsScheduled as $componentScheduled) {
        $typeScheduled = $componentScheduled->getType();
        if (!$componentScheduled->getIsResit() && $typeScheduled->getId() == $type) {
            $_SESSION['message']['warning'] = 'An ' . $typeScheduled->getTypeName() . ' has already been scheduled (' . $componentScheduled->getDate() . ') for this module.';
            header('Location: ../administration/schedule');
            die;
        }
    }
    $usersHaveModule = UserHasModuleDAL::findByModule($module);
    if (count($usersHaveModule) == 0) {
        $_SESSION['message']['warning'] = 'There is no student assigned to this module.';
        header('Location: ../administration/schedule');
        die;
    }
    foreach ($usersHaveModule as $userHasModule) {
        $component = new Component(0, 0, $dateSchedule, false);
        $component->setType($type);
        $component->setComponent(0);
        $component->setModule($module);
        $component->setUser($userHasModule->getUserId());
        ComponentDAL::flush($component);
    }
    $_SESSION['message']['success'] = 'Your exam has been scheduled with success.';
    header('Location: ../administration/schedule');
$component = ComponentDAL::findById($idExam);
$component->setMark($mark);
if (ComponentDAL::flush($component)) {
    $module = $component->getModule();
    $user = UserDAL::findById($idUser);
    $hasFailed = $user->hasFailed($module);
    $mustResit = $user->mustResit($module);
    $finalMark = $user->getFinalMark($module);
    $userHasModule = UserHasModuleDAL::findByStudentAndModule($idUser, $module->getId());
    $userHasModule->setHasFailed($hasFailed);
    $userHasModule->setMustPay($mustResit);
    $userHasModule->setFinalMark($finalMark);
    if ($hasFailed && $mustResit) {
        UserHasModuleDAL::flush($userHasModule);
        // Send mail -> Explain which component to resit and how to pay
        // (Always worst component to resit)
    } else {
        if ($hasFailed && !$mustResit) {
            UserHasModuleDAL::flush($userHasModule);
            // Send mail -> Tell he has failed the module and that there is no resit
        } else {
            if (!$hasFailed && $finalMark > 0) {
                UserHasModuleDAL::flush($userHasModule);
                // Send mail -> Tell he has succeded the module.
            } else {
                // Send mail -> Tell he has a new mark.
            }
        }
    }
    echo json_encode(1);
}
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/WebBristol/model/DAL/ModuleDAL.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/WebBristol/model/DAL/UserHasModuleDAL.php';
// Test the user's level of access
$role = $_SESSION['user']->getRole()->getName();
if ($role === 'Professor') {
    //Return every modules
    $_SESSION['data']['modules'] = ModuleDAL::findAll();
    require_once 'view/menu/menu_module.phtml';
    require_once 'view/module/module_all.phtml';
} else {
    //Return every modules by user connected
    $usersHaveModule = UserHasModuleDAL::findByUser($_SESSION['user']->getId());
    foreach ($usersHaveModule as $userHasModule) {
        $_SESSION['data']['modules'][] = ModuleDAL::findById($userHasModule->getUserId());
    }
    require_once 'view/menu/menu_module.phtml';
    require_once 'view/module/module_all.phtml';
}