require 'vendor/autoload.php'; use flight\Engine; // Инициализация авторизации // require 'auth/Auth.php'; // require 'middleware.php'; require "config.php"; require "db.php"; require "auth.php"; date_default_timezone_set('Europe/Moscow'); // session_start(); // Auth::init(); init_session(); $app = new Engine(); // Отладочная информация error_reporting(E_ALL); ini_set('display_errors', 1); // Логируем все запросы Flight::before('start', function () { $request = Flight::request(); error_log("Request: " . $request->method . " " . $request->url); }); // Создаем папки если их нет if (!is_dir('views')) mkdir('views'); if (!is_dir('cache')) mkdir('cache'); // Инициализируем BladeOne $blade = new eftec\bladeone\BladeOne('views', 'cache', eftec\bladeone\BladeOne::MODE_AUTO); // Настраиваем рендеринг Flight::map('render', function ($template, $data = []) use ($blade) { echo $blade->run($template, $data); }); // Главная страница с формой Flight::route('GET /', function () { if (!isLoggedIn()) { Flight::redirect('/login'); } elseif (is_admin()) { $error = Flight::request()->query['error'] ?? null; Flight::render('admin.main_page', [ 'error' => $error, "login" => $_SESSION["login"], 'old_input' => $_SESSION['old_input'] ?? [], "page_name" => "Админка" ]); unset($_SESSION['old_input']); } elseif (is_user()) { Flight::redirect('/list_courses'); } else { Flight::redirect('/login'); } }); /// LOGIN LOGOUT Flight::route('GET|POST /login', function () { $request = Flight::request(); if ($request->method === 'GET') { Flight::render('auth.login', [ "error" => "" ]); } else { $login = $request->data->login; $password = $request->data->password; $auth = auth_login($login, $password); if (!$auth) { $error = "Неверные логин или пароль"; Flight::render('auth.login', [ "error" => $error, "old_login" => $login, "old_password" => $password ]); } else { Flight::redirect("/"); } } }); Flight::route('/logout', function () { $_SESSION = array(); session_destroy(); Flight::redirect('/'); }); /// LOGIN LOGOUT FINISH // ADMIN ROUTES Flight::route( 'GET /users', function () { if (!is_admin()) { Flight::redirect('/login'); } $error = Flight::request()->query['error'] ?? null; Flight::render('admin.page_users', [ 'error' => $error, 'old_input' => $_SESSION['old_input'] ?? [], "page_name" => "Админка" ]); unset($_SESSION['old_input']); } ); Flight::route('GET /add_user', function () { if (!is_admin()) { Flight::redirect('/login'); } $all_student_groups = get_all_pupilsgroups(); Flight::render('admin.add_users', [ "page_name" => "Добавить пользователя", "groups" => $all_student_groups ]); unset($_SESSION['old_input']); }); //Управление курсами Flight::route('/add_course', function () { if (!is_admin()) { Flight::redirect('/login'); } $error = Flight::request()->query['error'] ?? null; $my_courses = get_all_courses(); Flight::render('admin.add_course', [ 'error' => $error, 'old_input' => $_SESSION['old_input'] ?? [], "page_name" => "Админка", "courses" => $my_courses ]); unset($_SESSION['old_input']); }); // Flight::route('/add_simple_test', function () { // if (!is_admin()) { // Flight::redirect('/login'); // } // $cats = get_all_homework_cats(); // $homework_names = get_all_homework_names(); // Flight::render('admin.add_task', [ // "page_name" => "Добавить задание", // "cats" => $cats, // "homework_names" => $homework_names // ]); // }); // Flight::route('/add_task', function () { // if (!is_admin()) { // Flight::redirect('/login'); // } // Flight::render('admin.add_simple_test', [ // "page_name" => "Редактор вопросов", // ]); // }); Flight::route('/add_task', function () { if (!is_admin()) { Flight::redirect('/login'); } $test_inf = get_new_test_inf(); Flight::render('tests.my_new_test', [ "page_name" => "Редактор вопросов", "tests_inf" => $test_inf ]); }); Flight::route('/add_pt', function () { if (!is_admin()) { Flight::redirect('/login'); } $pt_groups = get_all_pt4_groups(); Flight::render('admin.add_pt', [ "page_name" => "Добавить задание на прогу", "groups" => $pt_groups ]); unset($_SESSION['old_input']); }); Flight::route('/add_pt_piodide', function () { if (!is_admin()) { Flight::redirect('/login'); } $pt_groups = get_all_pt4_groups(); Flight::render('admin.add_pt_piodide', [ "page_name" => "Добавить задание на прогу", "groups" => $pt_groups ]); unset($_SESSION['old_input']); }); //Управление курсами Flight::route('/add_blog_article', function () { if (!is_admin()) { Flight::redirect('/login'); } $blog_normal_urls = get_all_blog_urls(); Flight::render('admin.add_blog_article', [ "page_name" => "Админка", "urls" => $blog_normal_urls, "login" => $_SESSION["login"], ]); unset($_SESSION['old_input']); }); Flight::route('/users_list', function () { if (!is_admin()) { Flight::redirect('/login'); } $all_student_groups = get_all_pupilsgroups(); Flight::render('admin.users_list', [ "login" => $_SESSION["login"], "page_name" => "Список пользователей", "groups" => $all_student_groups ]); unset($_SESSION['old_input']); }); Flight::route('/admin_blog_list', function () { if (!is_admin()) { Flight::redirect('/login'); } $articles = get_all_articles(); Flight::render('admin.blog_articles_list', [ "login" => $_SESSION["login"], "page_name" => "Список статей", "articles" => $articles ]); }); Flight::route('GET /admin_list_courses', function () { if (!is_admin()) { Flight::redirect('/login'); } else { $course_list = get_all_courses(); //Если админ, то такой курс Flight::render('admin.list_courses', [ "login" => $_SESSION["login"], "page_name" => "Список курсов", "courses" => $course_list ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('GET /admin_list_courses_many', function () { if (!is_admin()) { Flight::redirect('/login'); } else { $course_list = get_all_courses(); //Если админ, то такой курс Flight::render('admin.list_courses', [ "login" => $_SESSION["login"], "page_name" => "Список курсов", "courses" => $course_list ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/pt_group/@url', function ($url) { if (!isLoggedIn()) { Flight::redirect('/login'); } else { $group_name = ""; if (is_admin()) { $group_name = get_groupname_by_url(array("url" => $url)); } Flight::render('python_programming.brython1_pt4_user_page', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Задания с автопроверкой", "group_name" => $group_name ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/pt_group_new/@url', function ($url) { if (!isLoggedIn()) { Flight::redirect('/login'); } else { $group_name = ""; if (is_admin()) { $group_name = get_groupname_by_url(array("url" => $url)); } Flight::render('tests.python', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Задания с автопроверкой", "group_name" => $group_name ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/pt_group_piodide/@url', function ($url) { if (!isLoggedIn()) { Flight::redirect('/login'); } else { $group_name = ""; if (is_admin()) { $group_name = get_groupname_by_url(array("url" => $url)); } Flight::render('tests.mypiodide', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Задания с автопроверкой", "group_name" => $group_name ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/courses/@id', function ($id) { // $course_list = array(array("lesson_name" => "Первый курс", "url" => "супер линк")); if (!isLoggedIn()) { Flight::redirect('/login'); } elseif (is_admin()) { $course_list = get_all_lessons_for_course(array("url" => $id)); //Если админ, то такой курс Flight::render('admin_page_course_lessons_list', [ "page_name" => "Уроки курса", "login" => $_SESSION["login"], "lessons" => $course_list, ]); } else { $course_list = get_all_lessons_for_course(array("url" => $id)); //Если админ, то такой курс Flight::render('user.lessons_list', [ "page_name" => "Уроки курса", "login" => $_SESSION["login"], "lessons" => $course_list, ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/edit-user', function () { if (!is_admin()) { Flight::redirect('/login'); } $logins = get_all_user_logins(); Flight::render('admin.edit_users', [ "login" => $_SESSION["login"], "page_name" => "Редакторировать пользователя", "logins" => $logins ]); unset($_SESSION['old_input']); }); Flight::route('/admin_edit_course_lessons/@url', function ($id) { if (!is_admin()) { Flight::redirect('/login'); } $course_name = get_course_by_url(array("url" => $id)); $course_list = get_all_lessons_for_course(array("url" => $id)); //Если админ, то такой курс Flight::render('admin.edit_course_lessons', [ "page_name" => "Уроки курса {$course_name['course_name']}", "login" => $_SESSION["login"], "lessons" => $course_list, "id" => $id, "course_name" => $course_name ]); }); Flight::route('/admin_edit_course_lessons_new/@url', function ($id) { if (!is_admin()) { Flight::redirect('/login'); } $course_name = get_course_by_url(array("url" => $id)); $course_list = get_all_lessons_for_course(array("url" => $id)); //Если админ, то такой курс Flight::render('admin.edit_course_lessons_new_rich', [ "page_name" => "Уроки курса {$course_name['course_name']}", "login" => $_SESSION["login"], "lessons" => $course_list, "id" => $id, "course_name" => $course_name ]); }); Flight::route('/admin_edit_course_lessons/@url', function ($id) { if (!is_admin()) { Flight::redirect('/login'); } $course_list = get_all_lessons_for_course(array("url" => $id)); //Если админ, то такой курс Flight::render('admin.edit_course_lessons', [ "page_name" => "Уроки курса", "login" => $_SESSION["login"], "lessons" => $course_list, "id" => $id ]); }); Flight::route('GET /lms', function () { if (!is_admin()) { Flight::redirect('/login'); } $error = Flight::request()->query['error'] ?? null; Flight::render('admin.lms', [ 'error' => $error, 'old_input' => $_SESSION['old_input'] ?? [], "page_name" => "Админка" ]); unset($_SESSION['old_input']); }); Flight::route('GET /admin_blog', function () { if (!is_admin()) { Flight::redirect('/login'); } Flight::render('admin.blog_adminka', [ "page_name" => "Управление блогом" ]); }); Flight::route('GET /admin_files', function () { if (!is_admin()) { Flight::redirect('/login'); } $files = array_reverse(get_all_files()); Flight::render('admin.files_worker', [ "page_name" => "Управление файлами", "files" => $files ]); }); Flight::route('/change_article/@id', function ($id) { if (!is_admin()) { Flight::redirect('/login'); } $blog_normal_urls = get_all_blog_urls(); //Если админ, то такой курс Flight::render('admin.edit_article_by_id', [ "page_name" => "Изменить статью", "login" => $_SESSION["login"], "urls" => $blog_normal_urls, "id" => $id ]); }); Flight::route('GET /video_studio', function () { if (!is_admin()) { Flight::redirect('/login'); } $videos = array_reverse(get_all_videos()); Flight::render('admin.video', [ "page_name" => "Управление файлами", "login" => $_SESSION["login"], "videos" => $videos ]); }); Flight::route('/list_pt4_groups', function () { if (!is_admin()) { Flight::redirect('/login'); } else { Flight::render('admin.pt_list_page', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Список заданий на прогу", "current_pt_groups" => array_reverse(get_all_pt4_groups()) ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/edit_course_students/@url', function ($url) { if (!is_admin()) { Flight::redirect('/login'); } $course = get_course_by_url(array("url" => $url)); $pupils_group = get_all_pupilsgroups(); Flight::render('admin.page_course_enrolling', [ "page_name" => "Участники курса", "course" => $course, "pupils_group" => $pupils_group ]); }); Flight::route('/edit_pt_group/@url', function ($url) { if (!is_admin()) { Flight::redirect('/login'); } else { $tasks = get_pt_task_by_group_url(array("url" => $url)); Flight::render('admin.edit_pt4_group', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Редактирование заданий с автопроверкой", "tasks" => $tasks, ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/edit_pt_task/@id', function ($id) { if (!is_admin()) { Flight::redirect('/login'); } else { $pt_groups = get_all_pt4_groups(); Flight::render('admin.edit_pt4_task_editor', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Редактирование заданий с автопроверкой", "groups" => $pt_groups, ]); } }); Flight::route('/prog_progress', function () { if (!is_admin()) { Flight::redirect('/login'); } // $progress = get_progress(); $all_student_groups = get_all_pupilsgroups(); $all_pt_groups = get_all_pt_groups(); Flight::render('admin.page_ptprogress', [ "login" => $_SESSION["login"], "page_name" => "Админка", // "progress" => $progress "groups" => $all_student_groups, "ptgroups" => $all_pt_groups ]); unset($_SESSION['old_input']); }); Flight::route('/list_tests', function () { if (!is_admin()) { Flight::redirect('/login'); } $tests = get_new_test_inf_list(); Flight::render('admin.list_tests', [ "page_name" => "Список тестов", "homeworks" => $tests, ]); unset($_SESSION['old_input']); }); Flight::route('/join_prev_answers', function () { if (!is_admin()) { Flight::redirect('/login'); } Flight::render('admin.join_prev_tasks', [ "page_name" => "Обновить таблицу", ]); }); // ADMIN ROUTES FINISH //USER ROUTES Flight::route('GET /list_courses', function () { if (!isLoggedIn()) { Flight::redirect('/login'); } elseif (!is_admin()) { Flight::render('user.course_page', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Список курсов", "current_courses" => get_all_courses_for_user(array("user_id" => $_SESSION["user_id"])) ]); } //если пользователь, то то, что ему доступно, но это потом }); Flight::route('/test/@id', function ($id) { // $course_list = array(array("lesson_name" => "Первый курс", "url" => "супер линк")); if (!isLoggedIn()) { Flight::redirect('/login'); } Flight::render('user.tviewer', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Тест", ]); }); // Flight::route('/ntest/@id', function ($id) { // // $course_list = array(array("lesson_name" => "Первый курс", "url" => "супер линк")); // if (!isLoggedIn()) { // Flight::redirect('/login'); // } // Flight::render('tests.ntestviewer', [ // "user_id" => $_SESSION["user_id"], // "login" => $_SESSION["login"], // "page_name" => "Тест", // ]); // }); Flight::route('/ntest/@id', function ($id) { // $course_list = array(array("lesson_name" => "Первый курс", "url" => "супер линк")); if (!isLoggedIn()) { Flight::redirect('/login'); } Flight::render('tests.newtestviewer', [ "user_id" => $_SESSION["user_id"], "login" => $_SESSION["login"], "page_name" => "Тест", ]); }); Flight::route('/progress', function () { if (!is_admin()) { Flight::redirect('/login'); } // $progress = get_progress(); $all_student_groups = get_all_pupilsgroups(); $all_test = get_new_test_inf_list(); Flight::render('admin.page_progress', [ "login" => $_SESSION["login"], "page_name" => "Админка", // "progress" => $progress "groups" => $all_student_groups, "tests" => $all_test ]); unset($_SESSION['old_input']); }); Flight::route('/progress_new', function () { if (!is_admin()) { Flight::redirect('/login'); } // $progress = get_progress(); $all_student_groups = get_all_pupilsgroups(); $all_test = get_new_test_inf_list(); Flight::render('admin.page_progress_new', [ "login" => $_SESSION["login"], "page_name" => "Админка", // "progress" => $progress "groups" => $all_student_groups, "tests" => $all_test ]); unset($_SESSION['old_input']); }); Flight::route('/testresult/@url', function ($url) { if (!isLoggedIn()) { Flight::redirect('/login'); } // $progress = get_progress(); Flight::render('tests.result', [ "login" => $_SESSION["login"], "page_name" => "Результаты", ]); unset($_SESSION['old_input']); }); //USER ROUTES // NO AUTH ROUTES Flight::route( '/view_test/@url', function ($url) { $tasks = get_test_view_tasks_by_url(array("url" => $url)); Flight::render( 'no_auth.tests_view', [ "page_name" => "Тест: " . $url, "tasks" => $tasks ] ); } ); Flight::route('/blog_article/@url', function ($url) { $article = get_article_by_url(array("url" => $url)); Flight::render( 'no_auth.article', [ "page_name" => $article["title"], "article" => $article ] ); }); Flight::route('/blog_article/@url', function ($url) { $article = get_article_by_url(array("url" => $url)); Flight::render('no_auth.article', [ "page_name" => $article["title"], "article" => $article ]); }); Flight::route('/article/@url', function ($url) { $article = get_article_by_normurl(array("url" => $url)); Flight::render('no_auth.article', [ "page_name" => $article["title"], "article" => $article ]); }); Flight::route('/video/@url', function ($url) { $video = get_video_by_url(array("url" => $url)); Flight::render('no_auth.video', [ "page_name" => $video["title"], "video" => $video ]); }); // / NO AUTH ROUTES Flight::route('/idle', function () { Flight::render('no_auth.idle', []); }); //ACTIONS Flight::route('POST /action', function () { if (!isLoggedIn()) { echo json_encode('Только авторизованным можно'); } else { $request = Flight::request(); if (!isset($request->data->action)) { echo json_encode("А что делать-то?"); } else { $action = $request->data->action; if ($action == "add_group") { //Добавление новой группы студентов echo json_encode(add_new_group(array("group_name" => $request->data->group_name))); } elseif ($action === 'add_user') { //Добавление нового студента echo json_encode(add_new_student(array( "group_name" => $request->data->group_name, "name" => $request->data->first_name, "surname" => $request->data->last_name, "login" => $request->data->username, "password" => $request->data->password, ))); } elseif ($action === 'get_pupils_for_group') { echo json_encode(get_pupils_for_group(array("group_name" => $request->data->group_name))); } elseif ($action === 'get_user_by_login') { echo json_encode(get_user_by_login(array("login" => $request->data->login))); } elseif ($action === 'update_user') { echo json_encode(update_user( array( "id" => $request->data->id, "login" => $request->data->username, "password" => $request->data->password, "name" => $request->data->first_name, "surname" => $request->data->last_name, ) )); } elseif ($action === 'add_course') { echo json_encode(add_new_course(array( "course_name" => $request->data->course_name, "editor_data" => $request->data->editordata, ))); } elseif ($action === "get_lesson_content") { echo json_encode(get_lesson_by_id(array("id" => $request->data->id))); } elseif ($action === "add_empty_lesson") { echo json_encode(add_empty_lesson(array("url" => $request->data->url))); } elseif ($action === "delete_lesson") { echo json_encode(delete_lesson(array("id" => $request->data->id))); } elseif ($action === "delete_article") { echo json_encode(delete_article(array("id" => $request->data->id))); } elseif ($action === "update_lesson") { echo json_encode(update_lesson_by_id(array( "id" => $request->data->id, "lesson_name" => $request->data->lesson_name, "editor_data" => $request->data->description, "show" => $request->data->preview_checkbox, ))); } elseif ($action === "get_lessons_for_course") { echo json_encode(get_all_lessons_for_course(array("url" => $request->data->url))); } elseif ($action === "add_article") { echo json_encode(add_article(array( "title" => $request->data->title, "url" => $request->data->url, "tags" => $request->data->tags, "text" => $request->data->text, ))); } elseif ($action === "get_article_by_id") { echo json_encode(get_article_by_id(array( "id" => $request->data->id ))); } elseif ($action === "change_article_by_id") { echo json_encode(change_article_by_id(array( "id" => $request->data->id, "title" => $request->data->title, "normal_url" => $request->data->normal_url, "tags" => $request->data->tags, "content" => $request->data->content, ))); //change_article_by_id($data)); } elseif ($action === "upload_files") { $file = $request->files['file']; $t_filename = ''; if ($file && $file['error'] === UPLOAD_ERR_OK) { $uploadDir = ROOT . 'uploads/'; $fileName = uniqid() . '_' . $file['name']; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); } if (move_uploaded_file($file['tmp_name'], $uploadDir . $fileName)) { $t_filename = $uploadDir . $fileName; } $t_filename = '/uploads/' . $fileName; } echo json_encode(add_new_file(array( "filename" => $request->data->filename, "description" => $request->data->description, "url" => $t_filename ))); } elseif ($action === "delete_myfile") { echo json_encode(delete_file_db(array( "id" => $request->data->id, ))); } elseif ($action === "add_video_url") { echo json_encode(add_video_url(array( "title" => $request->data->title, "url" => $request->data->url, "description" => $request->data->descripition, "tags" => $request->data->tags, ))); } elseif ($action === "delete_video_link") { echo json_encode(delete_video_link(array("id" => $request->data->id))); } elseif ($action === "add_pt_group") { echo json_encode(add_pt_group(array( "group_name" => $request->data->group_name, ))); } elseif ($action === 'add_pt4_task') { echo json_encode(add_pt_task(array( "group_name" => $request->data->group_name, "task_name" => $request->data->task_name, "task_type" => $request->data->task_type, "task_description" => $request->data->task_description, "task_solve" => $request->data->task_solve, "tests" => $request->data->tests, ))); } elseif ($action === 'get_single_pt4_by_id') { echo json_encode(get_p4tasks_for_group(array( "id" => $request->data->id ))); } elseif ($action === 'update_single_pt4_by_id') { // echo json_encode("OKI"); $data = array( "task_id" => $request->data->id, "task_name" => $request->data->task_name, "task_description" => $request->data->task_description, "task_solve" => $request->data->task_solve, "tests" => $request->data->tests, "task_type" => $request->data->task_type, ); echo json_encode(update_single_pt4_by_id($data)); // } elseif ($action === 'get_p4tasks_ids_for_group') { echo json_encode(get_p4tasks_ids_for_group(array( "url" => $request->data->url ))); } elseif ($action === 'check_if_solved_pt4') { $data = array( "task_id" => $request->data->task_id, "user_id" => $_SESSION["user_id"] ); //echo json_encode($data); echo json_encode(check_if_solved_pt4($data)); // } elseif ($action === 'save_result_to_db') { $data = array( "user_id" => $_SESSION["user_id"], "task_id" => $request->data->task, "program" => $request->data->program, "task_group_url" => $request->data->url, "result" => $request->data->result ); echo json_encode(add_pt4_result_to_db($data)); } elseif ($action === "add_homework_group") { echo json_encode(add_homework_name( array( 'homework_name' => $request->data->homework_name, 'hw_description' => $request->data->hw_description ) )); } elseif ($action === "add_homework_cat_task") { echo json_encode(add_homework_task_cat(array('homework_cat' => $request->data->homework_cat))); } elseif ($action === "add_task_lms") { $file = $request->files['upload']; $t_filename = ''; if ($file && $file['error'] === UPLOAD_ERR_OK) { $uploadDir = ROOT . 'uploaded_tasks/'; $fileName = uniqid() . '_' . $file['name']; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); } if (move_uploaded_file($file['tmp_name'], $uploadDir . $fileName)) { $t_filename = HOST . 'uploaded_tasks/' . $fileName; } } echo json_encode(add_new_task(array( "homework_name" => $request->data->homework_name, "homework_cat_name" => $request->data->homework_cat, "task_name" => $request->data->task_name, "description" => $request->data->description, "filename" => $t_filename, "answer" => $request->data->answer, "task_annotation" => $request->data->task_annotation ))); } elseif ($action === "get_solved_history") { $data = array( "task_id" => $request->data->task_id, "user_id" => $_SESSION["user_id"] ); echo json_encode(get_pt4_solved_history($data)); } elseif ($action === "show_current_user_pt4_work") { $data = array( "task_id" => $request->data->task, "user_id" => $_SESSION["user_id"], "program" => $request->data->program, ); echo json_encode(fetch_pt4_task_for_user($data)); } elseif ($action === "get_inf_for_user_id_and_tasks_ids") { $data = array( "task_ids" => json_decode($request->data->tasks_id), "user_id" => $request->data->user_id ); $tasks_done = array(); foreach ($data["task_ids"] as $task_id) { $tasks_done[$task_id] = get_solved_history(array( "task_id" => $task_id, "user_id" => $request->data->user_id )); } echo json_encode($tasks_done); } elseif ($action === "get_solved_history_by_user_id_and_task_id") { $data = array( "task_id" => json_decode($request->data->task_id), "user_id" => $request->data->user_id ); echo json_encode(get_solved_history($data)); } elseif ($action === "get_users_for_group_by_id_group") { echo json_encode(get_users_for_group_by_id_group(array( "id_stud_group" => $request->data->student_group_id ))); } elseif ($action === "get_p4tasks_ids_for_group_by_id_group") { echo json_encode(get_p4tasks_ids_for_group_by_id_group(array( "id_stud_group" => $request->data->pt_group_id ))); } elseif ($action === "enroll_group_to_course") { echo json_encode(enroll_group_to_course(array( "course_id" => $request->data->course, "group_id" => $request->data->group_id, ))); } elseif ($action === "get_hwtasks_by_name") { echo json_encode(get_hwtasks_by_name(array("hwname" => $request->data->hwname))); } elseif ($action === "add_simple_test") { echo json_encode(add_simple_test( array( "hwname" => $request->data->hwname, "hwdescription" => $request->data->hwdescription, "hwcat" => $request->data->hwcat, "test" => $request->data->test, ) )); } elseif ($action === "get_simple_test") { echo json_encode(get_simple_test(array("url" => $request->data->url))); } elseif ($action === "send_finished_test") { echo json_encode(add_finished_test(array( "url" => $request->data->url, "data" => $request->data->data, "st_time" => $request->data->start_time, "user_id" => $_SESSION["user_id"], ))); } elseif ($action === "get_pupils_passed_test") { echo json_encode(get_pupils_passed_test(array( "url" => $request->data->url, "usergroup" => $request->data->usergroup ))); } elseif ($action === "show_stat_test_for_user") { echo json_encode(show_stat_test_for_user(array( "id_test" => $request->data->id_test, "id_user" => $request->data->id_user, ))); } elseif ($action === "add_new_test_pro_name") { echo json_encode(add_new_test_pro_name(array( "name" => $request->data->title, "type" => $request->data->type, ))); } elseif ($action === "add_new_test_pro_task") { echo json_encode(add_new_test_pro_task(array( "groupid" => $request->data->groupid, "type" => $request->data->type, "task" => $request->data->task, "descr" => $request->data->descr, "answer" => $request->data->answer, "answerType" => $request->data->answerType, ))); } elseif ($action === "get_pro_tasks_ids_from_db") { echo json_encode(get_pro_tasks_ids_from_db(array( "id" => $request->data->id, ))); } elseif ($action === "get_single_pro_task_from_db") { echo json_encode(get_single_pro_task_from_db(array( "id" => $request->data->id, ))); } elseif ($action === "update_new_test_pro_task") { echo json_encode(update_new_test_pro_task(array( "task_id" => $request->data->taskid, "type" => $request->data->type, "task" => $request->data->task, "descr" => $request->data->descr, "answer" => $request->data->answer, "answerType" => $request->data->answerType, ))); } elseif ($action === "delete_task_pro_by_id") { echo json_encode( delete_task_pro_by_id(array("id" => $request->data->id,)) ); } elseif ($action === "get_test_pro_by_url") { echo json_encode( get_test_pro_by_url(array("url" => $request->data->url,)) ); } elseif ($action === "get_pro_tasks_ids_from_db_by_url") { echo json_encode( get_pro_tasks_ids_from_db_by_url(array("url" => $request->data->url,)) ); } elseif ($action === "save_test_answer_to_db") { echo json_encode(add_test_answer_to_db(array( "url" => $request->data->url, "answer" => $request->data->answer, "start_time" => $request->data->start_time, "end_time" => $request->data->end_time, "user_id" => $_SESSION["user_id"], "task_id" => $request->data->task_id, 'id_proc' => $request->data->id_proc, "is_file" => "0" ))); } elseif ($action === "save_filetest_answer_to_db") { $file = $request->files['file']; $t_filename = ''; if ($file && $file['error'] === UPLOAD_ERR_OK) { $uploadDir = ROOT . 'pupil_answer/'; $fileName = uniqid() . '_' . $file['name']; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0755, true); } if (move_uploaded_file($file['tmp_name'], $uploadDir . $fileName)) { $t_filename = HOST . 'pupil_answer/' . $fileName; } } echo json_encode(add_test_answer_to_db(array( "url" => $request->data->url, "answer" => $t_filename, "is_file" => "1", "start_time" => $request->data->start_time, "end_time" => $request->data->end_time, "task_id" => $request->data->task_id, "user_id" => $_SESSION["user_id"], 'id_proc' => $request->data->id_proc, ))); } elseif ($action === "send_finish_inf_to_db") { echo json_encode(add_finish_inf_testpro_to_db(array( "id_proc" => $request->data->id_proc, "end_time" => $request->data->end_time, "user_id" => $_SESSION["user_id"], ))); } elseif ($action === "initiate_test_process") { echo json_encode(initiate_test_process(array( "url" => $request->data->url, "start_time" => $request->data->start_time, "user_id" => $_SESSION["user_id"] ))); } elseif ($action === "get_test_answers_by_url") { echo json_encode(get_test_answers_by_url(array( "url" => $request->data->url, ))); } elseif ($action === "show_test_result") { echo json_encode(show_stat_test_for_user2(array( "url" => $request->data->url, "id_proc" => $request->data->id_proc, ))); } elseif ($action === "show_stat_test_for_user3") { echo json_encode(show_stat_test_for_user3(array( "id_user" => $request->data->id_user, "id_test" => $request->data->id_test, ))); } } } }); //HTTP POST ACTIONS //END HTTP ACTIONS // Обработка 404 ошибки Flight::map('notFound', function () { echo "
Запрошенный URL: " . Flight::request()->url . "
"; echo "Метод: " . Flight::request()->method . "
"; echo "Вернуться на главную"; }); Flight::start();