setup.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. define("COLOR_DEFAULT", "");
  3. define("COLOR_YELLOW", "\033[93m");
  4. define("COLOR_RED", "\033[91m");
  5. define("COLOR_GREEN", "\033[92m");
  6. define("COLOR_TERMINATOR", "\033[0m");
  7. // Выводит строку информации и окрашивает её в определённый цвет
  8. function displayMessage($string, $color = COLOR_DEFAULT) : void {
  9. echo $color.$string.COLOR_TERMINATOR;
  10. }
  11. // Создаёт БД
  12. function databaseUp($file_path) {
  13. $db = new SQLite3($file_path);
  14. $db->query('CREATE TABLE "regen_reports" (
  15. "id" INTEGER,
  16. "subject_id" INTEGER,
  17. "work_type" INTEGER,
  18. "work_number" TEXT,
  19. "notice" TEXT,
  20. "date_create" DATETIME,
  21. "markup" TEXT,
  22. PRIMARY KEY("id"))');
  23. $db->query('CREATE TABLE "regen_subjects"(
  24. "id" INTEGER PRIMARY KEY,
  25. "name" TEXT,
  26. "code" TEXT,
  27. "teacher_id" INTEGER)');
  28. $db->query('CREATE TABLE "regen_teachers" (
  29. "id" INTEGER PRIMARY KEY,
  30. "surname" TEXT,
  31. "name" TEXT,
  32. "patronymic" TEXT)');
  33. $db->query('CREATE TABLE "regen_worktypes"(
  34. "id" INTEGER PRIMARY KEY,
  35. "name_nom" TEXT,
  36. "name_gen" TEXT,
  37. "name_titlepage" INTEGER)');
  38. $db->query("INSERT INTO 'regen_teachers' VALUES (1,'Пивоваров','Сергей','Александрович')");
  39. $db->query("INSERT INTO 'regen_teachers' VALUES (2,'Ильина','Светлана','Анатольевна')");
  40. $db->query("INSERT INTO 'regen_teachers' VALUES (3,'Галимова','Екатерина','Валерьевна')");
  41. $db->query("INSERT INTO 'regen_teachers' VALUES (4,'Немтинова','Елена','Александровна')");
  42. $db->query("INSERT INTO 'regen_worktypes' VALUES (1,'ЛАБОРАТОРНАЯ РАБОТА','ЛАБОРАТОРНОЙ РАБОТЫ','лабораторной работе')");
  43. $db->query("INSERT INTO 'regen_worktypes' VALUES (2,'ПРАКТИЧЕСКАЯ РАБОТА','ПРАКТИЧЕСКОЙ РАБОТЫ','практической работе')");
  44. }
  45. // Возвращает ввод пользователя
  46. function userInput($prompt) : string {
  47. displayMessage($prompt, COLOR_DEFAULT);
  48. return rtrim(fgets(STDIN));
  49. }
  50. // 1. Создание БД
  51. $db_path = __DIR__."/db.sqlite3";
  52. if (file_exists($db_path)) {
  53. displayMessage("Файл базы данных уже существует -- пропускаем создание\n", COLOR_YELLOW);
  54. } else {
  55. displayMessage("Создаём базу данных...\n", COLOR_YELLOW);
  56. databaseUp($db_path);
  57. displayMessage("База данных успешно создана!\n", COLOR_GREEN);
  58. }
  59. // 2. Заполнение .env файла
  60. $env_path = __DIR__."/.env";
  61. if (file_exists($env_path)) {
  62. displayMessage("Файл env уже существует -- пропускаем создание\n", COLOR_YELLOW);
  63. } else {
  64. $user_name = userInput("Введи твоё имя\n");
  65. $user_surname = userInput("Введи твою фамилию\n");
  66. $user_patronymic = userInput("Введи твоё отчество\n");
  67. $user_group = userInput("Введи группу в которой ты учишься. Например 3ИС\n");
  68. $user_code = userInput("Введи конец шифра в твоих отчётах. Например .012.09.02.07.000\n");
  69. $journal_login = userInput("Введи логин от электронного дневника\n");
  70. $journal_password = userInput("Введи пароль от электронного дневника\n");
  71. $period_id = userInput("Введи текущий period_id\n");
  72. $full = $user_surname.' '.mb_substr($user_name, 0, 1).'. '.mb_substr($user_patronymic, 0, 1).'.';
  73. $fp = fopen($env_path, 'w');
  74. fwrite($fp, "user_name=".$user_name."\n");
  75. fwrite($fp, "journal_login=".$journal_login."\n");
  76. fwrite($fp, "journal_password=".$journal_password."\n");
  77. fwrite($fp, "period_id=".$period_id."\n");
  78. fwrite($fp, "autogost_surname=".$user_surname."\n");
  79. fwrite($fp, "autogost_full=".$full."\n");
  80. fwrite($fp, "autogost_group=".$user_group."\n");
  81. fwrite($fp, "autogost_code=".$user_code."\n");
  82. fclose($fp);
  83. displayMessage("Файл настроек успешно создан!\n", COLOR_GREEN);
  84. }