diff --git a/db/DatabaseSample.sql b/db/DatabaseSample.sql deleted file mode 100644 index b140de937b225eac028138571961ddb2a822c023..0000000000000000000000000000000000000000 --- a/db/DatabaseSample.sql +++ /dev/null @@ -1,750 +0,0 @@ --- phpMyAdmin SQL Dump --- version 4.0.10 --- http://www.phpmyadmin.net --- --- РҐРѕСЃС‚: 127.0.0.1:3306 --- Время создания: РђРІРі 13 2014 Рі., 00:42 --- Версия сервера: 5.5.37-log --- Версия PHP: 5.3.28 - -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -SET time_zone = "+00:00"; - - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; - --- --- База данных: `Sample` --- - --- -------------------------------------------------------- - --- --- Структура таблицы `accounts` --- - -CREATE TABLE IF NOT EXISTS `accounts` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Login` varchar(50) DEFAULT NULL, - `Password` varchar(64) DEFAULT NULL, - `E-Mail` varchar(255) DEFAULT NULL, - `Type` enum('student','teacher') NOT NULL, - `ActivationCode` varchar(40) DEFAULT NULL, - `isEnabled` tinyint(1) NOT NULL DEFAULT '1', - `UserAgent` text, - PRIMARY KEY (`ID`), - UNIQUE KEY `E-Mail` (`E-Mail`), - UNIQUE KEY `Login` (`Login`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; - --- --- Дамп данных таблицы `accounts` --- - -INSERT INTO `accounts` (`ID`, `Login`, `Password`, `E-Mail`, `Type`, `ActivationCode`, `isEnabled`, `UserAgent`) VALUES -(1, NULL, NULL, NULL, 'student', 'code1', 1, NULL), -(2, NULL, NULL, NULL, 'student', 'code2', 1, NULL), -(3, NULL, NULL, NULL, 'student', 'code3', 1, NULL), -(4, NULL, NULL, NULL, 'student', 'code4', 1, NULL), -(5, NULL, NULL, NULL, 'teacher', 'code5', 1, NULL), -(6, NULL, NULL, NULL, 'teacher', 'code6', 1, NULL), -(7, NULL, NULL, NULL, 'teacher', 'code7', 1, NULL), -(8, NULL, NULL, NULL, 'teacher', 'code8', 1, NULL), -(9, NULL, NULL, NULL, 'student', 'code9', 1, NULL), -(10, NULL, NULL, NULL, 'student', 'code10', 1, NULL); - - --- -------------------------------------------------------- - --- --- Структура таблицы `attending_groups` --- - -CREATE TABLE IF NOT EXISTS `attending_groups` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) DEFAULT NULL, - `SemesterID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `SemesterID` (`SemesterID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; - --- --- Дамп данных таблицы `attending_groups` --- - -INSERT INTO `attending_groups` (`ID`, `Name`, `SemesterID`) VALUES -(1, 'Full', 2), -(2, 'Plus', 2), -(3, 'Minus', 2); - --- -------------------------------------------------------- - --- --- Структура таблицы `attending_groups_bases` --- - -CREATE TABLE IF NOT EXISTS `attending_groups_bases` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `AttendingGroupID` int(11) NOT NULL, - `StudyGroupID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `StudyGroupID` (`StudyGroupID`), - KEY `AttendingGroupID` (`AttendingGroupID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; - --- --- Дамп данных таблицы `attending_groups_bases` --- - -INSERT INTO `attending_groups_bases` (`ID`, `AttendingGroupID`, `StudyGroupID`) VALUES -(1, 1, 1), -(2, 2, 2), -(3, 3, 1); - --- -------------------------------------------------------- - --- --- Структура таблицы `attending_groups_pool` --- - -CREATE TABLE IF NOT EXISTS `attending_groups_pool` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `AttendingGroupID` int(11) NOT NULL, - `StudentID` int(11) NOT NULL, - `Type` enum('attach','detach') NOT NULL, - PRIMARY KEY (`ID`), - KEY `AttendingGroupID` (`AttendingGroupID`), - KEY `StudentID` (`StudentID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `attending_groups_pool` --- - -INSERT INTO `attending_groups_pool` (`ID`, `AttendingGroupID`, `StudentID`, `Type`) VALUES -(1, 2, 3, 'attach'), -(2, 3, 3, 'detach'); - --- -------------------------------------------------------- - --- --- Структура таблицы `classrooms` --- - -CREATE TABLE IF NOT EXISTS `classrooms` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) NOT NULL, - `Capacity` int(11) DEFAULT NULL, - `FacultyID` int(11) NOT NULL, - `Export` enum('true','false') NOT NULL DEFAULT 'false', - PRIMARY KEY (`ID`), - KEY `FacultyID` (`FacultyID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `classrooms` --- - -INSERT INTO `classrooms` (`ID`, `Name`, `Capacity`, `FacultyID`, `Export`) VALUES -(1, '202', NULL, 1, 'false'), -(2, '102', NULL, 1, 'false'); - --- -------------------------------------------------------- - --- --- Структура таблицы `classroom_sets` --- - -CREATE TABLE IF NOT EXISTS `classroom_sets` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) DEFAULT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `classroom_sets` --- - -INSERT INTO `classroom_sets` (`ID`, `Name`) VALUES -(1, '202'), -(2, '102'); - --- -------------------------------------------------------- - --- --- Структура таблицы `classroom_sets_pool` --- - -CREATE TABLE IF NOT EXISTS `classroom_sets_pool` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `ClassroomSetID` int(11) NOT NULL, - `ClassroomID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `ClassroomID` (`ClassroomID`), - KEY `ClassroomSetID` (`ClassroomSetID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `classroom_sets_pool` --- - -INSERT INTO `classroom_sets_pool` (`ID`, `ClassroomSetID`, `ClassroomID`) VALUES -(1, 1, 1), -(2, 2, 2); - --- -------------------------------------------------------- - --- --- Структура таблицы `disciplines` --- - -CREATE TABLE IF NOT EXISTS `disciplines` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Grade` int(11) NOT NULL, - `SubjectID` int(11) NOT NULL, - `AuthorID` int(11) NOT NULL, - `ExamType` enum('exam','credit') NOT NULL, - `SemesterID` int(11) NOT NULL, - `PracticeCount` int(11) NOT NULL DEFAULT '0', - `LectionCount` int(11) NOT NULL DEFAULT '0', - `Type` enum('general','special','choosen') NOT NULL DEFAULT 'general', - PRIMARY KEY (`ID`), - KEY `SubjectID` (`SubjectID`), - KEY `TeacherID` (`AuthorID`), - KEY `SemesterID` (`SemesterID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; - --- --- Дамп данных таблицы `disciplines` --- - -INSERT INTO `disciplines` (`ID`, `Grade`, `SubjectID`, `AuthorID`, `ExamType`, `SemesterID`, `PracticeCount`, `LectionCount`, `Type`) VALUES -(1, 1, 1, 3, 'exam', 2, 0, 0, 'general'), -(2, 1, 2, 3, 'credit', 2, 0, 0, 'general'), -(3, 2, 3, 5, 'exam', 2, 0, 0, 'general'), -(4, 1, 4, 3, 'credit', 2, 5, 4, 'general'), -(6, 1, 1, 3, 'exam', 2, 0, 0, 'general'); - --- -------------------------------------------------------- - --- --- Структура таблицы `disciplines_teachers` --- - -CREATE TABLE IF NOT EXISTS `disciplines_teachers` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `DisciplineID` int(11) NOT NULL, - `TeacherID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `DisciplineID` (`DisciplineID`), - KEY `AccountID` (`TeacherID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; - --- --- Дамп данных таблицы `disciplines_teachers` --- - -INSERT INTO `disciplines_teachers` (`ID`, `DisciplineID`, `TeacherID`) VALUES -(1, 1, 3), -(2, 1, 4), -(3, 2, 3), -(4, 3, 5), -(5, 4, 3); - --- -------------------------------------------------------- - --- --- Структура таблицы `faculties` --- - -CREATE TABLE IF NOT EXISTS `faculties` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(100) NOT NULL, - `Abbr` varchar(20) NOT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `faculties` --- - -INSERT INTO `faculties` (`ID`, `Name`, `Abbr`) VALUES -(1, 'Математика Механика Рё РљРќ', 'МехМат'), -(2, 'Юридический факультет', 'ЮрФак'); - --- -------------------------------------------------------- - --- --- Структура таблицы `general_settings` --- - -CREATE TABLE IF NOT EXISTS `general_settings` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Val` int(11) DEFAULT NULL, - `ValS` varchar(300) DEFAULT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `general_settings` --- - -INSERT INTO `general_settings` (`ID`, `Val`, `ValS`) VALUES -(1, 2, NULL), -(2, NULL, NULL); - --- -------------------------------------------------------- - --- --- Структура таблицы `lessons` --- - -CREATE TABLE IF NOT EXISTS `lessons` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `AttendingGroupID` int(11) NOT NULL, - `DisciplineTeacherID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `DisciplineID` (`DisciplineTeacherID`), - KEY `AttendingGroupID` (`AttendingGroupID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; - --- --- Дамп данных таблицы `lessons` --- - -INSERT INTO `lessons` (`ID`, `AttendingGroupID`, `DisciplineTeacherID`) VALUES -(1, 1, 1), -(2, 1, 2), -(3, 1, 3), -(4, 2, 4); - --- -------------------------------------------------------- - --- --- Структура таблицы `logs` --- - -CREATE TABLE IF NOT EXISTS `logs` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `RatingTableID` int(11) NOT NULL, - `AccountID` int(11) NOT NULL, - `OldValue` int(11) NOT NULL, - `NewValue` int(11) NOT NULL, - `Date` datetime NOT NULL, - PRIMARY KEY (`ID`), - KEY `RatingTableID` (`RatingTableID`), - KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `logs` --- - -INSERT INTO `logs` (`ID`, `RatingTableID`, `AccountID`, `OldValue`, `NewValue`, `Date`) VALUES -(1, 3, 5, 6, 7, '2014-07-27 14:25:08'), -(2, 3, 5, 7, 8, '2014-07-27 20:58:49'); - --- -------------------------------------------------------- - --- --- Структура таблицы `modules` --- - -CREATE TABLE IF NOT EXISTS `modules` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) NOT NULL, - `OrderNum` int(11) NOT NULL, - `DisciplineID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - UNIQUE KEY `OrderNum` (`OrderNum`,`DisciplineID`), - KEY `DisciplineID` (`DisciplineID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ; - --- --- Дамп данных таблицы `modules` --- - -INSERT INTO `modules` (`ID`, `Name`, `OrderNum`, `DisciplineID`) VALUES -(3, 'Теория пределов', 2, 1), -(4, 'Дифференцирование', 1, 1), -(5, 'Модуль1', 1, 2), -(6, 'Модуль1', 1, 3), -(7, 'Модуль1', 1, 4), -(8, 'NewModule', 666, 1), -(13, 'ывк', 5, 1), -(14, 'sdhr', 13, 1); - --- -------------------------------------------------------- - --- --- Структура таблицы `rating_table` --- - -CREATE TABLE IF NOT EXISTS `rating_table` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `StudentID` int(11) NOT NULL, - `TeacherID` int(11) NOT NULL, - `SubmoduleID` int(11) NOT NULL, - `Rate` int(11) NOT NULL, - `Date` date NOT NULL, - PRIMARY KEY (`ID`), - KEY `StudentID` (`StudentID`), - KEY `SubmoduleID` (`SubmoduleID`), - KEY `TeacherID` (`TeacherID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; - --- --- Дамп данных таблицы `rating_table` --- - -INSERT INTO `rating_table` (`ID`, `StudentID`, `TeacherID`, `SubmoduleID`, `Rate`, `Date`) VALUES -(1, 3, 3, 5, 4, '2014-07-02'), -(3, 3, 3, 6, 8, '2014-07-27'), -(4, 3, 3, 7, 4, '2014-07-27'); - --- -------------------------------------------------------- - --- --- Структура таблицы `requests` --- - -CREATE TABLE IF NOT EXISTS `requests` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `AccountID` int(11) DEFAULT NULL, - `Information` text NOT NULL, - `Date` date NOT NULL, - `Status` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`ID`), - KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `schedule` --- - -CREATE TABLE IF NOT EXISTS `schedule` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `LessonID` int(11) NOT NULL, - `Day` int(11) NOT NULL, - `LessonTimeID` int(11) NOT NULL, - `ClassroomSetID` int(11) NOT NULL, - `SubgroupCount` int(11) NOT NULL, - `SubgroupNum` int(11) NOT NULL, - `WeekSplit` enum('full','up','down') NOT NULL DEFAULT 'full', - `LesType` int(11) NOT NULL, - `Notice` varchar(30) NOT NULL, - PRIMARY KEY (`ID`), - KEY `LessonID` (`LessonID`), - KEY `ClassroomSetID` (`ClassroomSetID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `semesters` --- - -CREATE TABLE IF NOT EXISTS `semesters` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Year` int(11) NOT NULL, - `Num` int(11) NOT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `semesters` --- - -INSERT INTO `semesters` (`ID`, `Year`, `Num`) VALUES -(2, 2014, 1); - --- -------------------------------------------------------- - --- --- Структура таблицы `specializations` --- - -CREATE TABLE IF NOT EXISTS `specializations` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) NOT NULL, - `Abbr` varchar(20) NOT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; - --- --- Дамп данных таблицы `specializations` --- - -INSERT INTO `specializations` (`ID`, `Name`, `Abbr`) VALUES -(1, 'Прикладная математика Рё информатика', 'РџРњРёР'), -(2, 'Рнформационные технологии', 'РРў'); - --- -------------------------------------------------------- - --- --- Структура таблицы `students` --- - -CREATE TABLE IF NOT EXISTS `students` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `StudyGroupID` int(11) NOT NULL, - `AccountID` int(11) NOT NULL, - `LastName` varchar(30) NOT NULL, - `FirstName` varchar(30) NOT NULL, - `SecondName` varchar(30) DEFAULT NULL, - PRIMARY KEY (`ID`), - KEY `StudyGroupID` (`StudyGroupID`), - KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ; - --- --- Дамп данных таблицы `students` --- - -INSERT INTO `students` (`ID`, `StudyGroupID`, `AccountID`, `LastName`, `FirstName`, `SecondName`) VALUES -(3, 1, 1, 'Сыроежкин', 'Сергей', 'Александрович'), -(4, 1, 2, 'Селезнева', 'Алиса', 'Сергеевна'), -(5, 2, 3, 'Камеррер', 'Максим', 'Владимирович'), -(6, 2, 4, 'Пен', 'Питер', NULL), -(7, 1, 9, 'Наина', 'Киевна', 'Горыныч'), -(9, 3, 10, 'Бэггинс', 'Бильбо', NULL); - --- -------------------------------------------------------- - --- --- Структура таблицы `study_groups` --- - -CREATE TABLE IF NOT EXISTS `study_groups` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Grade` int(11) NOT NULL, - `GroupNum` int(11) NOT NULL, - `SpecializationID` int(11) NOT NULL, - `FacultyID` int(11) NOT NULL, - `Name` varchar(50) DEFAULT NULL, - PRIMARY KEY (`ID`), - KEY `SpecializtionID` (`SpecializationID`), - KEY `FacultyID` (`FacultyID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; - --- --- Дамп данных таблицы `study_groups` --- - -INSERT INTO `study_groups` (`ID`, `Grade`, `GroupNum`, `SpecializationID`, `FacultyID`, `Name`) VALUES -(1, 1, 2, 1, 1, 'SomeGroupName'), -(2, 2, 7, 2, 1, NULL), -(3, 5, 5, 1, 1, 'New'); - --- -------------------------------------------------------- - --- --- Структура таблицы `subjects` --- - -CREATE TABLE IF NOT EXISTS `subjects` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) NOT NULL, - `Abbr` varchar(20) DEFAULT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; - --- --- Дамп данных таблицы `subjects` --- - -INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES -(1, 'Математический анализ', 'Матан'), -(2, 'Конституционное право', 'РљРџ'), -(3, 'Операционные системы', 'РћРЎ'), -(4, 'Рстория', 'Рстория'); - --- -------------------------------------------------------- - --- --- Структура таблицы `submodules` --- - -CREATE TABLE IF NOT EXISTS `submodules` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `ModuleID` int(11) NOT NULL, - `MaxRate` int(11) NOT NULL, - `OrderNum` int(11) NOT NULL, - `Name` varchar(50) NOT NULL, - `Description` varchar(200) DEFAULT NULL, - `Type` enum('CurrentControl','LandmarkControl') NOT NULL DEFAULT 'CurrentControl', - PRIMARY KEY (`ID`), - UNIQUE KEY `ModuleID_2` (`ModuleID`,`OrderNum`), - KEY `ModuleID` (`ModuleID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ; - --- --- Дамп данных таблицы `submodules` --- - -INSERT INTO `submodules` (`ID`, `ModuleID`, `MaxRate`, `OrderNum`, `Name`, `Description`, `Type`) VALUES -(5, 3, 12, 2, 'Контрольная работа', NULL, 'LandmarkControl'), -(6, 3, 20, 1, 'Коллоквиум', '', 'CurrentControl'), -(7, 4, 20, 1, 'РґР·', '', 'CurrentControl'), -(9, 6, 20, 1, 'РґР·', '', 'CurrentControl'), -(10, 6, 10, 2, 'Тест', '', 'CurrentControl'), -(11, 7, 20, 1, 'Коллоквиум', '', 'CurrentControl'), -(12, 7, 15, 2, 'Активность РЅР° занятиях', '', 'CurrentControl'); - --- -------------------------------------------------------- - --- --- Структура таблицы `teachers` --- - -CREATE TABLE IF NOT EXISTS `teachers` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `LastName` varchar(30) NOT NULL, - `FirstName` varchar(30) NOT NULL, - `SecondName` varchar(30) DEFAULT NULL, - `Degree` varchar(50) DEFAULT NULL, - `FacultyID` int(11) NOT NULL, - `AccountID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `FacultyID` (`FacultyID`), - KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ; - --- --- Дамп данных таблицы `teachers` --- - -INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `Degree`, `FacultyID`, `AccountID`) VALUES -(3, 'Менделеев', 'Дмитрий', 'Рванович', NULL, 1, 5), -(4, 'Лермонтов', 'Михаил', 'Юрьевич', NULL, 1, 6), -(5, 'Крузенштерн', 'Рван', 'Федорович', NULL, 2, 7), -(6, 'Лобачевский', 'Николай', 'Рванович', NULL, 1, 8); - --- --- Ограничения внешнего ключа сохраненных таблиц --- - --- --- Ограничения внешнего ключа таблицы `attending_groups` --- -ALTER TABLE `attending_groups` - ADD CONSTRAINT `attending_groups_ibfk_1` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`); - --- --- Ограничения внешнего ключа таблицы `attending_groups_bases` --- -ALTER TABLE `attending_groups_bases` - ADD CONSTRAINT `attending_groups_bases_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), - ADD CONSTRAINT `attending_groups_bases_ibfk_2` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`); - --- --- Ограничения внешнего ключа таблицы `attending_groups_pool` --- -ALTER TABLE `attending_groups_pool` - ADD CONSTRAINT `attending_groups_pool_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), - ADD CONSTRAINT `attending_groups_pool_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`); - --- --- Ограничения внешнего ключа таблицы `classrooms` --- -ALTER TABLE `classrooms` - ADD CONSTRAINT `classrooms_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`); - --- --- Ограничения внешнего ключа таблицы `classroom_sets_pool` --- -ALTER TABLE `classroom_sets_pool` - ADD CONSTRAINT `classroom_sets_pool_ibfk_1` FOREIGN KEY (`ClassroomID`) REFERENCES `classrooms` (`ID`), - ADD CONSTRAINT `classroom_sets_pool_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`); - --- --- Ограничения внешнего ключа таблицы `disciplines` --- -ALTER TABLE `disciplines` - ADD CONSTRAINT `disciplines_ibfk_2` FOREIGN KEY (`SubjectID`) REFERENCES `subjects` (`ID`), - ADD CONSTRAINT `disciplines_ibfk_4` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`), - ADD CONSTRAINT `disciplines_ibfk_5` FOREIGN KEY (`AuthorID`) REFERENCES `teachers` (`ID`); - --- --- Ограничения внешнего ключа таблицы `disciplines_teachers` --- -ALTER TABLE `disciplines_teachers` - ADD CONSTRAINT `disciplines_teachers_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`), - ADD CONSTRAINT `disciplines_teachers_ibfk_2` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`); - --- --- Ограничения внешнего ключа таблицы `lessons` --- -ALTER TABLE `lessons` - ADD CONSTRAINT `lessons_ibfk_6` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), - ADD CONSTRAINT `lessons_ibfk_7` FOREIGN KEY (`DisciplineTeacherID`) REFERENCES `disciplines_teachers` (`ID`); - --- --- Ограничения внешнего ключа таблицы `logs` --- -ALTER TABLE `logs` - ADD CONSTRAINT `logs_ibfk_1` FOREIGN KEY (`RatingTableID`) REFERENCES `rating_table` (`ID`), - ADD CONSTRAINT `logs_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`); - --- --- Ограничения внешнего ключа таблицы `modules` --- -ALTER TABLE `modules` - ADD CONSTRAINT `modules_ibfk_2` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`); - --- --- Ограничения внешнего ключа таблицы `rating_table` --- -ALTER TABLE `rating_table` - ADD CONSTRAINT `rating_table_ibfk_1` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`), - ADD CONSTRAINT `rating_table_ibfk_3` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`), - ADD CONSTRAINT `rating_table_ibfk_4` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`); - --- --- Ограничения внешнего ключа таблицы `requests` --- -ALTER TABLE `requests` - ADD CONSTRAINT `requests_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL; - --- --- Ограничения внешнего ключа таблицы `schedule` --- -ALTER TABLE `schedule` - ADD CONSTRAINT `schedule_ibfk_1` FOREIGN KEY (`LessonID`) REFERENCES `lessons` (`ID`), - ADD CONSTRAINT `schedule_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`); - --- --- Ограничения внешнего ключа таблицы `students` --- -ALTER TABLE `students` - ADD CONSTRAINT `students_ibfk_1` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`), - ADD CONSTRAINT `students_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`); - --- --- Ограничения внешнего ключа таблицы `study_groups` --- -ALTER TABLE `study_groups` - ADD CONSTRAINT `study_groups_ibfk_2` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`), - ADD CONSTRAINT `study_groups_ibfk_4` FOREIGN KEY (`SpecializationID`) REFERENCES `specializations` (`ID`); - --- --- Ограничения внешнего ключа таблицы `submodules` --- -ALTER TABLE `submodules` - ADD CONSTRAINT `submodules_ibfk_1` FOREIGN KEY (`ModuleID`) REFERENCES `modules` (`ID`); - --- --- Ограничения внешнего ключа таблицы `teachers` --- -ALTER TABLE `teachers` - ADD CONSTRAINT `teachers_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`), - ADD CONSTRAINT `teachers_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`); - -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/db/Sample.sql b/db/Sample.sql new file mode 100644 index 0000000000000000000000000000000000000000..ce67be10bc2ad618ee90e4e36a964755faa23f08 --- /dev/null +++ b/db/Sample.sql @@ -0,0 +1,133 @@ +-- phpMyAdmin SQL Dump +-- version 4.0.10 +-- http://www.phpmyadmin.net +-- +-- РҐРѕСЃС‚: 127.0.0.1:3306 +-- Время создания: РђРІРі 22 2014 Рі., 14:07 +-- Версия сервера: 5.5.37-log +-- Версия PHP: 5.3.28 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- +-- База данных: `Sample2` +-- + +-- +-- Дамп данных таблицы `accounts` +-- + +INSERT INTO `accounts` (`ID`, `Login`, `Password`, `EMail`, `UserRoleID`, `ActivationCode`, `isEnabled`, `UserAgent`) VALUES +(6, 'Abbadon', 'ff6cfea689c242780b084583790e39f5eb03bb91', 'solidovic@gmail.com', 2, NULL, 1, NULL), +(7, NULL, NULL, NULL, 1, 'code2', 1, NULL); + +-- +-- Дамп данных таблицы `degrees` +-- + +INSERT INTO `degrees` (`ID`, `Name`) VALUES +(1, 'Аспирант'), +(2, 'Ассистент'), +(3, 'Ведущий научный сотрудник'), +(4, 'Главный научный сотрудник'), +(5, 'Докторант'), +(6, 'Доцент'), +(7, 'Младший научный сотрудник'), +(8, 'Научный сотрудник'), +(9, 'Преподаватель'), +(10, 'Профессор'), +(11, 'Старший преподаватель'), +(12, 'Стажер'), +(13, 'Старший научный сотрудник'), +(14, 'Доцент'); + +-- +-- Дамп данных таблицы `departments` +-- + +INSERT INTO `departments` (`ID`, `Name`, `FacultyID`) VALUES +(1, 'Кафедра математического анализа', 1), +(2, 'Кафедра магического анализа', 1); + +-- +-- Дамп данных таблицы `faculties` +-- + +INSERT INTO `faculties` (`ID`, `Name`, `Abbr`) VALUES +(1, 'Математика Механика Рё РљРќ', 'МехМат'), +(2, 'Юридический факультет', 'ЮрФак'); + +-- +-- Дамп данных таблицы `general_settings` +-- + +INSERT INTO `general_settings` (`ID`, `Val`, `ValS`) VALUES +(1, 1, NULL), +(2, NULL, 'hfkshfkjdshkjfsdj'); + +-- +-- Дамп данных таблицы `semesters` +-- + +INSERT INTO `semesters` (`ID`, `Year`, `Num`) VALUES +(1, 2014, 1); + +-- +-- Дамп данных таблицы `specializations` +-- + +INSERT INTO `specializations` (`ID`, `Name`, `Abbr`, `FacultyID`) VALUES +(1, 'Прикладная математика Рё информатика', 'РџРњРёР', 1), +(2, 'Рнформационные технологии', 'РРў', 1), +(3, 'Математика', 'Матем', 1), +(4, 'Механика', 'Механика', 1); + +-- +-- Дамп данных таблицы `students` +-- + +INSERT INTO `students` (`ID`, `StudyGroupID`, `AccountID`, `LastName`, `FirstName`, `SecondName`) VALUES +(1, 1, 7, 'Рванов', 'Рван', 'Рванович'); + +-- +-- Дамп данных таблицы `study_groups` +-- + +INSERT INTO `study_groups` (`ID`, `Grade`, `GroupNum`, `SpecializationID`, `Name`) VALUES +(1, 1, 1, 1, NULL); + +-- +-- Дамп данных таблицы `subjects` +-- + +INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES +(1, 'Математический анализ', 'Матан'), +(2, 'Конституционное право', 'РљРџ'), +(3, 'Операционные системы', 'РћРЎ'), +(4, 'Рстория', 'Рстория'); + +-- +-- Дамп данных таблицы `teachers` +-- + +INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `DegreeID`, `DepartmentID`, `AccountID`) VALUES +(1, 'Колобок', 'Фазиль', 'Евреивич', 9, 1, 6); + +-- +-- Дамп данных таблицы `user_roles` +-- + +INSERT INTO `user_roles` (`ID`, `Type`, `Role`, `Mark`) VALUES +(1, 'student', 'common', 0), +(2, 'teacher', 'common', 0); + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 382b781ebcf9f5be314098545e40665df2c288d4..b3628d872227a2819caa41afcb0b521332de14d5 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -1,41 +1,104 @@ - +DELIMITER // +-- ------------------------------------------------------------------------------------------- -- ====== Common ======= -- +-- ------------------------------------------------------------------------------------------- -- Desc: Получает ID текущего семестра -- Note: uses by another functions -DROP FUNCTION IF EXISTS GetCurSemesterID;// -CREATE FUNCTION `GetCurSemesterID`( ) RETURNS int(11) +DROP FUNCTION IF EXISTS GetCurSemesterID// +CREATE FUNCTION `GetCurSemesterID` ( ) RETURNS int(11) + NO SQL +BEGIN + RETURN ( SELECT general_settings.Val + FROM `general_settings` + WHERE general_settings.ID = 1 + LIMIT 1 + ); +END // + + + + +DROP FUNCTION IF EXISTS SetCurSemesterID// +CREATE FUNCTION `SetCurSemesterID` ( `SemesterID` INT + ) RETURNS int(11) NO SQL BEGIN - RETURN (SELECT general_settings.Val FROM `general_settings` WHERE general_settings.ID = 1 ); + DECLARE checker INT; + + SELECT semesters.ID + INTO checker + FROM `semesters` + WHERE semesters.ID = SemesterID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + UPDATE `general_settings` + SET general_settings.Val = SemesterID + WHERE general_settings.ID = 1; + RETURN 0; END // + + + -- Desc: Получает ID семестра -- Note: uses by another functions -DROP FUNCTION IF EXISTS GetSemesterID;// -CREATE FUNCTION `GetSemesterID`( `Year` INT, `Num` INT ) RETURNS int(11) +DROP FUNCTION IF EXISTS GetSemesterID// +CREATE FUNCTION `GetSemesterID` ( `Year` INT, + `Num` INT + ) RETURNS int(11) NO SQL BEGIN - RETURN (SELECT semesters.ID FROM `semesters` WHERE semesters.Year = Year AND semesters.Num = Num ); + RETURN ( SELECT semesters.ID + FROM `semesters` + WHERE semesters.Year = Year AND + semesters.Num = Num + LIMIT 1 + ); END // + + -- Desc: Получает информацию Рѕ текущем семестре -DROP PROCEDURE IF EXISTS GetCurSemesterInfo;// -CREATE PROCEDURE `GetCurSemesterInfo`( ) +DROP PROCEDURE IF EXISTS GetCurSemesterInfo// +CREATE PROCEDURE `GetCurSemesterInfo` ( ) NO SQL BEGIN - SELECT semesters.ID, - semesters.Num, - semesters.Year + SELECT semesters.ID AS 'SemesterID', + semesters.Num As 'SemesterNum', + semesters.Year As 'SemesterYear' FROM `general_settings` - INNER JOIN `semesters` ON general_settings.Val = semesters.ID + INNER JOIN `semesters` ON general_settings.Val = semesters.ID WHERE general_settings.ID = 1; END // -DROP FUNCTION IF EXISTS SetHashKey;// -CREATE FUNCTION `SetHashKey`( `Value` VARCHAR(300) ) RETURNS int(11) + + + + +DROP PROCEDURE IF EXISTS GetSemesterInfo// +CREATE PROCEDURE `GetSemesterInfo` ( IN `SemesterID` INT + ) + NO SQL +BEGIN + SELECT semesters.Num As 'SemesterNum', + semesters.Year As 'SemesterYear' + FROM `semesters` + WHERE semesters.ID = SemesterID; +END // + + + + + +DROP FUNCTION IF EXISTS SetHashKey// +CREATE FUNCTION `SetHashKey` ( `Value` VARCHAR(300) + ) RETURNS int(11) NO SQL BEGIN UPDATE `general_settings` @@ -44,157 +107,339 @@ BEGIN RETURN 0; END // -DROP FUNCTION IF EXISTS GetHashKey;// -CREATE FUNCTION `GetHashKey`() RETURNS varchar(300) CHARSET utf8 + + + +DROP FUNCTION IF EXISTS GetHashKey// +CREATE FUNCTION `GetHashKey` ( ) RETURNS varchar(300) CHARSET utf8 NO SQL BEGIN - RETURN ( SELECT general_settings.ValS - FROM `general_settings` + RETURN ( SELECT general_settings.ValS + FROM `general_settings` WHERE general_settings.ID = 2 - ); + ); +END // + + + + +DROP FUNCTION IF EXISTS SetBitmaskByPagename// +CREATE FUNCTION `SetBitmaskByPagename` ( `Pagename` TEXT CHARSET utf8, + `Mask` INT + ) RETURNS int(11) + NO SQL +BEGIN + UPDATE `page_access` + SET page_access.Bitmask = Mask + WHERE page_access.Pagename = Pagename + LIMIT 1; + RETURN 0; +END // + + + + + +DROP FUNCTION IF EXISTS GetBitmaskByPagename// +CREATE FUNCTION `GetBitmaskByPagename` ( `Pagename` TEXT CHARSET utf8 + ) RETURNS int(11) + NO SQL +BEGIN + RETURN ( SELECT page_access.Bitmask + FROM `page_access` + WHERE page_access.Pagename = Pagename + ); END // -DROP PROCEDURE IF EXISTS GetSubjectList;// -CREATE PROCEDURE `GetSubjectList`( ) + + + + +-- ------------------------------------------------------------------------------------------- +-- ====== base getters====== +-- ------------------------------------------------------------------------------------------- + +DROP PROCEDURE IF EXISTS GetSubjects// +CREATE PROCEDURE `GetSubjects` ( ) NO SQL BEGIN - SELECT subjects.ID, - subjects.Name, - subjects.Abbr + SELECT subjects.ID AS 'SubjectID', + subjects.Name AS 'SubjectName', + subjects.Abbr AS 'SubjectAbbr' FROM `subjects` ORDER BY subjects.Name ASC; END // +DROP PROCEDURE IF EXISTS GetFaculties// +CREATE PROCEDURE `GetFaculties` ( ) + NO SQL +BEGIN + SELECT faculties.ID AS 'FacultyID', + faculties.Name AS 'FacultyName', + faculties.Abbr AS 'FacultyAbbr' + FROM `faculties`; +END // + + +DROP PROCEDURE IF EXISTS GetDepartments// +CREATE PROCEDURE `GetDepartments` ( ) + NO SQL +BEGIN + SELECT departments.ID AS 'DepID', + departments.Name AS 'DepName', + faculties.ID AS 'FacultyID', + faculties.Name AS 'FacultyName', + faculties.Abbr AS 'FacultyAbbr' + FROM `departments` + INNER JOIN `faculties` ON faculties.ID = departments.FacultyID; + +END // + + +DROP PROCEDURE IF EXISTS GetDepartmentsByFaculty// +CREATE PROCEDURE `GetDepartmentsByFaculty` ( IN `FacultyID` INT + ) + NO SQL +BEGIN + SELECT departments.ID AS 'DepID', + departments.Name AS 'DepName' + FROM `departments` + WHERE departments.FacultyID = FacultyID; +END // + + + +DROP PROCEDURE IF EXISTS GetSpecializations// +CREATE PROCEDURE `GetSpecializations` ( IN `FacultyID` INT + ) + NO SQL +BEGIN + SELECT specializations.ID AS 'SpecID', + specializations.Name AS 'SpecName', + specializations.Abbr AS 'SpecAbbr', + specializations.FacultyID AS 'FacultyID' + FROM `specializations` + WHERE specializations.FacultyID = FacultyID + ORDER BY subjects.Name ASC; +END // + + -DROP PROCEDURE IF EXISTS GetStudyGroups;// -CREATE PROCEDURE `GetStudyGroups`( IN `Grade` INT, - IN `FacultyID` INT ) +DROP PROCEDURE IF EXISTS GetStudyGroups// +CREATE PROCEDURE `GetStudyGroups` ( IN `Grade` INT, + IN `FacultyID` INT + ) NO SQL BEGIN - SELECT study_groups.ID, - study_groups.GroupNum, - specializations.ID AS 'SpecID', - specializations.Name AS 'SpecName', - specializations.Abbr AS 'SpecAbbr' + SELECT study_groups.ID AS 'GroupID', + study_groups.GroupNum AS 'GroupNum', + specializations.ID AS 'SpecID', + specializations.Name AS 'SpecName', + specializations.Abbr AS 'SpecAbbr', + specializations.FacultyID AS 'FacultyID' FROM `study_groups` INNER JOIN `specializations` ON specializations.ID = study_groups.SpecializationID - WHERE study_groups.Grade = Grade AND study_groups.FacultyID = FacultyID; - + WHERE study_groups.Grade = Grade AND + specializations.FacultyID = FacultyID; END // -DROP PROCEDURE IF EXISTS GetStudentsByStudyGroups;// -CREATE PROCEDURE `GetStudentsByStudyGroups`( IN `StudyGroupID` INT ) +DROP PROCEDURE IF EXISTS GetStudentsByStudyGroups// +CREATE PROCEDURE `GetStudentsByStudyGroups` ( IN `StudyGroupID` INT + ) NO SQL BEGIN SELECT students.ID AS 'StudentID', - students.LastName, - students.FirstName, - students.SecondName + students.LastName AS 'StudentLast', + students.FirstName AS 'StudentFirst', + students.SecondName AS 'StudentSecond' FROM `students` WHERE students.StudyGroupID = StudyGroupID; END // +DROP PROCEDURE IF EXISTS GetStudentsByFaculty// +CREATE PROCEDURE `GetStudentsByFaculty` ( IN `FacultyID` INT + ) + NO SQL +BEGIN + SELECT students.ID AS 'StudentID', + students.LastName AS 'StudentLast', + students.FirstName AS 'StudentFirst', + students.SecondName AS 'StudentSecond' + FROM `students` + INNER JOIN `study_groups` ON study_groups.ID = students.StudyGroupID + INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID + WHERE specializations.FacultyID = FacultyID; + +END // + + + +DROP PROCEDURE IF EXISTS GetTeachersByFaculty// +CREATE PROCEDURE `GetTeachersByFaculty` ( IN `FacultyID` INT + ) + NO SQL +BEGIN + SELECT teachers.ID AS 'TeacherID', + teachers.LastName AS 'TeacherLast', + teachers.FirstName AS 'TeacherFirst', + teachers.SecondName AS 'TeacherSecond', + degrees.Name AS 'DegreeName', + departments.ID AS 'DepID', + departments.Name AS 'DepName' + FROM `teachers` + INNER JOIN `departments` ON departments.ID = teachers.DepartmentID + INNER JOIN `degrees` ON degrees.ID = teachers.DegreeID + WHERE departments.FacultyID = FacultyID; + +END // + + +DROP PROCEDURE IF EXISTS GetTeachersByDepartment// +CREATE PROCEDURE `GetTeachersByDepartment` ( IN `FacultyID` INT + ) + NO SQL +BEGIN + SELECT teachers.ID AS 'TeacherID', + teachers.LastName AS 'TeacherLast', + teachers.FirstName AS 'TeacherFirst', + teachers.SecondName AS 'TeacherSecond', + degrees.Name AS 'DegreeName', + departments.ID AS 'DepartmentID', + departments.Name AS 'DepartmentName' + FROM `teachers` + INNER JOIN `departments` ON departments.ID = teachers.DepartmentID + INNER JOIN `degrees` ON degrees.ID = teachers.DegreeID + WHERE departments.FacultyID = FacultyID; + +END // + + + + --- ====== Работа СЃ аккаунтами ====== + + +-- ------------------------------------------------------------------------------------------- +-- ====== Работа СЃ аккаунтами ====== +-- ------------------------------------------------------------------------------------------- + -- Desc: Количество аккаунтов СЃ данным РєРѕРґРѕРј активации -- Note: uses by another functions -DROP FUNCTION IF EXISTS GetAccNumByCode;// -CREATE FUNCTION `GetAccNumByCode`( `Code` VARCHAR(40) CHARSET utf8 ) RETURNS int(11) +DROP FUNCTION IF EXISTS GetAccCountByCode// +CREATE FUNCTION `GetAccCountByCode` ( `Code` VARCHAR(40) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN - RETURN (SELECT COUNT(accounts.ID) FROM accounts WHERE accounts.ActivationCode = Code ); + RETURN ( SELECT COUNT(accounts.ID) + FROM `accounts` + WHERE accounts.ActivationCode = Code + ); END // -- Desc: Количество аккаунтов СЃ данным логином -DROP FUNCTION IF EXISTS GetAccNumByLogin; // -CREATE FUNCTION `GetAccNumByLogin`(`Login` VARCHAR(50) CHARSET utf8) RETURNS int(11) +DROP FUNCTION IF EXISTS GetAccCountByMail // +CREATE FUNCTION `GetAccCountByMail` ( `Mail` VARCHAR(50) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN - RETURN ( SELECT COUNT(accounts.ID) FROM accounts WHERE accounts.Login = Login ); + RETURN ( SELECT COUNT(accounts.ID) + FROM `accounts` + WHERE accounts.EMail = Mail + ); END // --- Desc: Количество аккаунтов СЃ данным e-mail -DROP FUNCTION IF EXISTS GetAccNumByMail; // -CREATE FUNCTION `GetAccNumByMail`(`Mail` VARCHAR(255) CHARSET utf8) RETURNS int(11) +-- Desc: Количество аккаунтов СЃ данным логином +DROP FUNCTION IF EXISTS GetAccCountByLogin// +CREATE FUNCTION `GetAccCountByLogin` ( `Login` VARCHAR(50) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN - RETURN ( SELECT COUNT(accounts.ID) FROM accounts WHERE accounts.`E-Mail` = Mail ); + RETURN ( SELECT COUNT(accounts.ID) + FROM `accounts` + WHERE accounts.Login = Login + ); END // -DROP PROCEDURE IF EXISTS GetAccInfoByID; // -CREATE PROCEDURE `GetAccInfoByID`(IN `UserID` VARCHAR(50) CHARSET utf8 ) +DROP PROCEDURE IF EXISTS GetAccInfoByID// +CREATE PROCEDURE `GetAccInfoByID` ( IN `UserID` VARCHAR(50) CHARSET utf8 + ) NO SQL BEGIN - SELECT accounts.ID, - accounts.`Login`, - accounts.`E-Mail`, - accounts.Type, + SELECT accounts.ID AS 'AccID', + accounts.Login AS 'AccLogin', + accounts.EMail AS 'AccEMail', + user_roles.Type AS 'AccType', + user_roles.Role AS 'AccRole', accounts.isEnabled, ( accounts.ActivationCode IS NULL) AS 'isActivated', - accounts.UserAgent - FROM accounts - WHERE accounts.`ID` = UserID; + accounts.UserAgent + FROM `accounts` + INNER JOIN `user_roles` ON accounts.UserRoleID = user_roles.ID + WHERE accounts.ID = UserID; END // - - - - -- Desc: - UserID => FirstName, SecondName, LastName, StudyGroup (РІСЃСЏ информация, РІ С‚.С‡. Рё специализация (РџРњ, РРў, etc.)) (РІ зав. РѕС‚ AccountType) -- Note: 1) если аккаунт существует, то всегда можно получить UserID, AccountType, LastName, FirstName -- иначе UserID = NULL (как Рё РІСЃРµ остальные) -- 2) Degree Сѓ преподавателя Рё LastName РјРѕРіСѓС‚ быть NULL -DROP PROCEDURE IF EXISTS GetPersonalInfoByID; // -CREATE PROCEDURE `GetPersonalInfoByID`(IN `UserID` INT ) +DROP PROCEDURE IF EXISTS GetPersonalInfoByID// +CREATE PROCEDURE `GetPersonalInfoByID` ( IN `UserID` INT + ) NO SQL BEGIN - DECLARE varType INT; - SELECT accounts.Type FROM accounts WHERE accounts.ID = UserID LIMIT 1 INTO varType; - IF varType = 1 THEN + DECLARE accType INT; + SELECT accounts.Type + INTO accType + FROM accounts + WHERE accounts.ID = UserID + LIMIT 1; + + + IF accType = 1 THEN SELECT students.ID AS 'StudentID', - students.LastName, - students.FirstName, - students.SecondName, - study_groups.ID AS 'StudyGroupID', - study_groups.Grade AS 'Grade', - study_groups.GroupNum AS 'Group', - study_groups.Name AS 'StudyGroupName', + students.LastName AS 'Last', + students.FirstName AS 'First', + students.SecondName AS 'Second', + study_groups.ID AS 'GroupID', + study_groups.Grade AS 'StudentGrade', + study_groups.GroupNum AS 'GroupNum', + study_groups.Name AS 'GroupName', specializations.ID AS 'SpecID', specializations.Name AS 'SpecName', specializations.Abbr AS 'SpecAbbr', faculties.ID AS 'FacultyID', faculties.Name AS 'FacultyName', - faculties.Abbr AS 'FacultyAbbreviation' + faculties.Abbr AS 'FacultyAbbr' FROM `students` - INNER JOIN study_groups ON students.StudyGroupID = study_groups.ID - INNER JOIN faculties ON study_groups.FacultyID = faculties.ID - INNER JOIN specializations ON study_groups.SpecializationID = specializations.ID + INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID + INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID + INNER JOIN `faculties` ON specializations.FacultyID = faculties.ID WHERE students.AccountID = UserID; ELSE SELECT teachers.ID AS 'TeacherID', - teachers.LastName, - teachers.FirstName, - teachers.SecondName, - degrees.Name AS 'Degree', - departments.ID AS 'DepartmentID', - departments.Name AS 'DepartmentName', + teachers.LastName AS 'Last', + teachers.FirstName AS 'First', + teachers.SecondName AS 'Second', + degrees.Name AS 'DegreeName', + departments.ID AS 'DepID', + departments.Name AS 'DepName', faculties.ID AS 'FacultyID', faculties.Name AS 'FacultyName', - faculties.Abbr AS 'FacultyAbbreviation' + faculties.Abbr AS 'FacultyAbbr' FROM `teachers` INNER JOIN `departments` ON departments.ID = teachers.DepartmentID INNER JOIN `faculties` ON departments.FacultyID = faculties.ID @@ -207,66 +452,83 @@ END // -- Desc: Активация аккаунта (внесение данных изменений РІ поля Login, E-Mail, Password + обнуление activation_code Рё снятие флага isActivated). РљСЂРѕРјРµ того, также установка AccountType РІ зависимости РѕС‚ связанной СЃ РЅРёРј информации. -DROP FUNCTION IF EXISTS ActivateAccount; // -CREATE FUNCTION `ActivateAccount`(`Code` VARCHAR(40) CHARSET utf8, `Login` VARCHAR(50) CHARSET utf8, `Mail` VARCHAR(32) CHARSET utf8, `Password` VARCHAR(255) CHARSET utf8) RETURNS int(11) +DROP FUNCTION IF EXISTS ActivateAccount// +CREATE FUNCTION `ActivateAccount` ( `Code` VARCHAR(40) CHARSET utf8, + `Login` VARCHAR(50) CHARSET utf8, + `Mail` VARCHAR(32) CHARSET utf8, + `Password` VARCHAR(255) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN - DECLARE checker INT; - DECLARE UserID INT; - SELECT COUNT(accounts.ID) INTO checker FROM accounts WHERE accounts.ActivationCode = Code; - IF ( Password IS NULL ) THEN + DECLARE checker, UserID INT; + + SELECT COUNT(accounts.ID) + INTO checker + FROM accounts + WHERE accounts.ActivationCode = Code; + IF checker != 1 THEN + RETURN -1; + END IF; + + IF Password IS NULL THEN return -2; END IF; - IF checker = 1 THEN - SELECT accounts.ID - INTO UserID - FROM `accounts` - WHERE accounts.ActivationCode = Code; - - UPDATE `accounts` - SET accounts.Login = Login , - accounts.Password = Password , - accounts.`E-Mail` = Mail , - accounts.ActivationCode = NULL - WHERE accounts.ID = UserID ; - - RETURN UserID; - ELSE - RETURN -1; - END IF; + SELECT accounts.ID + INTO UserID + FROM `accounts` + WHERE accounts.ActivationCode = Code; + + UPDATE `accounts` + SET accounts.Login = Login , + accounts.Password = Password , + accounts.EMail = Mail , + accounts.ActivationCode = NULL + WHERE accounts.ID = UserID ; + + RETURN UserID; + END // -- Desc: - Рзменение пароля для данной учетной записи -DROP FUNCTION IF EXISTS ChangePassword; // -CREATE FUNCTION `ChangePassword`(`UserID` INT, `Password` VARCHAR(255) CHARSET utf8) RETURNS int(11) +DROP FUNCTION IF EXISTS ChangePassword// +CREATE FUNCTION `ChangePassword` ( `UserID` INT, + `Password` VARCHAR(255) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; - SET checker = ( SELECT COUNT(accounts.ID) FROM accounts WHERE accounts.ID = UserID ); - - IF checker = 1 THEN - UPDATE accounts - SET accounts.Password = Password - WHERE ID = UserID; - - RETURN 0; - ELSE - RETURN -1; - END IF; + + SELECT COUNT(accounts.ID) + INTO checker + FROM `accounts` + WHERE accounts.ID = UserID; + IF checker != 1 THEN + RETURN -1; + END IF; + + UPDATE `accounts` + SET accounts.Password = Password + WHERE accounts.ID = UserID; + END // -- Desc: - Рзменение логина для данной учетной записи -DROP FUNCTION IF EXISTS ChangeLogin; // -CREATE FUNCTION `ChangeLogin`(`UserID` INT, `Login` VARCHAR(50) CHARSET utf8) RETURNS int(11) +DROP FUNCTION IF EXISTS ChangeLogin// +CREATE FUNCTION `ChangeLogin` ( `UserID` INT, + `Login` VARCHAR(50) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; - SET checker = ( SELECT COUNT(accounts.ID) FROM accounts WHERE accounts.ID = UserID ); + SELECT COUNT(accounts.ID) + INTO checker + FROM `accounts` + WHERE accounts.ID = UserID; IF checker != 1 THEN RETURN -1; END IF; @@ -274,28 +536,34 @@ BEGIN SET checker = -1; SELECT accounts.ID INTO checker - FROM accounts + FROM `accounts` WHERE accounts.Login = Login LIMIT 1; IF checker > 0 THEN RETURN -1; END IF; - UPDATE accounts + UPDATE `accounts` SET accounts.Login = Login - WHERE ID = UserID; + WHERE accounts.ID = UserID; RETURN 0; END // -- Desc: - Рзменение e-mail для данной учетной записи -DROP FUNCTION IF EXISTS ChangeMail; // -CREATE FUNCTION `ChangeMail`(`UserID` INT, `mailN` VARCHAR(32) CHARSET utf8) RETURNS int(11) +DROP FUNCTION IF EXISTS ChangeMail// +CREATE FUNCTION `ChangeMail` ( `UserID` INT, + `EMail` VARCHAR(32) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; - SET checker = ( SELECT COUNT(accounts.ID) FROM accounts WHERE accounts.ID = UserID ); + + SELECT COUNT(accounts.ID) + INTO checker + FROM `accounts` + WHERE accounts.ID = UserID; IF checker != 1 THEN RETURN -1; END IF; @@ -304,7 +572,7 @@ BEGIN SELECT accounts.ID INTO checker FROM accounts - WHERE accounts.`E-Mail` = mailN + WHERE accounts.EMail = EMail LIMIT 1; IF checker > 0 THEN RETURN -1; @@ -312,7 +580,7 @@ BEGIN UPDATE accounts - SET accounts.`E-Mail` = mailN + SET accounts.EMail = EMail WHERE ID = UserID; RETURN 0; @@ -321,12 +589,49 @@ END // +DROP FUNCTION IF EXISTS SignIn// +CREATE FUNCTION `SignIn`( `Login` VARCHAR(255) CHARSET utf8, + `Password` VARCHAR(64) CHARSET utf8 + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE curID INT; + SELECT accounts.ID + INTO curID + FROM `accounts` + WHERE accounts.Password = Password AND + ( accounts.Login = Login OR + accounts.EMail = Login ) + + LIMIT 1; + + IF curID > 0 THEN + RETURN curID; + ELSE + RETURN -1; + END IF; + +END // + + + + + + + + + + + +-- ------------------------------------------------------------------------------------------- +-- ====== Common fillers ========= +-- ------------------------------------------------------------------------------------------- -- Desc: Добавление РЅРѕРІРѕРіРѕ студента -DROP FUNCTION IF EXISTS CreateStudent; // +DROP FUNCTION IF EXISTS CreateStudent// CREATE FUNCTION `CreateStudent`( `Last` VARCHAR(30) CHARSET utf8, `First` VARCHAR(30) CHARSET utf8, `Second` VARCHAR(30) CHARSET utf8, @@ -334,151 +639,162 @@ CREATE FUNCTION `CreateStudent`( `Last` VARCHAR(30) CHARSET utf8, `GroupN` INT, `FacultyID` INT, `Code` VARCHAR(40) CHARSET utf8 - ) RETURNS int(11) + ) RETURNS int(11) NO SQL BEGIN - DECLARE curID, StudyGroupID INT; - SET StudyGroupID = -1; + DECLARE curID, StudyGroupID, RoleID INT; + SELECT user_roles.ID + INTO RoleID + FROM `user_roles` + WHERE user_roles.Type = 'student' AND + user_roles.Role = 'common' + LIMIT 1; + IF NOT (RoleID > 0) THEN + RETURN -1; + END IF; + SELECT study_groups.ID INTO StudyGroupID FROM `study_groups` - WHERE (study_groups.Grade = Grade ) AND - ( study_groups.GroupNum = GroupN ) AND - ( study_groups.FacultyID = FacultyID ) + WHERE study_groups.Grade = Grade AND + study_groups.GroupNum = GroupN AND + study_groups.FacultyID = FacultyID LIMIT 1; + IF NOT (StudyGroupID > 0) THEN + RETURN -1; + END IF; - IF ( (StudyGroupID > -1) AND ( Code IS NOT NULL ) ) THEN - INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.`E-Mail`, accounts.Type, accounts.ActivationCode ) - VALUES ( NULL, NULL, NULL, 'student', Code); + INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.EMail, accounts.UserRoleID, accounts.ActivationCode ) + VALUES ( NULL, NULL, NULL, RoleID, Code); - SELECT accounts.ID - INTO curID - FROM `accounts` - WHERE accounts.ActivationCode = Code; - - INSERT INTO `students` (students.StudyGroupID, students.AccountID, students.LastName, students.FirstName, students.SecondName) - VALUES (StudyGroupID, curID, Last, First, Second); - - RETURN 0; - + SELECT accounts.ID + INTO curID + FROM `accounts` + WHERE accounts.ActivationCode = Code; + + INSERT INTO `students` (students.StudyGroupID, students.AccountID, students.LastName, students.FirstName, students.SecondName) + VALUES (StudyGroupID, curID, Last, First, Second); + RETURN 0; - END IF; - RETURN -1; END // -DROP FUNCTION IF EXISTS CreateTeacher; // -CREATE FUNCTION `CreateTeacher`( `Last` VARCHAR(30) CHARSET utf8, - `First` VARCHAR(30) CHARSET utf8, - `Second` VARCHAR(30) CHARSET utf8, +DROP FUNCTION IF EXISTS CreateTeacher// +CREATE FUNCTION `CreateTeacher`( `Last` VARCHAR(30) CHARSET utf8, + `First` VARCHAR(30) CHARSET utf8, + `Second` VARCHAR(30) CHARSET utf8, `DegreeID` INT, `DepartmentID` INT, - `Code` VARCHAR(40) CHARSET utf8 - ) RETURNS int(11) + `Code` VARCHAR(40) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN - DECLARE curID, StudyGroupID, checker INT; + DECLARE curID, checker, RoleID INT; + + SELECT user_roles.ID + INTO RoleID + FROM `user_roles` + WHERE user_roles.Type = 'teachers' AND + user_roles.Role = 'common' + LIMIT 1; + IF NOT (RoleID > 0) THEN + RETURN -1; + END IF; SELECT departments.ID INTO checker FROM `departments` WHERE departments.ID = DepartmentID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN + IF NOT (checker > 0) THEN RETURN -1; END IF; + SET checker = -1; SELECT degrees.ID INTO checker FROM `degrees` WHERE degrees.ID = DegreeID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN + IF NOT (checker > 0) THEN RETURN -1; END IF; - IF Code IS NOT NULL THEN + IF Code IS NULL THEN + RETURN -1; + END IF; - INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.`E-Mail`, accounts.Type, accounts.ActivationCode ) - VALUES ( NULL, NULL, NULL, 'teacher', Code); - - SELECT accounts.ID INTO curID - FROM `accounts` - WHERE accounts.ActivationCode = Code; - - INSERT INTO `teachers` ( teachers.AccountID, - teachers.LastName, - teachers.FirstName, - teachers.SecondName, - teachers.DegreeID, - teachers.DepartmentID) - VALUES (curID, Last, First, Second, DegreeID, DepartmentID); - RETURN 0; + INSERT INTO `accounts` ( accounts.Login , accounts.Password , accounts.EMail, accounts.UserRoleID, accounts.ActivationCode ) + VALUES ( NULL, NULL, NULL, RoleID, Code); + + SELECT accounts.ID INTO curID + FROM `accounts` + WHERE accounts.ActivationCode = Code; + + INSERT INTO `teachers` ( teachers.AccountID, + teachers.LastName, + teachers.FirstName, + teachers.SecondName, + teachers.DegreeID, + teachers.DepartmentID) + VALUES (curID, Last, First, Second, DegreeID, DepartmentID); + + RETURN 0; - END IF; - RETURN -1; END // -DROP FUNCTION IF EXISTS SignIn; // -CREATE FUNCTION `SignIn`( `Login` VARCHAR(255) CHARSET utf8, - `Password` VARCHAR(64) CHARSET utf8 - ) RETURNS int(11) - NO SQL -BEGIN - DECLARE curID INT; - SELECT accounts.ID - INTO curID - FROM `accounts` - WHERE (accounts.Login = Login OR accounts.`E-Mail` = Login) AND - accounts.Password = Password - LIMIT 1; - IF curID > 0 THEN - RETURN curID; - ELSE - RETURN -1; - END IF; -END // --- ======Студенты========= -DROP FUNCTION IF EXISTS GetRateForDisc; // -CREATE FUNCTION `GetRateForDisc`(`StudentID` INT, `DisciplineID` INT) RETURNS int(11) + + + +-- ------------------------------------------------------------------------------------------- +-- ======Студенты========= +-- ------------------------------------------------------------------------------------------- + + +DROP FUNCTION IF EXISTS GetRateForDisc// +CREATE FUNCTION `GetRateForDisc` ( `StudentID` INT, + `DisciplineID` INT + ) RETURNS int(11) NO SQL BEGIN RETURN ( SELECT SUM(rating_table.Rate) - FROM `modules` - CROSS JOIN `submodules` ON submodules.ModuleID = modules.ID - CROSS JOIN `rating_table` ON rating_table.StudentID = StudentID AND - rating_table.SubmoduleID = submodules.ID - WHERE modules.DisciplineID = DisciplineID + FROM `rating_table` + INNER JOIN `submodules` ON rating_table.SubmoduleID = submodules.ID + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + WHERE rating_table.StudentID = StudentID AND + modules.DisciplineID = DisciplineID ); END // -DROP FUNCTION IF EXISTS GetMaxRateForDisc; // -CREATE FUNCTION `GetMaxRateForDisc`(`StudentID` INT, `DisciplineID` INT) RETURNS int(11) +DROP FUNCTION IF EXISTS GetMaxRateForDisc// +CREATE FUNCTION `GetMaxRateForDisc` ( `StudentID` INT, + `DisciplineID` INT + ) RETURNS int(11) NO SQL BEGIN - RETURN ( SELECT SUM(submodules.MaxRate) - FROM `modules` - CROSS JOIN `submodules` ON submodules.ModuleID = modules.ID - CROSS JOIN `rating_table` ON rating_table.StudentID = StudentID AND - rating_table.SubmoduleID = submodules.ID - WHERE modules.DisciplineID = DisciplineID + RETURN ( SELECT SUM(rating_table.MaxRate) + FROM `rating_table` + INNER JOIN `submodules` ON rating_table.SubmoduleID = submodules.ID + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + WHERE rating_table.StudentID = StudentID AND + modules.DisciplineID = DisciplineID ); END // @@ -486,7 +802,7 @@ END // -- Desc: Р’СЃРµ РєСѓСЂСЃС‹, РЅР° которые подписан данный студент + преподаватель РєСѓСЂСЃР° + тип контроля (экзамен/зачет) + баллы + максимальное количество баллов РЅР° данный момент (IN: StudentID). -DROP PROCEDURE IF EXISTS GetDisciplinesForStudent; // +DROP PROCEDURE IF EXISTS GetDisciplinesForStudent// CREATE PROCEDURE `GetDisciplinesForStudent`(IN `StudentID` INT) NO SQL BEGIN @@ -494,49 +810,49 @@ BEGIN SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; SET semID = GetCurSemesterID(); - SELECT DISTINCT disciplines.ID AS 'DisciplineID', - subjects.ID AS 'SubjectID', - subjects.Name AS 'SubjectName', + SELECT DISTINCT disciplines.ID AS 'DisciplineID', + subjects.ID AS 'SubjectID', + subjects.Name AS 'SubjectName', disciplines.ExamType, + teachers.LastName AS 'TeacherLast', + teachers.FirstName AS 'TeacherFirst', + teachers.SecondName AS 'TeacherSecond', GetRateForDisc(StudentID, `disciplines`.`ID` ) AS 'Rate', GetMaxRateForDisc(StudentID, `disciplines`.`ID` ) AS 'MaxCurrentRate' FROM `disciplines` - INNER JOIN `subjects` ON disciplines.SubjectID = subjects.ID - CROSS JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID - CROSS JOIN `lessons` ON lessons.DisciplineTeacherID = disciplines_teachers.ID - INNER JOIN `attending_groups` ON attending_groups.ID = lessons.AttendingGroupID AND - attending_groups.SemesterID = semID - LEFT JOIN `attending_groups_bases` ON attending_groups_bases.AttendingGroupID = attending_groups.ID AND - attending_groups_bases.StudyGroupID = groupID - LEFT JOIN `attending_groups_pool` ON attending_groups_pool.AttendingGroupID = attending_groups.ID AND - attending_groups_pool.StudentID = StudentID + INNER JOIN `subjects` ON disciplines.SubjectID = subjects.ID + INNER JOIN `teachers` ON disciplines.AuthorID = teachers.ID + LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID AND + disciplines_groups.StudyGroupID = groupID + LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID AND + disciplines_students.StudentID = StudentID WHERE disciplines.SemesterID = semID AND - attending_groups.SemesterID = semID AND - ( attending_groups_pool.Type = 'attach' OR - ( (attending_groups_pool.Type is NULL OR attending_groups_pool.Type != 'detach') AND - attending_groups_bases.StudyGroupID IS NOT NULL AND - attending_groups_bases.StudyGroupID = groupID + ( disciplines_students.Type = 'attach' OR + ( disciplines_students.Type != 'detach' AND + disciplines_groups.StudyGroupID = groupID ) ) - ORDER BY disciplines.ExamType ASC, Rate DESC; + ORDER BY disciplines.ExamType ASC, Rate DESC; END // -- Decs: Полная информация РїРѕ модулям/подмодулям для данного студента РїРѕ данному РєСѓСЂСЃСѓ (заголовки модулей, максимальное количество баллов Р·Р° подмодуль) -DROP PROCEDURE IF EXISTS GetSubjectMapForStudent; // -CREATE PROCEDURE `GetSubjectMapForStudent`(IN `StudentID` INT, IN `SubjectID` INT) +DROP PROCEDURE IF EXISTS GetMapForStudent// +CREATE PROCEDURE `GetMapForStudent` ( IN `StudentID` INT, + IN `SubjectID` INT + ) BEGIN DECLARE groupID, semID INT; SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; SET semID = GetCurSemesterID(); - SELECT modules.ID AS 'ModuleID', - modules.Name AS 'ModuleName', - submodules.ID AS 'SubmoduleID', - submodules.Name AS 'SubModuleName', - submodules.Description AS 'SubmoduleDescription', - submodules.MaxRate, + SELECT modules.ID AS 'ModuleID', + modules.Name AS 'ModuleName', + submodules.ID AS 'SubmoduleID', + submodules.Name AS 'SubModuleName', + submodules.Description AS 'SubmoduleDescription', + submodules.MaxRate, submodules.Type AS 'SubmoduleControl', rating_table.Rate, rating_table.Date @@ -544,23 +860,17 @@ BEGIN INNER JOIN `modules` ON submodules.ModuleID = modules.ID LEFT JOIN `rating_table` ON submodules.ID = rating_table.SubModuleID AND rating_table.StudentID = StudentID WHERE modules.DisciplineID IN - ( SELECT DISTINCT disciplines.ID - FROM `disciplines` - CROSS JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID - CROSS JOIN `lessons` ON lessons.DisciplineTeacherID = disciplines_teachers.ID - INNER JOIN `attending_groups` ON attending_groups.ID = lessons.AttendingGroupID AND - attending_groups.SemesterID = semID - LEFT JOIN `attending_groups_bases` ON attending_groups_bases.AttendingGroupID = attending_groups.ID AND - attending_groups_bases.StudyGroupID = groupID - LEFT JOIN `attending_groups_pool` ON attending_groups_pool.AttendingGroupID = attending_groups.ID AND - attending_groups_pool.StudentID = StudentID - WHERE disciplines.SubjectID = SubjectID AND - disciplines.SemesterID = semID AND - attending_groups.SemesterID = semID AND - ( attending_groups_pool.Type = 'attach' OR - ( (attending_groups_pool.Type is NULL OR attending_groups_pool.Type != 'detach') AND - attending_groups_bases.StudyGroupID IS NOT NULL AND - attending_groups_bases.StudyGroupID = groupID + ( SELECT DISTINCT disciplines.ID + FROM `disciplines_teachers` + INNER JOIN `disciplines` ON disciplines_teachers.DisciplineID = disciplines.ID + LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID AND + disciplines_groups.StudyGroupID = groupID + LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID AND + disciplines_students.StudentID = StudentID + WHERE disciplines.SemesterID = semID AND + ( disciplines_students.Type = 'attach' OR + ( disciplines_students.Type != 'detach' AND + disciplines_groups.StudyGroupID = groupID ) ) ) @@ -568,11 +878,27 @@ BEGIN END // --- ======= Преподаватели ======= -DROP PROCEDURE IF EXISTS GetDisciplineInfoByID; // + + + + + + + + + + + + +-- ------------------------------------------------------------------------------------------- +-- ======= Преподаватели ======= +-- ------------------------------------------------------------------------------------------- + + +DROP PROCEDURE IF EXISTS GetDisciplineInfoByID// CREATE PROCEDURE `GetDisciplineInfoByID`(IN `DiscID` INT) NO SQL BEGIN @@ -580,7 +906,6 @@ BEGIN SELECT disciplines.AuthorID, disciplines.Grade AS 'DisciplineGrade', disciplines.ExamType, - disciplines.Type AS 'LessonType', disciplines.LectionCount, disciplines.PracticeCount, disciplines.SemesterID, @@ -595,15 +920,15 @@ BEGIN END // -DROP PROCEDURE IF EXISTS GetTeachersForDiscipline; // +DROP PROCEDURE IF EXISTS GetTeachersForDiscipline// CREATE PROCEDURE `GetTeachersForDiscipline`(IN `DiscID` INT) NO SQL BEGIN SELECT teachers.ID AS 'TeacherID', - teachers.LastName, - teachers.FirstName, - teachers.SecondName, + teachers.LastName AS 'TeacherLast', + teachers.FirstName AS 'TeacherFirst', + teachers.SecondName AS 'TeacherSecond', degrees.ID AS 'DegreeID', degrees.Name AS 'Degree', departments.ID AS 'DepartmentID', @@ -624,11 +949,11 @@ END // -- Desc: Вывод всех РєСѓСЂСЃРѕРІ (ID РєСѓСЂСЃР°, название РєСѓСЂСЃР°, базовая студ.РіСЂСѓРїРїР°-слушатель), которые ведет преподаватель -DROP PROCEDURE IF EXISTS GetDisciplinesForTeacher; // +DROP PROCEDURE IF EXISTS GetDisciplinesForTeacher// CREATE PROCEDURE `GetDisciplinesForTeacher`(IN `TeacherID` INT) NO SQL BEGIN - DECLARE groupID, semID INT; + DECLARE semID INT; SET semID = GetCurSemesterID(); SELECT DISTINCT disciplines.ID AS 'DisciplineID', @@ -640,48 +965,16 @@ BEGIN study_groups.GroupNum AS 'StudyGroupNum', study_groups.Grade AS 'StudyGroupGrade', study_groups.Name AS 'StudyGroupName' - FROM `disciplines_teachers` - INNER JOIN `disciplines` ON disciplines.ID = disciplines_teachers.DisciplineID - INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID - CROSS JOIN `lessons` ON lessons.DisciplineTeacherID = disciplines_teachers.ID - INNER JOIN `attending_groups` ON attending_groups.ID = lessons.AttendingGroupID - CROSS JOIN `attending_groups_bases` ON attending_groups_bases.AttendingGroupID = attending_groups.ID - INNER JOIN `study_groups` ON study_groups.ID = attending_groups_bases.StudyGroupID - WHERE disciplines_teachers.TeacherID = TeacherID AND - disciplines.SemesterID = semID -ORDER BY subjects.ID ASC, - disciplines.ID ASC, - study_groups.Grade ASC, - study_groups.GroupNum ASC; -END // - - - --- Desc: Вывод всех РЈРљР” (ID РЈРљР” [СЏ же надеюсь, что Сѓ нас РЈРљР” хранятся РІ РІРёРґРµ конкретных осязаемых сущностей?], которые неявно прикреплены Рє преподавателю -DROP PROCEDURE IF EXISTS GetMapsForTeacher; // -CREATE PROCEDURE `GetMapsForTeacher`(IN `TeacherID` INT) - NO SQL -BEGIN - DECLARE semID INT; - SET semID = GetCurSemesterID(); - - SELECT subjects.ID AS 'SubjectID', - subjects.Name AS 'SubjectName', - modules.ID AS 'ModuleID', - modules.Name AS 'ModuleName', - submodules.ID AS 'SubmoduleID', - submodules.Name AS 'SubModuleName', - submodules.Description AS 'SubmoduleDescription', - submodules.MaxRate AS 'MaxRate', - submodules.Type AS 'SubmoduleControl' - FROM `disciplines_teachers` - INNER JOIN `disciplines` ON disciplines_teachers.DisciplineID = disciplines.ID - INNER JOIN `subjects` ON disciplines.SubjectID = subjects.ID - CROSS JOIN `modules` ON modules.DisciplineID = disciplines.ID - CROSS JOIN `submodules` ON submodules.ModuleID = modules.ID - WHERE disciplines_teachers.TeacherID = TeacherID AND disciplines.SemesterID = semID - ORDER BY modules.OrderNum ASC, - submodules.OrderNum ASC; + FROM `disciplines_groups` + INNER JOIN `disciplines` ON disciplines_groups.DisciplineID = disciplines.ID + INNER JOIN `disciplines_teachers` ON disciplines.ID = disciplines_teachers.DisciplineID AND + disciplines.TeacherID = TeacherID + INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID + INNER JOIN `study_groups` ON study_groups.ID = disciplines_groups.StudyGroupID + WHERE disciplines.SemesterID = semID + ORDER BY disciplines.Grade ASC, + subjects.Name ASC, + study_groups.GroupNum ASC; END // @@ -689,39 +982,10 @@ END // - - -DROP FUNCTION IF EXISTS InternalOccurrenceChecker ; // -CREATE FUNCTION `InternalOccurrenceChecker` ( `StudentID` INT, - `AG_ID` INT ) - RETURNS int(11) - NO SQL -BEGIN - - DECLARE mID INT; - SET mID = 0; - SELECT students.ID - INTO mID - FROM `students` - INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID - LEFT JOIN `attending_groups_bases` ON attending_groups_bases.AttendingGroupID = AG_ID AND attending_groups_bases.StudyGroupID = study_groups.ID - LEFT JOIN `attending_groups_pool` ON attending_groups_pool.AttendingGroupID = AG_ID AND attending_groups_pool.StudentID = StudentID - WHERE students.ID = StudentID AND - (( attending_groups_pool.Type IS NOT NULL AND attending_groups_pool.Type = 'attach') OR - ( (attending_groups_pool.Type IS NULL OR attending_groups_pool.Type != 'detach') AND attending_groups_bases.ID is NOT NULL) - ) - LIMIT 1; - - RETURN (mID>0); - -END // - - - --- Вывод всех студентов, которые слушают данный РєСѓСЂСЃ данного преподавателя -DROP PROCEDURE IF EXISTS GetStudentsForDiscipline; // -CREATE PROCEDURE `GetStudentsForDiscipline`(IN `TeacherID` INT, - IN `DisciplineID` INT ) +DROP PROCEDURE IF EXISTS GetStudentsForDiscipline// +CREATE PROCEDURE `GetStudentsForDiscipline` ( IN `TeacherID` INT, + IN `DisciplineID` INT + ) NO SQL BEGIN DECLARE checker INT; @@ -734,28 +998,24 @@ BEGIN LIMIT 1; IF checker > 0 THEN + SELECT DISTINCT students.ID AS 'StudentID', students.LastName, students.FirstName, students.SecondName, study_groups.Grade, study_groups.GroupNum, - (attending_groups_pool.StudentID IS NOT NULL) AS 'isAttached' - - FROM `disciplines_teachers` - INNER JOIN `disciplines` ON disciplines.ID = disciplines_teachers.DisciplineID - CROSS JOIN `lessons` ON lessons.DisciplineTeacherID = disciplines_teachers.ID - INNER JOIN `attending_groups` ON attending_groups.ID = lessons.AttendingGroupID - CROSS JOIN `students` ON InternalOccurrenceChecker(students.ID, attending_groups.ID) = TRUE - LEFT JOIN `attending_groups_pool` ON attending_groups_pool.AttendingGroupID = attending_groups.ID AND attending_groups_pool.StudentID = students.ID - INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID - WHERE disciplines_teachers.TeacherID = TeacherID AND - disciplines_teachers.DisciplineID = DisciplineID - ORDER BY study_groups.Grade ASC, - study_groups.GroupNum ASC, - students.LastName ASC, - students.FirstName ASC, - students.SecondName ASC; + (disciplines_students.StudentID IS NOT NULL) AS 'isAttached' + FROM `students` + INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID + LEFT JOIN `disciplines_groups` ON DisciplineID = disciplines_groups.DisciplineID AND + study_groups.ID = disciplines_groups.StudyGroupID + LEFT JOIN `disciplines_students` ON DisciplineID = disciplines_students.DisciplineID AND + students.ID = disciplines_students.StudentID + WHERE disciplines_students.Type = 'attach' OR + ( disciplines_students.Type != 'detach' AND + disciplines_groups.StudyGroupID IS NOT NULL + ); ELSE SELECT NULL AS 'StudentID', NULL AS 'LastName', @@ -771,11 +1031,11 @@ END // - -- Вывод всех модулей/подмодулей для данного РєСѓСЂСЃР° данного преподавателя -DROP PROCEDURE IF EXISTS GetMapForDiscipline; // -CREATE PROCEDURE `GetMapForDiscipline`( IN `TeacherID` INT, - IN `DisciplineID` INT ) +DROP PROCEDURE IF EXISTS GetMapForDiscipline// +CREATE PROCEDURE `GetMapForDiscipline` ( IN `TeacherID` INT, + IN `DisciplineID` INT + ) NO SQL BEGIN DECLARE checker INT; @@ -797,11 +1057,10 @@ BEGIN submodules.Description AS 'SubmoduleDescription', submodules.MaxRate, submodules.Type AS 'SubmoduleControl' - FROM `disciplines` + FROM `modules` + RIGHT JOIN `submodules` ON modules.ID = submodules.ModuleID + INNER JOIN `disciplines` ON modules.DisciplineID = disciplines.ID INNER JOIN `subjects` ON disciplines.SubjectID = subjects.ID - CROSS JOIN `modules` ON modules.DisciplineID = disciplines.ID - CROSS JOIN `submodules` ON submodules.ModuleID = modules.ID - WHERE disciplines.ID = DisciplineID ORDER BY modules.OrderNum ASC, submodules.OrderNum ASC; ELSE @@ -819,6 +1078,8 @@ END // + + -- Добавление баллов Рє данному студенту DROP FUNCTION IF EXISTS SetStudentRate; // CREATE FUNCTION `SetStudentRate`( `TeacherID` INT, @@ -843,7 +1104,8 @@ BEGIN SELECT disciplines.ID INTO checker FROM `disciplines` - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND + disciplines_teachers.TeacherID = TeacherID WHERE disciplines.ID = discID LIMIT 1; @@ -863,22 +1125,14 @@ BEGIN SELECT disciplines.ID INTO checker FROM `disciplines` - CROSS JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID - CROSS JOIN `lessons` ON lessons.DisciplineTeacherID = disciplines_teachers.ID - INNER JOIN `attending_groups` ON attending_groups.ID = lessons.AttendingGroupID AND - attending_groups.SemesterID = semID - LEFT JOIN `attending_groups_bases` ON attending_groups_bases.AttendingGroupID = attending_groups.ID AND - attending_groups_bases.StudyGroupID = groupID - LEFT JOIN `attending_groups_pool` ON attending_groups_pool.AttendingGroupID = attending_groups.ID AND - attending_groups_pool.StudentID = StudentID + LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID AND + disciplines_groups.StudyGroupID = groupID + LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID AND + disciplines_students.StudentID = StudentID WHERE disciplines.SubjectID = SubjectID AND disciplines.SemesterID = semID AND - attending_groups.SemesterID = semID AND - ( attending_groups_pool.Type = 'attach' OR - ( (attending_groups_pool.Type is NULL OR attending_groups_pool.Type != 'detach') AND - attending_groups_bases.StudyGroupID IS NOT NULL AND - attending_groups_bases.StudyGroupID = groupID - ) + ( disciplines_students.Type = 'attach' OR + (disciplines_students.Type != 'detach' AND disciplines_groups.StudyGroupID = groupID ) ) LIMIT 1; @@ -887,21 +1141,19 @@ BEGIN VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() ); RETURN 0; END IF; - RETURN -3; END IF; - RETURN checker; END IF; RETURN -1; END // -- Рзменение баллов для данного студента -DROP FUNCTION IF EXISTS ChangeStudentRate; // +DROP FUNCTION IF EXISTS ChangeStudentRate// CREATE FUNCTION `ChangeStudentRate` ( `TeacherID` INT, `StudentID` INT, `SubmoduleID` INT, - `Rate` INT ) - RETURNS int(11) + `Rate` INT + ) RETURNS int(11) NO SQL BEGIN DECLARE checker, discID, OldVal, accID, groupID, rateID, semID INT; @@ -940,22 +1192,14 @@ BEGIN SELECT disciplines.ID INTO checker FROM `disciplines` - CROSS JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID - CROSS JOIN `lessons` ON lessons.DisciplineTeacherID = disciplines_teachers.ID - INNER JOIN `attending_groups` ON attending_groups.ID = lessons.AttendingGroupID AND - attending_groups.SemesterID = semID - LEFT JOIN `attending_groups_bases` ON attending_groups_bases.AttendingGroupID = attending_groups.ID AND - attending_groups_bases.StudyGroupID = groupID - LEFT JOIN `attending_groups_pool` ON attending_groups_pool.AttendingGroupID = attending_groups.ID AND - attending_groups_pool.StudentID = StudentID + LEFT JOIN `disciplines_groups` ON disciplines_groups.DisciplineID = disciplines.ID AND + disciplines_groups.StudyGroupID = groupID + LEFT JOIN `disciplines_students` ON disciplines_students.DisciplineID = disciplines.ID AND + disciplines_students.StudentID = StudentID WHERE disciplines.SubjectID = SubjectID AND disciplines.SemesterID = semID AND - attending_groups.SemesterID = semID AND - ( attending_groups_pool.Type = 'attach' OR - ( (attending_groups_pool.Type is NULL OR attending_groups_pool.Type != 'detach') AND - attending_groups_bases.StudyGroupID IS NOT NULL AND - attending_groups_bases.StudyGroupID = groupID - ) + ( disciplines_students.Type = 'attach' OR + (disciplines_students.Type != 'detach' AND disciplines_groups.StudyGroupID = groupID ) ) LIMIT 1; @@ -993,16 +1237,43 @@ END // --- ====== РЈРљР” ============= -- -DROP FUNCTION IF EXISTS BindTeacher; // -CREATE FUNCTION `BindTeacher`( `BindingTeacher` INT, + + + + + + + + + +-- ------------------------------------------------------------------------------------------- +-- ====== disciplines ============= -- +-- ------------------------------------------------------------------------------------------- + + +DROP FUNCTION IF EXISTS BindTeacher// +CREATE FUNCTION `BindTeacher`( `AccessedTeacher` INT, + `BindingTeacher` INT, `DisciplineID` INT ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; + SELECT disciplines.ID + INTO checker + FROM `disciplines` + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND + disciplines_teachers.TeacherID = AccessedTeacher + WHERE disciplines.ID = discID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + + SET checker = -1; SELECT disciplines_teachers.ID INTO checker @@ -1023,30 +1294,82 @@ BEGIN END // +DROP FUNCTION IF EXISTS UnbindTeacher// +CREATE FUNCTION `UnbindTeacher` ( `AccessedTeacher` INT, + `BindingTeacher` INT, + `DisciplineID` INT + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SET checker = -1; + SELECT disciplines.ID + INTO checker + FROM `disciplines` + WHERE disciplines.ID = DisciplineID AND + disciplines.AuthorID = AccessedTeacher + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + DELETE FROM `disciplines_teachers` + WHERE disciplines_teachers.DisciplineID = DisciplineID AND + disciplines_teachers.TeacherID = BindingTeacher; + RETURN 0; + +END // + -DROP FUNCTION IF EXISTS AddDiscipline; // -CREATE FUNCTION `AddDiscipline`( `TeacherID` INT, +DROP FUNCTION IF EXISTS AddDiscipline// +CREATE FUNCTION `AddDiscipline` ( `TeacherID` INT, `Grade` INT, `SubjectID` INT, `ExamType` VARCHAR(30), `LectionCount` INT, - `PracticeCount` INT - ) - RETURNS int(11) + `PracticeCount` INT, + `DepartmentID` INT + ) RETURNS int(11) NO SQL BEGIN DECLARE semID, checker INT; SET semID = GetCurSemesterID(); + + IF NOT (Grade > 0) THEN + RETURN -1; + END IF; + + SELECT departments.ID + INTO checker + FROM `departments` + WHERE departments.ID = DepartmentID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + SELECT subjects.ID + INTO checker + FROM `subjects` + WHERE subjects.ID = SubjectID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + + INSERT INTO `disciplines` ( disciplines.AuthorID, disciplines.Grade, disciplines.SubjectID, disciplines.ExamType, disciplines.LectionCount, disciplines.PracticeCount, - disciplines.SemesterID ) - VALUES ( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID ); + disciplines.SemesterID, + disciplines.DepartmentID ) + VALUES ( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID, DepartmentID ); -- RETURN ( SELECT disciplines.ID -- FROM `disciplines` @@ -1071,16 +1394,15 @@ END // -DROP FUNCTION IF EXISTS ChangeDiscipline; // -CREATE FUNCTION `ChangeDiscipline`( `TeacherID` INT, - `DisciplineID` INT, - `ExamType` VARCHAR(30), - `LectionCount` INT, - `PracticeCount` INT, - `Grade` INT, - `SubjectID` INT - ) - RETURNS int(11) +DROP FUNCTION IF EXISTS ChangeDiscipline// +CREATE FUNCTION `ChangeDiscipline` ( `TeacherID` INT, + `DisciplineID` INT, + `ExamType` VARCHAR(30), + `LectionCount` INT, + `PracticeCount` INT, + `Grade` INT, + `SubjectID` INT + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; @@ -1090,8 +1412,7 @@ BEGIN FROM `disciplines_teachers` WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID = TeacherID LIMIT 1; - - IF checker IS NULL OR checker <=0 THEN + IF NOT (checker > 0) THEN RETURN -1; END IF; @@ -1121,212 +1442,224 @@ BEGIN END // - --- Внесение изменений РІ подмодуль (MaxRate, TItle, Description, Order Рё С‚.Рґ.), который неявно прикреплен Рє преподавателю -DROP FUNCTION IF EXISTS ChangeSubmodule; // -CREATE FUNCTION `ChangeSubmodule`( `TeacherID` INT, - `SubmoduleID` INT, - `MaxRate` INT, - `OrderNum` INT, - `Name` VARCHAR(50), - `Description` VARCHAR(200), - `ControlType` VARCHAR(30) - ) RETURNS int(11) +DROP FUNCTION IF EXISTS BindGroup// +CREATE FUNCTION `BindGroup` ( `TeacherID` INT, + `DisciplineID` INt, + `StudyGroupID` INT + ) RETURNS int(11) NO SQL -BEGIN +BEGIN DECLARE checker INT; - SELECT modules.ID + SELECT disciplines_teachers.ID INTO checker - FROM `submodules` - INNER JOIN `modules` ON submodules.ModuleID = modules.ID - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID - WHERE submodules.ID = SubmoduleID + FROM `disciplines_teachers` + WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID = TeacherID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN + IF NOT (checker > 0) THEN RETURN -1; END IF; SET checker = -1; - SELECT submodules.ID - INTO checker - FROM `submodules` - WHERE submodules.ModuleID = checker AND submodules.OrderNum = OrderNum + SELECT study_groups.ID + INTO checker + FROM `study_groups` + WHERE study_groups.ID = StudyGroupID LIMIT 1; - IF checker > 0 THEN + IF NOT (checker > 0) THEN RETURN -1; - END IF; - - UPDATE `submodules` - SET submodules.MaxRate = MaxRate, - submodules.OrderNum = OrderNum, - submodules.Name = Name, - submodules.Description = Description, - submodules.Type = ControlType - WHERE submodules.ID = SubmoduleID; - RETURN 0; -END // + END IF; -DROP FUNCTION IF EXISTS ChangeSubmoduleControlType; // -CREATE FUNCTION `ChangeSubmoduleControlType`( `TeacherID` INT, - `SubmoduleID` INT, - `ControlType` VARCHAR(30) - ) RETURNS int(11) - NO SQL -BEGIN - DECLARE checker INT; - - SELECT submodules.ID - INTO checker - FROM `submodules` - INNER JOIN `modules` ON submodules.ModuleID = modules.ID - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID - WHERE submodules.ID = SubmoduleID + SET checker = -1; + SELECT disciplines_groups.ID + INTO checker + FROM `disciplines_groups` + WHERE disciplines_groups.StudyGroupID = StudyGroupID AND + disciplines_groups.DisciplineID = DisciplineID LIMIT 1; - - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; + IF checker > 0 THEN + RETURN 0; END IF; - UPDATE `submodules` - SET submodules.Type = ControlType - WHERE submodules.ID = SubmoduleID; + INSERT INTO `disciplines_groups` ( disciplines_groups.DisciplineID, + disciplines_groups.StudyGroupID + ) + VALUES ( DisciplineID, StudyGroupID ); + RETURN 0; + END // -DROP FUNCTION IF EXISTS ChangeSubmoduleMaxRate; // -CREATE FUNCTION `ChangeSubmoduleMaxRate`( `TeacherID` INT, - `SubmoduleID` INT, - `MaxRate` INT - ) RETURNS int(11) + +DROP FUNCTION IF EXISTS BindStudent// +CREATE FUNCTION `BindStudent` ( `TeacherID` INT, + `DisciplineID` INt, + `StudentID` INT + ) RETURNS int(11) NO SQL -BEGIN - DECLARE checker INT; +BEGIN + DECLARE checker, SG, temp INT; - SELECT submodules.ID + SELECT students.StudyGroupID + INTO SG + FROM `students` + WHERE students.ID = StudentID + LIMIT 1; + + + SELECT disciplines_teachers.ID INTO checker - FROM `submodules` - INNER JOIN `modules` ON submodules.ModuleID = modules.ID - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID - WHERE submodules.ID = SubmoduleID + FROM `disciplines_teachers` + WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID = TeacherID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN + IF NOT (checker > 0) THEN RETURN -1; END IF; - UPDATE `submodules` - SET submodules.MaxRate = MaxRate - WHERE submodules.ID = SubmoduleID; + + SELECT disciplines_groups.ID + INTO temp + FROM `disciplines_groups` + WHERE disciplines_groups.DisciplineID = DisciplineID AND + disciplines_groups.StudyGroupID = SG + LIMIT 1; + + + IF temp > 0 THEN + DELETE FROM `disciplines_students` + WHERE disciplines_students.DisciplineID = DisciplineID AND + disciplines_students.StudentID = StudentID; + ELSE + INSERT INTO `disciplines_students` ( disciplines_students.DisciplineID, + disciplines_students.StudentID, + disciplines_students.Type + ) + VALUES ( DisciplineID, StudentID, 'attach'); + + END IF; RETURN 0; + END // -DROP FUNCTION IF EXISTS ChangeSubmoduleOrder; // -CREATE FUNCTION `ChangeSubmoduleOrder`( `TeacherID` INT, - `SubmoduleID` INT, - `OrderNum` INT - ) RETURNS int(11) + +DROP FUNCTION IF EXISTS UnbindGroup// +CREATE FUNCTION `UnbindGroup` ( `TeacherID` INT, + `DisciplineID` INt, + `StudyGroupID` INT + ) RETURNS int(11) NO SQL -BEGIN +BEGIN DECLARE checker INT; - SELECT modules.ID + SELECT disciplines_teachers.ID INTO checker - FROM `submodules` - INNER JOIN `modules` ON submodules.ModuleID = modules.ID - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID - WHERE submodules.ID = SubmoduleID + FROM `disciplines_teachers` + WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID = TeacherID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN + IF NOT (checker > 0) THEN RETURN -1; END IF; - SET checker = -1; - SELECT submodules.ID - INTO checker - FROM `submodules` - WHERE submodules.ModuleID = checker AND submodules.OrderNum = OrderNum + SELECT study_groups.ID + INTO checker + FROM `study_groups` + WHERE study_groups.ID = StudyGroupID LIMIT 1; - IF checker > 0 THEN + IF NOT (checker > 0) THEN RETURN -1; - END IF; + END IF; + DELETE FROM `disciplines_groups` + WHERE disciplines_groups.DisciplineID = DisciplineID AND + disciplines_groups.StudyGroupID = StudyGroupID; - UPDATE `submodules` - SET submodules.OrderNum = OrderNum - WHERE submodules.ID = SubmoduleID; RETURN 0; + END // -DROP FUNCTION IF EXISTS ChangeSubmoduleName; // -CREATE FUNCTION `ChangeSubmoduleName`( `TeacherID` INT, - `SubmoduleID` INT, - `Name` VARCHAR(50) - ) RETURNS int(11) + + +DROP FUNCTION IF EXISTS UnbindStudent// +CREATE FUNCTION `UnbindStudent` ( `TeacherID` INT, + `DisciplineID` INt, + `StudentID` INT + ) RETURNS int(11) NO SQL -BEGIN - DECLARE checker INT; +BEGIN + DECLARE checker, SG, temp INT; - SELECT submodules.ID + SELECT students.StudyGroupID + INTO SG + FROM `students` + WHERE students.ID = StudentID + LIMIT 1; + + + SELECT disciplines_teachers.ID INTO checker - FROM `submodules` - INNER JOIN `modules` ON submodules.ModuleID = modules.ID - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID - WHERE submodules.ID = SubmoduleID + FROM `disciplines_teachers` + WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID = TeacherID LIMIT 1; - - IF checker IS NULL OR checker <= 0 THEN + IF NOT (checker > 0) THEN RETURN -1; END IF; - UPDATE `submodules` - SET submodules.Name = Name - WHERE submodules.ID = SubmoduleID; + + SELECT disciplines_groups.ID + INTO temp + FROM `disciplines_groups` + WHERE disciplines_groups.DisciplineID = DisciplineID AND + disciplines_groups.StudyGroupID = SG + LIMIT 1; + + + IF temp > 0 THEN + INSERT INTO `disciplines_students` ( disciplines_students.DisciplineID, + disciplines_students.StudentID, + disciplines_students.Type + ) + VALUES ( DisciplineID, StudentID, 'detach'); + + ELSE + DELETE FROM `disciplines_students` + WHERE disciplines_students.DisciplineID = DisciplineID AND + disciplines_students.StudentID = StudentID; + + END IF; RETURN 0; + END // -DROP FUNCTION IF EXISTS ChangeSubmoduleDescription; // -CREATE FUNCTION `ChangeSubmoduleDescription`( `TeacherID` INT, - `SubmoduleID` INT, - `Description` VARCHAR(200) - ) RETURNS int(11) - NO SQL -BEGIN - DECLARE checker INT; - - SELECT submodules.ID - INTO checker - FROM `submodules` - INNER JOIN `modules` ON submodules.ModuleID = modules.ID - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID - WHERE submodules.ID = SubmoduleID - LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; - END IF; - UPDATE `submodules` - SET submodules.Description = Description - WHERE submodules.ID = SubmoduleID; - RETURN 0; -END // + + + + + + + + + + + +-- ------------------------------------------------------------------------------------------- +-- ====== Modules ============= -- +-- ------------------------------------------------------------------------------------------- + + -- Внесение изменений РІ модуль (Title, Order Рё С‚.Рґ.), который неявно прикреплен Рє преподавателю -DROP FUNCTION IF EXISTS ChangeModule; // -CREATE FUNCTION `ChangeModule`( `TeacherID` INT, - `ModuleID` INT, - `OrderNum` INT, - `Name` VARCHAR(50) ) RETURNS int(11) +DROP FUNCTION IF EXISTS ChangeModule// +CREATE FUNCTION `ChangeModule` ( `TeacherID` INT, + `ModuleID` INT, + `OrderNum` INT, + `Name` VARCHAR(50) + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; @@ -1338,8 +1671,8 @@ BEGIN INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID WHERE modules.ID = ModuleID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; + IF NOT (checker > 0) THEN + RETURN -1; END IF; SET checker = -1; @@ -1359,11 +1692,11 @@ BEGIN END // -DROP FUNCTION IF EXISTS ChangeModuleName; // -CREATE FUNCTION `ChangeModuleName`( `TeacherID` INT, - `ModuleID` INT, - `Name` VARCHAR(50) - ) RETURNS int(11) +DROP FUNCTION IF EXISTS ChangeModuleName// +CREATE FUNCTION `ChangeModuleName` ( `TeacherID` INT, + `ModuleID` INT, + `Name` VARCHAR(50) + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; @@ -1375,9 +1708,8 @@ BEGIN INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID WHERE modules.ID = ModuleID LIMIT 1; - - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; + IF NOT (checker > 0) THEN + RETURN -1; END IF; UPDATE `modules` @@ -1386,11 +1718,11 @@ BEGIN RETURN 0; END // -DROP FUNCTION IF EXISTS ChangeModuleOrder; // +DROP FUNCTION IF EXISTS ChangeModuleOrder// CREATE FUNCTION `ChangeModuleOrder` ( `TeacherID` INT, `ModuleID` INT, `OrderNum` INT - ) RETURNS int(11) + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; @@ -1402,8 +1734,8 @@ BEGIN INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID WHERE modules.ID = ModuleID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; + IF NOT (checker > 0) THEN + RETURN -1; END IF; SET checker = -1; @@ -1422,12 +1754,12 @@ BEGIN END // -- Добавление РЅРѕРІРѕРіРѕ модуля -DROP FUNCTION IF EXISTS AddModule; // -CREATE FUNCTION `AddModule`( `TeacherID` INT, +DROP FUNCTION IF EXISTS AddModule// +CREATE FUNCTION `AddModule` ( `TeacherID` INT, `DisciplineID` INT, `OrderNum` INT, - `Name` VARCHAR(50) ) - RETURNS int(11) + `Name` VARCHAR(50) + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; @@ -1438,8 +1770,8 @@ BEGIN INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND disciplines_teachers.DisciplineID = disciplines.ID WHERE disciplines.ID = DisciplineID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; + IF NOT (checker > 0) THEN + RETURN -1; END IF; SET checker = -1; @@ -1465,104 +1797,330 @@ BEGIN END // - -- Добавление РЅРѕРІРѕРіРѕ подмодуля Рє данному модулю -DROP FUNCTION IF EXISTS AddSubmodule; // -CREATE FUNCTION `AddSubmodule`( `TeacherID` INT, - `ModuleID` INT, - `MaxRate` INT, - `OrderNum` INT, - `Name` VARCHAR(50), - `Description` VARCHAR(200), - `ControlType` VARCHAR(30) - - ) RETURNS int(11) +DROP FUNCTION IF EXISTS DeleteModule// +CREATE FUNCTION `DeleteModule` ( `TeacherID` INT, + `ModuleID` INT + ) RETURNS int(11) NO SQL BEGIN - DECLARE checker INT; - - SELECT modules.ID + + DECLARE checker INT; + + SELECT disciplines.ID INTO checker FROM `modules` INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND disciplines_teachers.DisciplineID = disciplines.ID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND + disciplines_teachers.DisciplineID = disciplines.ID WHERE modules.ID = ModuleID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; + IF NOT (checker > 0) THEN + RETURN -1; END IF; + SET checker = -1; SELECT submodules.ID INTO checker FROM `submodules` - WHERE submodules.ModuleID = ModuleID AND submodules.OrderNum = OrderNum + WHERE submodules.ModuleID = ModuleID LIMIT 1; IF checker > 0 THEN RETURN -1; - END IF; + END IF; - INSERT INTO `submodules` ( submodules.ModuleID, submodules.MaxRate, submodules.OrderNum, submodules.Name, submodules.Description, submodules.Type ) - VALUES ( ModuleID, MaxRate, OrderNum, Name, Description, ControlType); - - RETURN ( SELECT submodules.ID - FROM `submodules` - WHERE submodules.ModuleID = ModuleID AND - submodules.OrderNum = OrderNum - ); + + DELETE FROM `modules` + WHERE modules.ID = ModuleID; + + + RETURN 0; END // --- Добавление РЅРѕРІРѕРіРѕ подмодуля Рє данному модулю -DROP FUNCTION IF EXISTS DeleteModule; // -CREATE FUNCTION `DeleteModule`( `TeacherID` INT, - `ModuleID` INT - ) RETURNS int(11) + +DROP FUNCTION IF EXISTS SwapModuleOrder// +CREATE FUNCTION `SwapModuleOrder` ( `TeacherID` INT, + `ModuleID1` INT, + `ModuleID2` INT + ) RETURNS int(11) NO SQL BEGIN + DECLARE checker, ord1, ord2, disc1, disc2 INT; + + SELECT COUNT(modules.ID) + INTO checker + FROM `modules` + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + WHERE modules.ID = ModuleID1 OR modules.ID = ModuleID2 + LIMIT 2; + IF checker != 2 THEN + RETURN -1; + END IF; - DECLARE checker INT; + SELECT modules.OrderNum, + modules.DisciplineID + INTO ord1, disc1 + FROM `modules` + WHERE modules.ID = ModuleID1 + LIMIT 1; - SELECT disciplines.ID - INTO checker + SELECT modules.OrderNum, + modules.DisciplineID + INTO ord2, disc2 FROM `modules` - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND - disciplines_teachers.DisciplineID = disciplines.ID - WHERE modules.ID = ModuleID + WHERE modules.ID = ModuleID2 LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN + + IF disc1 != disc2 THEN RETURN -1; END IF; + UPDATE `modules` + SET modules.OrderNum = 13666 + WHERE modules.ID = ModuleID1; + + UPDATE `modules` + SET modules.OrderNum = ord1 + WHERE modules.ID = ModuleID2; + + UPDATE `modules` + SET modules.OrderNum = ord2 + WHERE modules.ID = ModuleID1; + + RETURN 0; +END // + + + + + + + + + + + + + + + + + + + + + + +-- ------------------------------------------------------------------------------------------- +-- ====== Submodules ============= -- +-- ------------------------------------------------------------------------------------------- + + +-- Внесение изменений РІ подмодуль (MaxRate, TItle, Description, Order Рё С‚.Рґ.), который неявно прикреплен Рє преподавателю +DROP FUNCTION IF EXISTS ChangeSubmodule// +CREATE FUNCTION `ChangeSubmodule` ( `TeacherID` INT, + `SubmoduleID` INT, + `MaxRate` INT, + `OrderNum` INT, + `Name` VARCHAR(50), + `Description` VARCHAR(200), + `ControlType` VARCHAR(30) + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SELECT modules.ID + INTO checker + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + WHERE submodules.ID = SubmoduleID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; SET checker = -1; SELECT submodules.ID INTO checker FROM `submodules` - WHERE submodules.ModuleID = ModuleID + WHERE submodules.ModuleID = checker AND submodules.OrderNum = OrderNum LIMIT 1; IF checker > 0 THEN RETURN -1; + END IF; + + UPDATE `submodules` + SET submodules.MaxRate = MaxRate, + submodules.OrderNum = OrderNum, + submodules.Name = Name, + submodules.Description = Description, + submodules.Type = ControlType + WHERE submodules.ID = SubmoduleID; + RETURN 0; +END // + +DROP FUNCTION IF EXISTS ChangeSubmoduleControlType// +CREATE FUNCTION `ChangeSubmoduleControlType`( `TeacherID` INT, + `SubmoduleID` INT, + `ControlType` VARCHAR(30) + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SELECT submodules.ID + INTO checker + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + WHERE submodules.ID = SubmoduleID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; END IF; + UPDATE `submodules` + SET submodules.Type = ControlType + WHERE submodules.ID = SubmoduleID; + RETURN 0; +END // - DELETE FROM `modules` - WHERE modules.ID = ModuleID; +DROP FUNCTION IF EXISTS ChangeSubmoduleMaxRate// +CREATE FUNCTION `ChangeSubmoduleMaxRate` ( `TeacherID` INT, + `SubmoduleID` INT, + `MaxRate` INT + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SELECT submodules.ID + INTO checker + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + WHERE submodules.ID = SubmoduleID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + UPDATE `submodules` + SET submodules.MaxRate = MaxRate + WHERE submodules.ID = SubmoduleID; + RETURN 0; +END // + +DROP FUNCTION IF EXISTS ChangeSubmoduleOrder// +CREATE FUNCTION `ChangeSubmoduleOrder` ( `TeacherID` INT, + `SubmoduleID` INT, + `OrderNum` INT + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SELECT modules.ID + INTO checker + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + WHERE submodules.ID = SubmoduleID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + + SET checker = -1; + SELECT submodules.ID + INTO checker + FROM `submodules` + WHERE submodules.ModuleID = checker AND submodules.OrderNum = OrderNum + LIMIT 1; + IF checker > 0 THEN + RETURN -1; + END IF; + + + UPDATE `submodules` + SET submodules.OrderNum = OrderNum + WHERE submodules.ID = SubmoduleID; + RETURN 0; +END // + +DROP FUNCTION IF EXISTS ChangeSubmoduleName// +CREATE FUNCTION `ChangeSubmoduleName` ( `TeacherID` INT, + `SubmoduleID` INT, + `Name` VARCHAR(50) + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SELECT submodules.ID + INTO checker + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + WHERE submodules.ID = SubmoduleID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + UPDATE `submodules` + SET submodules.Name = Name + WHERE submodules.ID = SubmoduleID; + RETURN 0; +END // +DROP FUNCTION IF EXISTS ChangeSubmoduleDescription// +CREATE FUNCTION `ChangeSubmoduleDescription` ( `TeacherID` INT, + `SubmoduleID` INT, + `Description` VARCHAR(200) + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SELECT submodules.ID + INTO checker + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID + WHERE submodules.ID = SubmoduleID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + UPDATE `submodules` + SET submodules.Description = Description + WHERE submodules.ID = SubmoduleID; RETURN 0; END // --- Добавление РЅРѕРІРѕРіРѕ подмодуля Рє данному модулю -DROP FUNCTION IF EXISTS DeleteSubmodule; // -CREATE FUNCTION `DeleteSubmodule`( `TeacherID` INT, - `SubmoduleID` INT - ) RETURNS int(11) + +DROP FUNCTION IF EXISTS DeleteSubmodule// +CREATE FUNCTION `DeleteSubmodule` ( `TeacherID` INT, + `SubmoduleID` INT + ) RETURNS int(11) NO SQL BEGIN DECLARE checker INT; @@ -1575,8 +2133,8 @@ BEGIN INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND disciplines_teachers.DisciplineID = disciplines.ID WHERE submodules.ID = SubmoduleID LIMIT 1; - IF checker IS NULL OR checker <= 0 THEN - RETURN -1; + IF NOT (checker > 0) THEN + RETURN -1; END IF; @@ -1600,14 +2158,56 @@ BEGIN END // +DROP FUNCTION IF EXISTS AddSubmodule// +CREATE FUNCTION `AddSubmodule` ( `TeacherID` INT, + `ModuleID` INT, + `MaxRate` INT, + `OrderNum` INT, + `Name` VARCHAR(50), + `Description` VARCHAR(200), + `ControlType` VARCHAR(30) + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SELECT modules.ID + INTO checker + FROM `modules` + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND disciplines_teachers.DisciplineID = disciplines.ID + WHERE modules.ID = ModuleID + LIMIT 1; + IF NOT (checker > 0) THEN + RETURN -1; + END IF; + + SET checker = -1; + SELECT submodules.ID + INTO checker + FROM `submodules` + WHERE submodules.ModuleID = ModuleID AND submodules.OrderNum = OrderNum + LIMIT 1; + IF checker > 0 THEN + RETURN -1; + END IF; + + INSERT INTO `submodules` ( submodules.ModuleID, submodules.MaxRate, submodules.OrderNum, submodules.Name, submodules.Description, submodules.Type ) + VALUES ( ModuleID, MaxRate, OrderNum, Name, Description, ControlType); + + RETURN ( SELECT submodules.ID + FROM `submodules` + WHERE submodules.ModuleID = ModuleID AND + submodules.OrderNum = OrderNum + ); +END // -DROP FUNCTION IF EXISTS SwapSubmoduleOrder; // +DROP FUNCTION IF EXISTS SwapSubmoduleOrder// CREATE FUNCTION `SwapSubmoduleOrder`( `TeacherID` INT, `SubmoduleID1` INT, `SubmoduleID2` INT - ) RETURNS int(11) NO SQL BEGIN @@ -1659,113 +2259,69 @@ END // -DROP FUNCTION IF EXISTS SwapModuleOrder; // -CREATE FUNCTION `SwapModuleOrder` ( `TeacherID` INT, - `ModuleID1` INT, - `ModuleID2` INT - ) RETURNS int(11) - NO SQL -BEGIN - DECLARE checker, ord1, ord2, disc1, disc2 INT; - - SELECT COUNT(modules.ID) - INTO checker - FROM `modules` - INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID - WHERE modules.ID = ModuleID1 OR modules.ID = ModuleID2 - LIMIT 2; - IF checker != 2 THEN - RETURN -1; - END IF; - SELECT modules.OrderNum, - modules.DisciplineID - INTO ord1, disc1 - FROM `modules` - WHERE modules.ID = ModuleID1 - LIMIT 1; - SELECT modules.OrderNum, - modules.DisciplineID - INTO ord2, disc2 - FROM `modules` - WHERE modules.ID = ModuleID2 - LIMIT 1; - IF disc1 != disc2 THEN - RETURN -1; - END IF; - UPDATE `modules` - SET modules.OrderNum = 13666 - WHERE modules.ID = ModuleID1; - UPDATE `modules` - SET modules.OrderNum = ord1 - WHERE modules.ID = ModuleID2; - - UPDATE `modules` - SET modules.OrderNum = ord2 - WHERE modules.ID = ModuleID1; - - RETURN 0; -END // +-- ------------------------------------------------------------------------------------------- -- ====== Requests ======= -- - - -DROP PROCEDURE IF EXISTS GetLastRequests; // -CREATE PROCEDURE `GetLastRequests`( IN `CountN` INT ) - NO SQL -BEGIN - DECLARE offsetN, allNum, countClone INT; - SELECT COUNT(requests.ID) INTO allNum FROM `requests`; - SET countClone = CountN; - IF CountN = -1 THEN - SET countClone = allNum; - END IF; - - SET offsetN = allNum - CountN; - IF offsetN < 0 THEN - SET offsetN = 0; - END IF; - - SELECT requests.ID, - requests.AccountID, - requests.Information, - requests.Date, - requests.Status - FROM `requests` - WHERE requests.Status = 0 - LIMIT countClone OFFSET offsetN; - -END // - - -DROP PROCEDURE IF EXISTS GetFirstRequests ; // -CREATE PROCEDURE `GetFirstRequests`( IN `CountN` INT ) - NO SQL -BEGIN - DECLARE allNum, countClone INT; - SELECT COUNT(requests.ID) INTO allNum FROM `requests`; - SET countClone = CountN; - IF CountN = -1 THEN - SET countClone = allNum; - END IF; - - SELECT requests.ID, - requests.AccountID, - requests.Information, - requests.Date, - requests.Status - FROM `requests` - WHERE requests.Status = 0 - LIMIT countClone; - -END // - - - - +-- ------------------------------------------------------------------------------------------- + +-- DROP PROCEDURE IF EXISTS GetLastRequests// +-- CREATE PROCEDURE `GetLastRequests` ( IN `CountN` INT +-- ) +-- NO SQL +-- BEGIN +-- DECLARE offsetN, allNum, countClone INT; +-- SELECT COUNT(requests.ID) INTO allNum FROM `requests`; +-- SET countClone = CountN; +-- IF CountN = -1 THEN +-- SET countClone = allNum; +-- END IF; + +-- SET offsetN = allNum - CountN; +-- IF offsetN < 0 THEN +-- SET offsetN = 0; +-- END IF; + +-- SELECT requests.ID, +-- requests.AccountID, +-- requests.Information, +-- requests.Date, +-- requests.Status +-- FROM `requests` +-- WHERE requests.Status = 0 +-- LIMIT countClone OFFSET offsetN; + +-- END // + + +-- DROP PROCEDURE IF EXISTS GetFirstRequests// +-- CREATE PROCEDURE `GetFirstRequests` ( IN `CountN` INT +-- ) +-- NO SQL +-- BEGIN +-- DECLARE allNum, countClone INT; +-- SELECT COUNT(requests.ID) INTO allNum FROM `requests`; +-- SET countClone = CountN; +-- IF CountN = -1 THEN +-- SET countClone = allNum; +-- END IF; + +-- SELECT requests.ID, +-- requests.AccountID, +-- requests.Information, +-- requests.Date, +-- requests.Status +-- FROM `requests` +-- WHERE requests.Status = 0 +-- LIMIT countClone; +-- END // + + + + +DELIMITER ; \ No newline at end of file diff --git a/db/NewEmpty.sql b/db/Structure.sql similarity index 64% rename from db/NewEmpty.sql rename to db/Structure.sql index bb1e08b9cf76c83e85c7e54163297785d18593a9..07c6d13a2be18b5d1087da42977031c125a14e33 100644 --- a/db/NewEmpty.sql +++ b/db/Structure.sql @@ -3,7 +3,7 @@ -- http://www.phpmyadmin.net -- -- РҐРѕСЃС‚: 127.0.0.1:3306 --- Время создания: РђРІРі 19 2014 Рі., 01:56 +-- Время создания: РђРІРі 22 2014 Рі., 14:07 -- Версия сервера: 5.5.37-log -- Версия PHP: 5.3.28 @@ -17,7 +17,7 @@ SET time_zone = "+00:00"; /*!40101 SET NAMES utf8 */; -- --- База данных: `Sample3` +-- База данных: `Sample2` -- -- -------------------------------------------------------- @@ -30,103 +30,15 @@ CREATE TABLE IF NOT EXISTS `accounts` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Login` varchar(50) DEFAULT NULL, `Password` varchar(64) DEFAULT NULL, - `E-Mail` varchar(255) DEFAULT NULL, - `Type` enum('student','teacher') NOT NULL, + `EMail` varchar(255) DEFAULT NULL, + `UserRoleID` int(11) NOT NULL, `ActivationCode` varchar(40) DEFAULT NULL, `isEnabled` tinyint(1) NOT NULL DEFAULT '1', `UserAgent` text, PRIMARY KEY (`ID`), - UNIQUE KEY `E-Mail` (`E-Mail`), - UNIQUE KEY `Login` (`Login`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `attending_groups` --- - -CREATE TABLE IF NOT EXISTS `attending_groups` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) DEFAULT NULL, - `SemesterID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `SemesterID` (`SemesterID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `attending_groups_bases` --- - -CREATE TABLE IF NOT EXISTS `attending_groups_bases` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `AttendingGroupID` int(11) NOT NULL, - `StudyGroupID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `StudyGroupID` (`StudyGroupID`), - KEY `AttendingGroupID` (`AttendingGroupID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `attending_groups_pool` --- - -CREATE TABLE IF NOT EXISTS `attending_groups_pool` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `AttendingGroupID` int(11) NOT NULL, - `StudentID` int(11) NOT NULL, - `Type` enum('attach','detach') NOT NULL, - PRIMARY KEY (`ID`), - KEY `AttendingGroupID` (`AttendingGroupID`), - KEY `StudentID` (`StudentID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `classrooms` --- - -CREATE TABLE IF NOT EXISTS `classrooms` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) NOT NULL, - `Capacity` int(11) DEFAULT NULL, - `FacultyID` int(11) NOT NULL, - `Export` enum('true','false') NOT NULL DEFAULT 'false', - PRIMARY KEY (`ID`), - KEY `FacultyID` (`FacultyID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `classroom_sets` --- - -CREATE TABLE IF NOT EXISTS `classroom_sets` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) DEFAULT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `classroom_sets_pool` --- - -CREATE TABLE IF NOT EXISTS `classroom_sets_pool` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `ClassroomSetID` int(11) NOT NULL, - `ClassroomID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `ClassroomID` (`ClassroomID`), - KEY `ClassroomSetID` (`ClassroomSetID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + UNIQUE KEY `Login` (`Login`,`EMail`), + KEY `UserRoleID` (`UserRoleID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -138,7 +50,7 @@ CREATE TABLE IF NOT EXISTS `degrees` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(200) NOT NULL, PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -152,7 +64,7 @@ CREATE TABLE IF NOT EXISTS `departments` ( `FacultyID` int(11) NOT NULL, PRIMARY KEY (`ID`), KEY `FacultyID` (`FacultyID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -169,13 +81,44 @@ CREATE TABLE IF NOT EXISTS `disciplines` ( `SemesterID` int(11) NOT NULL, `PracticeCount` int(11) NOT NULL DEFAULT '0', `LectionCount` int(11) NOT NULL DEFAULT '0', - `Type` enum('general','special','choosen') NOT NULL DEFAULT 'general', - `Department` varchar(200) DEFAULT NULL, + `DepartmentID` int(11) NOT NULL, PRIMARY KEY (`ID`), KEY `SubjectID` (`SubjectID`), KEY `TeacherID` (`AuthorID`), - KEY `SemesterID` (`SemesterID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + KEY `SemesterID` (`SemesterID`), + KEY `DepartmentID` (`DepartmentID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `disciplines_groups` +-- + +CREATE TABLE IF NOT EXISTS `disciplines_groups` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `DisciplineID` int(11) NOT NULL, + `StudyGroupID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `DisciplineID` (`DisciplineID`), + KEY `StudyGroupID` (`StudyGroupID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `disciplines_students` +-- + +CREATE TABLE IF NOT EXISTS `disciplines_students` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `DisciplineID` int(11) NOT NULL, + `StudentID` int(11) NOT NULL, + `Type` enum('attach','detach') NOT NULL, + PRIMARY KEY (`ID`), + KEY `DisciplineID` (`DisciplineID`), + KEY `StudentID` (`StudentID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -188,9 +131,10 @@ CREATE TABLE IF NOT EXISTS `disciplines_teachers` ( `DisciplineID` int(11) NOT NULL, `TeacherID` int(11) NOT NULL, PRIMARY KEY (`ID`), + UNIQUE KEY `DisciplineID_2` (`DisciplineID`,`TeacherID`), KEY `DisciplineID` (`DisciplineID`), KEY `AccountID` (`TeacherID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -203,7 +147,7 @@ CREATE TABLE IF NOT EXISTS `faculties` ( `Name` varchar(100) NOT NULL, `Abbr` varchar(20) NOT NULL, PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -216,22 +160,7 @@ CREATE TABLE IF NOT EXISTS `general_settings` ( `Val` int(11) DEFAULT NULL, `ValS` varchar(300) DEFAULT NULL, PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `lessons` --- - -CREATE TABLE IF NOT EXISTS `lessons` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `AttendingGroupID` int(11) NOT NULL, - `DisciplineTeacherID` int(11) NOT NULL, - PRIMARY KEY (`ID`), - KEY `DisciplineID` (`DisciplineTeacherID`), - KEY `AttendingGroupID` (`AttendingGroupID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -249,7 +178,7 @@ CREATE TABLE IF NOT EXISTS `logs` ( PRIMARY KEY (`ID`), KEY `RatingTableID` (`RatingTableID`), KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -265,7 +194,20 @@ CREATE TABLE IF NOT EXISTS `modules` ( PRIMARY KEY (`ID`), UNIQUE KEY `OrderNum` (`OrderNum`,`DisciplineID`), KEY `DisciplineID` (`DisciplineID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Структура таблицы `page_access` +-- + +CREATE TABLE IF NOT EXISTS `page_access` ( + `ID` int(11) NOT NULL, + `Pagename` text NOT NULL, + `Bitmask` int(11) NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -284,7 +226,7 @@ CREATE TABLE IF NOT EXISTS `rating_table` ( KEY `StudentID` (`StudentID`), KEY `SubmoduleID` (`SubmoduleID`), KEY `TeacherID` (`TeacherID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -300,29 +242,7 @@ CREATE TABLE IF NOT EXISTS `requests` ( `Status` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- -------------------------------------------------------- - --- --- Структура таблицы `schedule` --- - -CREATE TABLE IF NOT EXISTS `schedule` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `LessonID` int(11) NOT NULL, - `Day` int(11) NOT NULL, - `LessonTimeID` int(11) NOT NULL, - `ClassroomSetID` int(11) NOT NULL, - `SubgroupCount` int(11) NOT NULL, - `SubgroupNum` int(11) NOT NULL, - `WeekSplit` enum('full','up','down') NOT NULL DEFAULT 'full', - `LesType` int(11) NOT NULL, - `Notice` varchar(30) NOT NULL, - PRIMARY KEY (`ID`), - KEY `LessonID` (`LessonID`), - KEY `ClassroomSetID` (`ClassroomSetID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -335,7 +255,7 @@ CREATE TABLE IF NOT EXISTS `semesters` ( `Year` int(11) NOT NULL, `Num` int(11) NOT NULL, PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -347,8 +267,10 @@ CREATE TABLE IF NOT EXISTS `specializations` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(50) NOT NULL, `Abbr` varchar(20) NOT NULL, - PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + `FacultyID` int(11) NOT NULL, + PRIMARY KEY (`ID`), + KEY `FacultyID` (`FacultyID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -366,7 +288,7 @@ CREATE TABLE IF NOT EXISTS `students` ( PRIMARY KEY (`ID`), KEY `StudyGroupID` (`StudyGroupID`), KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -379,12 +301,10 @@ CREATE TABLE IF NOT EXISTS `study_groups` ( `Grade` int(11) NOT NULL, `GroupNum` int(11) NOT NULL, `SpecializationID` int(11) NOT NULL, - `FacultyID` int(11) NOT NULL, `Name` varchar(50) DEFAULT NULL, PRIMARY KEY (`ID`), - KEY `SpecializtionID` (`SpecializationID`), - KEY `FacultyID` (`FacultyID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + KEY `SpecializtionID` (`SpecializationID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -397,7 +317,7 @@ CREATE TABLE IF NOT EXISTS `subjects` ( `Name` varchar(50) NOT NULL, `Abbr` varchar(20) DEFAULT NULL, PRIMARY KEY (`ID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -416,7 +336,7 @@ CREATE TABLE IF NOT EXISTS `submodules` ( PRIMARY KEY (`ID`), UNIQUE KEY `ModuleID_2` (`ModuleID`,`OrderNum`), KEY `ModuleID` (`ModuleID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -------------------------------------------------------- @@ -435,44 +355,31 @@ CREATE TABLE IF NOT EXISTS `teachers` ( PRIMARY KEY (`ID`), KEY `FacultyID` (`DepartmentID`), KEY `AccountID` (`AccountID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; - --- --- Ограничения внешнего ключа сохраненных таблиц --- +) ENGINE=InnoDB DEFAULT CHARSET=utf8; --- --- Ограничения внешнего ключа таблицы `attending_groups` --- -ALTER TABLE `attending_groups` - ADD CONSTRAINT `attending_groups_ibfk_1` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`); +-- -------------------------------------------------------- -- --- Ограничения внешнего ключа таблицы `attending_groups_bases` +-- Структура таблицы `user_roles` -- -ALTER TABLE `attending_groups_bases` - ADD CONSTRAINT `attending_groups_bases_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), - ADD CONSTRAINT `attending_groups_bases_ibfk_2` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`); --- --- Ограничения внешнего ключа таблицы `attending_groups_pool` --- -ALTER TABLE `attending_groups_pool` - ADD CONSTRAINT `attending_groups_pool_ibfk_1` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), - ADD CONSTRAINT `attending_groups_pool_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`); +CREATE TABLE IF NOT EXISTS `user_roles` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `Type` enum('student','teacher') NOT NULL, + `Role` enum('common','classMonitor','departmentAdmin','admin') NOT NULL, + `Mark` int(11) NOT NULL, + PRIMARY KEY (`ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- --- Ограничения внешнего ключа таблицы `classrooms` +-- Ограничения внешнего ключа сохраненных таблиц -- -ALTER TABLE `classrooms` - ADD CONSTRAINT `classrooms_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`); -- --- Ограничения внешнего ключа таблицы `classroom_sets_pool` +-- Ограничения внешнего ключа таблицы `accounts` -- -ALTER TABLE `classroom_sets_pool` - ADD CONSTRAINT `classroom_sets_pool_ibfk_1` FOREIGN KEY (`ClassroomID`) REFERENCES `classrooms` (`ID`), - ADD CONSTRAINT `classroom_sets_pool_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`); +ALTER TABLE `accounts` + ADD CONSTRAINT `accounts_ibfk_1` FOREIGN KEY (`UserRoleID`) REFERENCES `user_roles` (`ID`); -- -- Ограничения внешнего ключа таблицы `departments` @@ -486,7 +393,22 @@ ALTER TABLE `departments` ALTER TABLE `disciplines` ADD CONSTRAINT `disciplines_ibfk_2` FOREIGN KEY (`SubjectID`) REFERENCES `subjects` (`ID`), ADD CONSTRAINT `disciplines_ibfk_4` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`), - ADD CONSTRAINT `disciplines_ibfk_5` FOREIGN KEY (`AuthorID`) REFERENCES `teachers` (`ID`); + ADD CONSTRAINT `disciplines_ibfk_5` FOREIGN KEY (`AuthorID`) REFERENCES `teachers` (`ID`), + ADD CONSTRAINT `disciplines_ibfk_6` FOREIGN KEY (`DepartmentID`) REFERENCES `departments` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `disciplines_groups` +-- +ALTER TABLE `disciplines_groups` + ADD CONSTRAINT `disciplines_groups_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`), + ADD CONSTRAINT `disciplines_groups_ibfk_2` FOREIGN KEY (`StudyGroupID`) REFERENCES `study_groups` (`ID`); + +-- +-- Ограничения внешнего ключа таблицы `disciplines_students` +-- +ALTER TABLE `disciplines_students` + ADD CONSTRAINT `disciplines_students_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`), + ADD CONSTRAINT `disciplines_students_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`); -- -- Ограничения внешнего ключа таблицы `disciplines_teachers` @@ -495,13 +417,6 @@ ALTER TABLE `disciplines_teachers` ADD CONSTRAINT `disciplines_teachers_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`), ADD CONSTRAINT `disciplines_teachers_ibfk_2` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`); --- --- Ограничения внешнего ключа таблицы `lessons` --- -ALTER TABLE `lessons` - ADD CONSTRAINT `lessons_ibfk_6` FOREIGN KEY (`AttendingGroupID`) REFERENCES `attending_groups` (`ID`), - ADD CONSTRAINT `lessons_ibfk_7` FOREIGN KEY (`DisciplineTeacherID`) REFERENCES `disciplines_teachers` (`ID`); - -- -- Ограничения внешнего ключа таблицы `logs` -- @@ -530,11 +445,10 @@ ALTER TABLE `requests` ADD CONSTRAINT `requests_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL; -- --- Ограничения внешнего ключа таблицы `schedule` +-- Ограничения внешнего ключа таблицы `specializations` -- -ALTER TABLE `schedule` - ADD CONSTRAINT `schedule_ibfk_1` FOREIGN KEY (`LessonID`) REFERENCES `lessons` (`ID`), - ADD CONSTRAINT `schedule_ibfk_2` FOREIGN KEY (`ClassroomSetID`) REFERENCES `classroom_sets` (`ID`); +ALTER TABLE `specializations` + ADD CONSTRAINT `specializations_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`); -- -- Ограничения внешнего ключа таблицы `students` @@ -547,7 +461,6 @@ ALTER TABLE `students` -- Ограничения внешнего ключа таблицы `study_groups` -- ALTER TABLE `study_groups` - ADD CONSTRAINT `study_groups_ibfk_2` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`), ADD CONSTRAINT `study_groups_ibfk_4` FOREIGN KEY (`SpecializationID`) REFERENCES `specializations` (`ID`); -- diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000000000000000000000000000000000000..1392d67b02ac792bc0af79c130c80742b3c4fd22 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,7 @@ +cp $1/web/* $2 +mysqladmin -u mmcs_rating -pPefnesdy drop mmcs_rating +mysqladmin -u mmcs_rating -pPefnesdy create mmcs_rating +mysql mmcs_rating < $1/db/Structure.sql +mysql mmcs_rating < $1/db/StoredProcedures.sql +mysql mmcs_rating < $1/db/Sample.sql + diff --git a/install.sh b/install.sh new file mode 100644 index 0000000000000000000000000000000000000000..92bca721e93537e22735143c01361adb6cba3553 --- /dev/null +++ b/install.sh @@ -0,0 +1,4 @@ +rm -rf ~/grade-rating +git clone http://itlab.mmcs.sfedu.ru/git/grade-rating ~/ +~/grade-rating/deploy.sh ~/grade-rating ~/public_html + diff --git a/media/js/event_inspector.js b/media/js/event_inspector.js deleted file mode 100644 index 77db70482742dfc71e9a969dcba7d232c5f8e742..0000000000000000000000000000000000000000 --- a/media/js/event_inspector.js +++ /dev/null @@ -1,18 +0,0 @@ -function event_inspector_showMessage($text, $success){ - $('.TopRightMessage').text($text); - - $('.TopRightMessage').show(); - - if ($success == true) - $('.TopRightMessage').css('background', '#2bbd19'); - - if ($success == false) - $('.TopRightMessage').css('background', '#FF6666'); - - if ($('.TopRightMessage').css('display') == 'block') - setInterval( - function(){ - $('.TopRightMessage').hide("slow") - }, 5000 - ); -} diff --git a/.htaccess b/web/.htaccess similarity index 100% rename from .htaccess rename to web/.htaccess diff --git a/application/bootstrap.php b/web/application/bootstrap.php similarity index 98% rename from application/bootstrap.php rename to web/application/bootstrap.php index a1aac8d356d646a7d1ef19886b1ff42f77bf9091..38dceee9af90feb2c3bb3a0687be975aec77152e 100644 --- a/application/bootstrap.php +++ b/web/application/bootstrap.php @@ -242,6 +242,13 @@ Route::set('stdnt:profile', 'student/profile') /* --------------- Преподаватели ---------------- */ +Route::set('map:create', 'map/create') + ->defaults(array( + 'directory' => 'teacher', + 'controller' => 'map', + 'action' => 'create' + )); + Route::set('map:edit', 'map/<id>', array('id' => '[0-9]+')) ->defaults(array( 'directory' => 'teacher', diff --git a/application/classes/Controller/Authentication.php b/web/application/classes/Controller/Authentication.php similarity index 100% rename from application/classes/Controller/Authentication.php rename to web/application/classes/Controller/Authentication.php diff --git a/application/classes/Controller/Handler.php b/web/application/classes/Controller/Handler.php similarity index 100% rename from application/classes/Controller/Handler.php rename to web/application/classes/Controller/Handler.php diff --git a/application/classes/Controller/Handler/Map.php b/web/application/classes/Controller/Handler/Map.php similarity index 74% rename from application/classes/Controller/Handler/Map.php rename to web/application/classes/Controller/Handler/Map.php index 8b7af4c5ba41f6e0bd608afa7e16bc654854dff0..059d1f175a04794348fecc16d40c4298e849ed7e 100644 --- a/application/classes/Controller/Handler/Map.php +++ b/web/application/classes/Controller/Handler/Map.php @@ -13,6 +13,37 @@ class Controller_Handler_Map extends Controller_Handler { return $result[0]['Num']; } + // Добавление преподавателем дисциплины + public function action_AddDiscipline() { + $data['success'] = false; + $this->post -> rule('Grade', 'not_empty') + -> rule('Grade', 'digit') + -> rule('SubjectID', 'not_empty') + -> rule('SubjectID', 'digit') + -> rule('ExamType', 'not_empty') + -> rule('LectionCount', 'not_empty') + -> rule('LectionCount', 'digit') + -> rule('PracticeCount', 'not_empty') + -> rule('PracticeCount', 'digit') + -> rule('DepartmentID', 'not_empty') + -> rule('DepartmentID', 'digit'); + if($this->post->check()) { + $result = $this->model->AddDiscipline( + $this->user['TeacherID'], + $this->post->offsetGet('Grade'), + $this->post->offsetGet('SubjectID'), + $this->post->offsetGet('ExamType'), + $this->post->offsetGet('LectionCount'), + $this->post->offsetGet('PracticeCount'), + $this->post->offsetGet('DepartmentID') + ); + $data['DisciplineID'] = $result[0]['Num']; + if ($data['DisciplineID'] > 0) + $data['success'] = true; + } + $this->response->body(json_encode($data)); + } + // Рзменения базовых параметров дисциплины public function action_ChangeDiscipline() { $data['success'] = false; @@ -107,32 +138,30 @@ class Controller_Handler_Map extends Controller_Handler { // Поменять РёРјСЏ модуля public function action_ChangeModuleName() { + $data['success'] = false; $this->post -> rule('ModuleID', 'not_empty') -> rule('ModuleID', 'digit') -> rule('ModuleName', 'not_empty'); if($this->post->check()) { - $this->model->ChangeModuleName($this->user['TeacherID'], $this->post->offsetGet('ModuleID'), $this->post->offsetGet('ModuleName')); - $this->response->body(json_encode('Ok, ChangeModuleName!')); - } - else - $this->response->body(json_encode('Error, ChangeModuleName')); + $result = $this->model->ChangeModuleName($this->user['TeacherID'], $this->post->offsetGet('ModuleID'), $this->post->offsetGet('ModuleName')); + if ($result[0]['Num'] == 0) + $data['success'] = true; + } + $this->response->body(json_encode($data)); } // Поменять РёРјСЏ мероприятия public function action_ChangeSubmoduleName() { + $data['success'] = false; $this->post -> rule('SubmoduleID', 'not_empty') -> rule('SubmoduleID', 'digit') -> rule('SubmoduleName', 'not_empty'); if($this->post->check()) { - $this->model->ChangeSubmoduleName($this->user['TeacherID'], $this->post->offsetGet('SubmoduleID'), $this->post->offsetGet('SubmoduleName')); - $this->response->body(json_encode('Ok, ChangeSubmoduleName!')); + $result = $this->model->ChangeSubmoduleName($this->user['TeacherID'], $this->post->offsetGet('SubmoduleID'), $this->post->offsetGet('SubmoduleName')); + if ($result[0]['Num'] == 0) + $data['success'] = true; } - else - $this->response->body(json_encode('Error, ChangeSubmoduleName')); - } - - public function action_ChangeSubmoduleOrder() { - + $this->response->body(json_encode($data)); } // РЎР’РђРџ РїРѕСЂСЏРґРєР° РґРІСѓС… модулей @@ -178,8 +207,11 @@ class Controller_Handler_Map extends Controller_Handler { $data['success'] = false; $this->post -> rule('ModuleID', 'not_empty') -> rule('ModuleID', 'digit') - -> rule('SubmodulesID', 'not_empty'); + -> rule('SubmodulesID', 'not_empty') + -> rule('CurrentModuleOrder', 'not_empty') + -> rule('CurrentModuleOrder', 'digit'); if($this->post->check()) { + $ChangeOrderModulesID = json_decode($this->post->offsetGet('ChangeOrderModulesID')); $Submodules = json_decode($this->post->offsetGet('SubmodulesID')); foreach ($Submodules as &$SubmoduleID) { $this->privateDeleteSubmodule($SubmoduleID); @@ -188,8 +220,20 @@ class Controller_Handler_Map extends Controller_Handler { $this->user['TeacherID'], $this->post->offsetGet('ModuleID') ); - if ($result[0]['Num'] == 0) + if ($result[0]['Num'] == 0) { + if (count($ChangeOrderModulesID) > 0) { + $NewOrder = $this->post->offsetGet('CurrentModuleOrder'); + foreach($ChangeOrderModulesID as $ModuleID) { + $this->model->ChangeModuleOrder( + $this->user['TeacherID'], + $ModuleID, + $NewOrder + ); + $NewOrder++; + } + } $data['success'] = true; + } } $this->response->body(json_encode($data)); } @@ -198,12 +242,27 @@ class Controller_Handler_Map extends Controller_Handler { public function action_DeleteSubmodule() { $data['success'] = false; $this->post -> rule('SubmoduleID', 'not_empty') - -> rule('SubmoduleID', 'digit'); + -> rule('SubmoduleID', 'digit') + -> rule('CurrentSubmoduleOrder', 'not_empty') + -> rule('CurrentSubmoduleOrder', 'digit'); if($this->post->check()) { + $ChangeOrderSubmodulesID = json_decode($this->post->offsetGet('ChangeOrderSubmodulesID')); $result = $this->privateDeleteSubmodule($this->post->offsetGet('SubmoduleID')); - if ($result == 0) + if ($result == 0) { + if (count($ChangeOrderSubmodulesID) > 0) { + $NewOrder = $this->post->offsetGet('CurrentSubmoduleOrder'); + foreach($ChangeOrderSubmodulesID as $SubmoduleID) { + $this->model->ChangeSubmoduleOrder( + $this->user['TeacherID'], + $SubmoduleID, + $NewOrder + ); + $NewOrder++; + } + } $data['success'] = true; - } + } + } $this->response->body(json_encode($data)); } diff --git a/application/classes/Controller/Handler/Rating.php b/web/application/classes/Controller/Handler/Rating.php similarity index 100% rename from application/classes/Controller/Handler/Rating.php rename to web/application/classes/Controller/Handler/Rating.php diff --git a/application/classes/Controller/Handler/Settings.php b/web/application/classes/Controller/Handler/Settings.php similarity index 100% rename from application/classes/Controller/Handler/Settings.php rename to web/application/classes/Controller/Handler/Settings.php diff --git a/application/classes/Controller/Handler/Sign.php b/web/application/classes/Controller/Handler/Sign.php similarity index 100% rename from application/classes/Controller/Handler/Sign.php rename to web/application/classes/Controller/Handler/Sign.php diff --git a/application/classes/Controller/Student/Index.php b/web/application/classes/Controller/Student/Index.php similarity index 94% rename from application/classes/Controller/Student/Index.php rename to web/application/classes/Controller/Student/Index.php index 3044a5297376bf81339b88196186a9609d13d889..c17a7d6fea8ca700b658295424071ae260998269 100644 --- a/application/classes/Controller/Student/Index.php +++ b/web/application/classes/Controller/Student/Index.php @@ -24,7 +24,9 @@ class Controller_Student_Index extends Controller_UserEnvi { $disciplinesHandled[$i]['Rate'] = $row['Rate']; $disciplinesHandled[$i]['MaxRate'] = $row['MaxCurrentRate']; } - $twig->disciplines = $disciplinesHandled; + if ($i != 0) { + $twig->disciplines = $disciplinesHandled; + } $this->response->body($twig); } diff --git a/application/classes/Controller/Student/Profile.php b/web/application/classes/Controller/Student/Profile.php similarity index 100% rename from application/classes/Controller/Student/Profile.php rename to web/application/classes/Controller/Student/Profile.php diff --git a/application/classes/Controller/Student/Subject.php b/web/application/classes/Controller/Student/Subject.php similarity index 100% rename from application/classes/Controller/Student/Subject.php rename to web/application/classes/Controller/Student/Subject.php diff --git a/web/application/classes/Controller/Teacher/Admin/Index.php b/web/application/classes/Controller/Teacher/Admin/Index.php new file mode 100644 index 0000000000000000000000000000000000000000..aaf788af789b84504015735603237d2a5cf6a8fb --- /dev/null +++ b/web/application/classes/Controller/Teacher/Admin/Index.php @@ -0,0 +1,21 @@ +<?php defined('SYSPATH') or die('No direct script access.'); + +class Controller_Teacher_Index extends Controller_UserEnvi { + + public function action_index() + { + $twig = Twig::factory('teacher/index'); + + // ??? + + $twig->User = $this->UserInfo; + $this->response->body($twig); + } + + public function action_settings() { + $twig = Twig::factory('settings'); + $twig->User = $this->UserInfo; + $this->response->body($twig); + } +} + \ No newline at end of file diff --git a/application/classes/Controller/Teacher/Index.php b/web/application/classes/Controller/Teacher/Index.php similarity index 100% rename from application/classes/Controller/Teacher/Index.php rename to web/application/classes/Controller/Teacher/Index.php diff --git a/application/classes/Controller/Teacher/Map.php b/web/application/classes/Controller/Teacher/Map.php similarity index 87% rename from application/classes/Controller/Teacher/Map.php rename to web/application/classes/Controller/Teacher/Map.php index 3fc87a5795191cdcebe7ef4d57fc352162943f13..89d4e06ac55510fbf6558a09f31f754e9c1cae9c 100644 --- a/application/classes/Controller/Teacher/Map.php +++ b/web/application/classes/Controller/Teacher/Map.php @@ -2,6 +2,37 @@ class Controller_Teacher_Map extends Controller_UserEnvi { + private $GradesList = array( + 1 => array( + 'ID' => '1', + 'Title' =>'РљСѓСЂСЃ 1' + ), + 2 => array( + 'ID' => '2', + 'Title' =>'РљСѓСЂСЃ 2' + ), + 3 => array( + 'ID' => '3', + 'Title' =>'РљСѓСЂСЃ 3' + ), + 4 => array( + 'ID' => '4', + 'Title' =>'РљСѓСЂСЃ 4' + ), + 5 => array( + 'ID' => '5', + 'Title' =>'РљСѓСЂСЃ 6' + ), + 6 => array( + 'ID' => '6', + 'Title' =>'Магистратура 1' + ), + 7=> array( + 'ID' => '7', + 'Title' =>'Магистратура 2' + ) + ); + public function action_show() { $twig = Twig::factory('teacher/map/show'); @@ -11,7 +42,7 @@ class Controller_Teacher_Map extends Controller_UserEnvi { if($map->count() == 0) throw HTTP_Exception::factory(404, "Учебная карта дисциплины СЃ ID $id РЅРµ найдена!"); - + $twig->User = $this->UserInfo; $twig->Map = $this->getMapInfo($map); $twig->Subject = $this->getSubjectInfo($db, $id); @@ -20,9 +51,14 @@ class Controller_Teacher_Map extends Controller_UserEnvi { public function action_create() { - $twig = Twig::factory('teacher/map/add'); + $twig = Twig::factory('teacher/map/create'); + $db = new Model_Teacher_Map; $twig->User = $this->UserInfo; - + $twig->SubjectsList = $this->GetSubjectsList($db); + $twig->GradesList = $this->GradesList; + + echo Debug::vars($this->UserInfo); + $this->response->body($twig); } @@ -36,54 +72,8 @@ class Controller_Teacher_Map extends Controller_UserEnvi { $twig->User = $this->UserInfo; $twig->Map = $this->getMapInfo($map); $twig->Discipline = $this->getSubjectInfo($db, $id); - $twig->SubjectsList = array( - 1 => array( - 'ID' => '1', - 'Title' =>'Математический анализ' - ), - 2 => array( - 'ID' => '2', - 'Title' =>'Дифференциальные уравнения' - ), - 3 => array( - 'ID' => '3', - 'Title' =>'Операционные системы' - ), - 4 => array( - 'ID' => '4', - 'Title' =>'Топология' - ) - ); - $twig->GradesList = array( - 1 => array( - 'ID' => '1', - 'Title' =>'РљСѓСЂСЃ 1' - ), - 2 => array( - 'ID' => '2', - 'Title' =>'РљСѓСЂСЃ 2' - ), - 3 => array( - 'ID' => '3', - 'Title' =>'РљСѓСЂСЃ 3' - ), - 4 => array( - 'ID' => '4', - 'Title' =>'РљСѓСЂСЃ 4' - ), - 5 => array( - 'ID' => '5', - 'Title' =>'РљСѓСЂСЃ 6' - ), - 6 => array( - 'ID' => '6', - 'Title' =>'Магистратура 1' - ), - 7=> array( - 'ID' => '7', - 'Title' =>'Магистратура 2' - ) - ); + $twig->SubjectsList = $this->GetSubjectsList($db); + $twig->GradesList = $this->GradesList; $this->response->body($twig); } @@ -168,5 +158,21 @@ class Controller_Teacher_Map extends Controller_UserEnvi { return $subject; } + + private function GetSubjectsList($db) + { + $list = $db->GetSubjectList(); + + $SubjectsList = array(); $i = 0; + + foreach ($list as $row) { + $i++; + $SubjectsList[$i]['ID'] = $row['ID']; + $SubjectsList[$i]['Title'] = $row['Name']; + $SubjectsList[$i]['Abbr'] = $row['Abbr']; + } + + return $SubjectsList; + } } \ No newline at end of file diff --git a/application/classes/Controller/Teacher/Rating.php b/web/application/classes/Controller/Teacher/Rating.php similarity index 100% rename from application/classes/Controller/Teacher/Rating.php rename to web/application/classes/Controller/Teacher/Rating.php diff --git a/application/classes/Controller/Twig.php b/web/application/classes/Controller/Twig.php similarity index 100% rename from application/classes/Controller/Twig.php rename to web/application/classes/Controller/Twig.php diff --git a/application/classes/Controller/UserEnvi.php b/web/application/classes/Controller/UserEnvi.php similarity index 100% rename from application/classes/Controller/UserEnvi.php rename to web/application/classes/Controller/UserEnvi.php diff --git a/application/classes/HTTP/Exception.php b/web/application/classes/HTTP/Exception.php similarity index 100% rename from application/classes/HTTP/Exception.php rename to web/application/classes/HTTP/Exception.php diff --git a/web/application/classes/Model/Account.php b/web/application/classes/Model/Account.php new file mode 100644 index 0000000000000000000000000000000000000000..5d9bc658ce6baf6c178181a61f2238ac106dcab1 --- /dev/null +++ b/web/application/classes/Model/Account.php @@ -0,0 +1,93 @@ +<?php defined('SYSPATH') or die('No direct script access.'); + +class Model_Account extends Model +{ + public function setHashKey($key) + { + $sql = "SELECT SetHashKey('$key') AS `Key`;"; + $key = DB::query(Database::SELECT, $sql)->execute(); + return $key->get('Key'); + } + + public function getHashKey() + { + $sql = "SELECT GetHashKey() AS `Key`;"; + $key = DB::query(Database::SELECT, $sql)->execute(); + return $key->get('Key'); + } + + public function checkAuth($login, $password) { + $sql = "SELECT SignIn('$login', '$password') AS `ID`;"; + $login = DB::query(Database::SELECT, $sql)->execute(); + return $login->get('ID'); + } + + public function getPersonalInfoByID($id) + { + $sql = "CALL GetPersonalInfoByID('$id');"; + $query = DB::query(Database::SELECT, $sql)->execute(); + return $query; + } + + public function getAccountInfoByID($id) + { + $sql = "CALL GetAccInfoByID('$id');"; + $query = DB::query(Database::SELECT, $sql)->execute(); + return $query; + } + + public function changeMail($id, $mail) + { + $sql = "SELECT ChangeMail('$id', '$mail') AS Num;"; + $query = DB::query(Database::SELECT, $sql)->execute(); + return $query; + } + + public function changeLogin($id, $login) + { + $sql = "SELECT ChangeLogin('$id', '$login') AS Num;"; + $query = DB::query(Database::SELECT, $sql)->execute(); + return $query; + } + + public function changePassword($id, $password) + { + $sql = "SELECT `ChangePassword`('$id', '$password') AS Num;"; + $query = DB::query(Database::SELECT, $sql)->execute(); + return $query; + } + + public function getAccNumByLogin($login) + { + $sql = "SELECT GetAccNumByLogin('$login') AS Num;"; + $login = DB::query(Database::SELECT, $sql)->execute(); + return $login->get('Num'); + } + + public function getAccNumByMail($email) + { + $sql = "SELECT GetAccNumByMail('$email') AS Num;"; + $email = DB::query(Database::SELECT, $sql)->execute(); + return $email->get('Num'); + } + + public function isActivationCodeValid($code) + { + $sql = "SELECT GetAccNumByCode('$code') AS Num;"; + $res = DB::query(Database::SELECT, $sql)->execute(); + foreach ($res as $value) { + $count = $value['Num']; + } + return $count == 1; + } + + public function activateAccount($login, $password, $email, $code) + { + $sql = "SELECT `ActivateAccount` ('$code', '$login', '$email', '$password') AS `Num`; "; + $res = DB::query(Database::SELECT, $sql)->execute(); + foreach ($res as $value) { + $id = $value['Num']; + } + return $id; + } +} \ No newline at end of file diff --git a/application/classes/Model/Student.php b/web/application/classes/Model/Student.php similarity index 100% rename from application/classes/Model/Student.php rename to web/application/classes/Model/Student.php diff --git a/application/classes/Model/Teacher.php b/web/application/classes/Model/Teacher.php similarity index 100% rename from application/classes/Model/Teacher.php rename to web/application/classes/Model/Teacher.php diff --git a/application/classes/Model/Teacher/Index.php b/web/application/classes/Model/Teacher/Index.php similarity index 100% rename from application/classes/Model/Teacher/Index.php rename to web/application/classes/Model/Teacher/Index.php diff --git a/application/classes/Model/Teacher/Map.php b/web/application/classes/Model/Teacher/Map.php similarity index 84% rename from application/classes/Model/Teacher/Map.php rename to web/application/classes/Model/Teacher/Map.php index fdcc2d6d0c4ab8330fe2325d118da42416b17a0e..ca0b6f89c0b72976cb7e6d8b0bbb3956dcd0b81f 100644 --- a/application/classes/Model/Teacher/Map.php +++ b/web/application/classes/Model/Teacher/Map.php @@ -92,9 +92,9 @@ class Model_Teacher_Map extends Model return DB::query(Database::SELECT, $sql)->execute(); } - public function AddDiscipline($teacherID, $Grade, $SubjectID, $ExamType, $LectionCount, $PracticeCount) + public function AddDiscipline($teacherID, $Grade, $SubjectID, $ExamType, $LectionCount, $PracticeCount, $DepartmentID) { - $sql = "SELECT `AddDiscipline`('$teacherID', '$Grade', '$SubjectID', '$ExamType', '$LectionCount', '$PracticeCount') AS `Num`;"; + $sql = "SELECT `AddDiscipline`('$teacherID', '$Grade', '$SubjectID', '$ExamType', '$LectionCount', '$PracticeCount', '$DepartmentID') AS `Num`;"; return DB::query(Database::SELECT, $sql)->execute(); } @@ -103,4 +103,22 @@ class Model_Teacher_Map extends Model $sql = "SELECT `ChangeDiscipline`('$teacherID', '$DisciplineID', '$ExamType', '$LectionCount', '$PracticeCount', '$Grade', '$SubjectID') AS `Num`;"; return DB::query(Database::SELECT, $sql)->execute(); } + + public function GetSubjectList() + { + $sql = "CALL `GetSubjectList`(); "; + return DB::query(Database::SELECT, $sql)->execute(); + } + + public function ChangeModuleOrder($teacherID, $moduleID, $OrderNum) + { + $sql = "SELECT `ChangeModuleOrder`('$teacherID', '$moduleID', '$OrderNum') AS `Num`;"; + return DB::query(Database::SELECT, $sql)->execute(); + } + + public function ChangeSubmoduleOrder($teacherID, $SubmoduleID, $OrderNum) + { + $sql = "SELECT `ChangeSubmoduleOrder`('$teacherID', '$SubmoduleID', '$OrderNum') AS `Num`;"; + return DB::query(Database::SELECT, $sql)->execute(); + } } diff --git a/application/classes/Model/Teacher/Rating.php b/web/application/classes/Model/Teacher/Rating.php similarity index 100% rename from application/classes/Model/Teacher/Rating.php rename to web/application/classes/Model/Teacher/Rating.php diff --git a/application/classes/Twig.php b/web/application/classes/Twig.php similarity index 100% rename from application/classes/Twig.php rename to web/application/classes/Twig.php diff --git a/application/i18n/ru/ru.php b/web/application/i18n/ru/ru.php similarity index 100% rename from application/i18n/ru/ru.php rename to web/application/i18n/ru/ru.php diff --git a/application/messages/signin.php b/web/application/messages/signin.php similarity index 100% rename from application/messages/signin.php rename to web/application/messages/signin.php diff --git a/application/views/admin/base.twig b/web/application/views/admin/base.twig similarity index 100% rename from application/views/admin/base.twig rename to web/application/views/admin/base.twig diff --git a/application/views/admin/menu/accounts.twig b/web/application/views/admin/menu/accounts.twig similarity index 100% rename from application/views/admin/menu/accounts.twig rename to web/application/views/admin/menu/accounts.twig diff --git a/application/views/admin/menu/process.twig b/web/application/views/admin/menu/process.twig similarity index 100% rename from application/views/admin/menu/process.twig rename to web/application/views/admin/menu/process.twig diff --git a/application/views/admin/menu/structure.twig b/web/application/views/admin/menu/structure.twig similarity index 100% rename from application/views/admin/menu/structure.twig rename to web/application/views/admin/menu/structure.twig diff --git a/application/views/admin/menu/system.twig b/web/application/views/admin/menu/system.twig similarity index 100% rename from application/views/admin/menu/system.twig rename to web/application/views/admin/menu/system.twig diff --git a/application/views/base.twig b/web/application/views/base.twig similarity index 96% rename from application/views/base.twig rename to web/application/views/base.twig index 20c129b919fa24a3f7ea62fb4e086b929a4de92f..5991fbb6eee73dee7bbb1e699ebbd0986243476d 100644 --- a/application/views/base.twig +++ b/web/application/views/base.twig @@ -1,3 +1,4 @@ +<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> @@ -7,7 +8,7 @@ {% block media %}{% endblock %} </head> <body> -<div id="wrap"> +<div id="wrap" class="page"> <div class="header_wrapper"> <div class="header"> diff --git a/application/views/errors/http.twig b/web/application/views/errors/http.twig similarity index 100% rename from application/views/errors/http.twig rename to web/application/views/errors/http.twig diff --git a/application/views/settings.twig b/web/application/views/settings.twig similarity index 89% rename from application/views/settings.twig rename to web/application/views/settings.twig index 4e338e5f6d08dc1acb542c4d16ff57be45e1c6d8..8a90fcf93bf162b1ec181a37209d78470f1fc285 100644 --- a/application/views/settings.twig +++ b/web/application/views/settings.twig @@ -10,7 +10,7 @@ {% block main_content %} <div class="pageProfileSettings"> <div class="settingsSection"> - <p>Логин может состоять РёР· латинских Р±СѓРєРІ, цифр Рё символа _</p> + <p class="help">Логин может состоять РёР· латинских Р±СѓРєРІ, цифр Рё символа _</p> <div class="itemBlock"> <div class="title">Логин:</div> <div class="field"><input type="text" class="inputLogin inputText" value="{{ User.Login }}"></div> @@ -35,7 +35,7 @@ <div class="title">Старый пароль:</div> <div class="field"><input type="text" class="inputCurrentPass inputText" value=""></div> </div> - <p>Пароль должен состоять РёР· 5 Рё более символов</p> + <p class="help">Пароль должен состоять РёР· 5 Рё более символов</p> <div class="itemBlock"> <div class="title">Новый пароль:</div> <div class="field"><input type="text" class="inputNewPass inputText" value=""></div> diff --git a/application/views/sign.twig b/web/application/views/sign.twig similarity index 100% rename from application/views/sign.twig rename to web/application/views/sign.twig diff --git a/application/views/sign/in.twig b/web/application/views/sign/in.twig similarity index 100% rename from application/views/sign/in.twig rename to web/application/views/sign/in.twig diff --git a/application/views/sign/remindpass.twig b/web/application/views/sign/remindpass.twig similarity index 100% rename from application/views/sign/remindpass.twig rename to web/application/views/sign/remindpass.twig diff --git a/application/views/sign/up.twig b/web/application/views/sign/up.twig similarity index 100% rename from application/views/sign/up.twig rename to web/application/views/sign/up.twig diff --git a/application/views/student/index.twig b/web/application/views/student/index.twig similarity index 100% rename from application/views/student/index.twig rename to web/application/views/student/index.twig diff --git a/application/views/student/profile.twig b/web/application/views/student/profile.twig similarity index 99% rename from application/views/student/profile.twig rename to web/application/views/student/profile.twig index f7259c12baed71bbe9d7e26b3abf53bd9f054a72..f4a73c221e69da0a9fc261d48a74b74af30805c0 100644 --- a/application/views/student/profile.twig +++ b/web/application/views/student/profile.twig @@ -14,8 +14,7 @@ {{User.FirstName}} {{User.SecondName}} </div> - - + <div class="information_wrapper"> <div class="base_information"> <form> diff --git a/application/views/student/subject.twig b/web/application/views/student/subject.twig similarity index 100% rename from application/views/student/subject.twig rename to web/application/views/student/subject.twig diff --git a/application/views/teacher/index.twig b/web/application/views/teacher/index.twig similarity index 93% rename from application/views/teacher/index.twig rename to web/application/views/teacher/index.twig index ff434f32a3bd1491fcc99019184af8b523efb9c7..bdf702b7e0cc2df3b435ca5b98603475ef52b114 100644 --- a/application/views/teacher/index.twig +++ b/web/application/views/teacher/index.twig @@ -67,7 +67,8 @@ {% for subject in content.Subjects %} {{ idx.outputSubject(subject, HTML) }} {% else %} - Похоже, что Р’С‹ РЅРµ ведете РЅРё РѕРґРЅРѕРіРѕ предмета! + <p class="notification">Похоже, что Р’С‹ РЅРµ ведете РЅРё РѕРґРЅРѕРіРѕ предмета!</p> {% endfor %} + {{ HTML.anchor('map/create', 'Добавить РЈРљР”', {'title': 'Перейти Рє добавлению'})|raw }} </div> {% endblock %} \ No newline at end of file diff --git a/web/application/views/teacher/map/create.twig b/web/application/views/teacher/map/create.twig new file mode 100644 index 0000000000000000000000000000000000000000..d954d89f843c29fbe22f679985b99056162559c8 --- /dev/null +++ b/web/application/views/teacher/map/create.twig @@ -0,0 +1,55 @@ +{% extends 'base' %} + +{% block title %}Конструктор РЈРљР”{% endblock %} {# head -> title #} +{% block media %} {# head -> css, js #} + {{ HTML.script('media/js/functions.js')|raw }} + + {{ HTML.style('media/css/construct.css')|raw }} + {{ HTML.script('media/js/construct/create.js')|raw }} +{% endblock %} + +{% block main_top_title %}Добавление РЈРљР”{% endblock %} +{% block main_content %} + <div class="guide"> + <p>Обратите внимание, что добавление Учебной Карты Дисциплины (далее РЈРљР”) РїСЂРѕРёСЃС…РѕРґРёС‚ РІ 3 этапа:</p> + <ol> + <li>Добавление базовых параметров дисциплины: выбор предмета, формы контроля Рё РґСЂ.;</li> + <li>РџСЂРёРІСЏР·РєР° РіСЂСѓРїРї Рё студентов Рє данной РЈРљР”;</li> + <li>Создание структуры РЈРљР” (Модули Рё мероприятия).</li> + </ol> + </div> + + <div class="discipline"> + <div class="section"> + <select class="SelectSubject"> + <option value="0">Выберите предмет:</option> + {% for Subject in SubjectsList %} + <option value="{{ Subject.ID }}">{{ Subject.Title }}</option> + {% endfor %} + </select> + </div> + <div class="section"> + <select class="SelectDepartment"> + <option value="{{ User.DepartmentID }}">{{ User.DepartmentName }}</option> + </select> + <select class="SelectGrade"> + <option value="0">Выберите РєСѓСЂСЃ:</option> + {% for Grade in GradesList %} + <option value="{{ Grade.ID }}" >{{ Grade.Title }}</option> + {% endfor %} + </select> + </div> + <div class="section"> + Контроль: + <input name="ExamType" type="radio" value="exam"> Ркзамен + <input name="ExamType" type="radio" value="credit"> Зачет + </div> + <div class="section"> + <div class="item title">Лекционных часов:</div> + <div class="item"><input class="InputLectionCount" style="width: 50px;" value="0"></div> + <div class="item title">Практических часов:</div> + <div class="item"><input class="InputPracticeCount" style="width: 50px;" value="0"></div> + </div> + <button class="AddDiscipline">Добавить</button> + </div> +{% endblock %} diff --git a/application/views/teacher/map/edit.twig b/web/application/views/teacher/map/edit.twig similarity index 83% rename from application/views/teacher/map/edit.twig rename to web/application/views/teacher/map/edit.twig index d0e36dbaf0e2bda657a0096e5f624f0e3e418825..a0a384b26eaf3ac2b2198157f706cdef92a9f79c 100644 --- a/application/views/teacher/map/edit.twig +++ b/web/application/views/teacher/map/edit.twig @@ -2,14 +2,25 @@ {% block title %}Конструктор РЈРљР”{% endblock %} {# head -> title #} {% block media %} {# head -> css, js #} + {{ HTML.script('media/js/functions.js')|raw }} + + {{ HTML.style('media/js/wnd/wnd.css')|raw }} + {{ HTML.script('media/js/wnd/wnd.js')|raw }} + + {{ HTML.script('media/js/event_inspector/event_inspector.js')|raw }} + {{ HTML.style('media/js/event_inspector/event_inspector.css')|raw }} + {{ HTML.style('media/css/construct.css')|raw }} {{ HTML.script('media/js/construct/edit.js')|raw }} + {{ HTML.script('media/js/construct/attach.js')|raw }} {% endblock %} {% block main_top_title %}Редактирование РЈРљР”{% endblock %} {% block main_content %} <div class="discipline"> <p class="top_center_info">Учебная карта дисциплины РЅР° 1 семестр 2014 РіРѕРґР°</p> + <span class="AttachGroups">Прикрепить РіСЂСѓРїРїС‹</span> + <span class="AttachStudents">Прикрепить студентов</span> <div class="section"> <select class="SelectSubject"> <option value="0">Выберите предмет:</option> @@ -19,10 +30,10 @@ </select> </div> <div class="section"> - <select class="department"> - <option value="0">Выберите кафедру:</option> + <select class="SelectDepartment"> + <option value="{{ User.DepartmentID }}">{{ User.DepartmentName }}</option> </select> - <select class="Grade"> + <select class="SelectGrade"> <option value="0">Выберите РєСѓСЂСЃ:</option> {% for Grade in GradesList %} <option value="{{ Grade.ID }}" {% if Grade.ID == Discipline.GradeID %}selected{% endif %}>{{ Grade.Title }}</option> @@ -36,9 +47,9 @@ </div> <div class="section"> <div class="item title">Лекционных часов:</div> - <div class="item"><input class="inputLectionCount" style="width: 50px;" value="{{ Discipline.LectureHours }}"></div> + <div class="item"><input class="InputLectionCount" style="width: 50px;" value="{{ Discipline.LectureHours }}"></div> <div class="item title">Практических часов:</div> - <div class="item"><input class="inputPracticeCount" style="width: 50px;" value="{{ Discipline.PracticeHours }}"></div> + <div class="item"><input class="InputPracticeCount" style="width: 50px;" value="{{ Discipline.PracticeHours }}"></div> </div> <button class="ChangeDiscipline">Сохранить</button> </div> diff --git a/application/views/teacher/profile.twig b/web/application/views/teacher/profile.twig similarity index 100% rename from application/views/teacher/profile.twig rename to web/application/views/teacher/profile.twig diff --git a/application/views/teacher/setRate.twig b/web/application/views/teacher/setRate.twig similarity index 98% rename from application/views/teacher/setRate.twig rename to web/application/views/teacher/setRate.twig index ffa83ca23ec3a17befd7bb3d2d30cab4f3a2ffe8..59663696e7de5f2942a213802ff08356ad04d651 100644 --- a/application/views/teacher/setRate.twig +++ b/web/application/views/teacher/setRate.twig @@ -2,6 +2,8 @@ {% block title %}Выставление баллов{% endblock %} {# head -> title #} {% block media %} {# head -> css, js #} + {{ HTML.script('media/js/functions.js')|raw }} + {{ HTML.style('media/css/setRate.css')|raw }} {{ HTML.script('media/js/setRate.js')|raw }} {% endblock %} diff --git a/favicon.ico b/web/favicon.ico similarity index 100% rename from favicon.ico rename to web/favicon.ico diff --git a/index.php b/web/index.php similarity index 100% rename from index.php rename to web/index.php diff --git a/media/css/admin/base.css b/web/media/css/admin/base.css similarity index 100% rename from media/css/admin/base.css rename to web/media/css/admin/base.css diff --git a/media/css/admin/macro.css b/web/media/css/admin/macro.css similarity index 100% rename from media/css/admin/macro.css rename to web/media/css/admin/macro.css diff --git a/media/css/base.css b/web/media/css/base.css similarity index 89% rename from media/css/base.css rename to web/media/css/base.css index f0b3653ccb39a38e8bf2fff28958d88729a1536a..011faa2d81e865e6b530c41f6b5558113074bb92 100644 --- a/media/css/base.css +++ b/web/media/css/base.css @@ -1,9 +1,15 @@ *{ - font-family: Arial, Tahoma, Lucida Grande, Sans-Serif, Lucida Sans;; + font-family: Arial, Tahoma, Lucida Grande, Sans-Serif, Lucida Sans; + margin: 0; + padding: 0; + border: 0; +} +/* Для корректного отображения РѕРєРѕРЅ */ +html, +body { + height: 100%; } body { - padding: 0; - margin: 0; background-color: #f1f1f1; } div { @@ -90,8 +96,7 @@ a:hover { .main_content { width: 100%; position: relative; - padding-top: 25px; - padding-bottom: 20px; + padding: 25px 0; } @@ -128,12 +133,6 @@ html>body #wrap height: auto; min-height: 100%; } -html,body -{ - height: 100%; - padding:0; - margin:0; -} #footer_fixBug { height: 30px; } @@ -156,8 +155,12 @@ html,body width: 100%; } -/*------------------------------------------------------------------------------------*/ - +/*----------------------Обшие--------------------------*/ +/* Оповещение */ +p.notification{ + margin: 10px 0; + text-align: center; font-size: 16px; +} diff --git a/media/css/construct.css b/web/media/css/construct.css similarity index 89% rename from media/css/construct.css rename to web/media/css/construct.css index 96ed1fafb69f2bab4b9789c84f323de98bbea13f..36cbf15b070b6293f9147339700de1b3482a7a42 100644 --- a/media/css/construct.css +++ b/web/media/css/construct.css @@ -1,14 +1,21 @@ -.TopRightMessage { - display: none; - position: absolute; - top: 0; - right: 0; - max-width: 500px; - padding: 7px 18px; - font-size: 15px; - color: #ffffff; - border-radius: 0 0 0 5px; +/* -- Руководство -------------------- */ +.guide { + background: #f3ece3; + padding: 10px 15px; + color: #363636; } + .guide p { + margin-top: 7px; + font-size: 17px; + } + .guide ol { + list-style-type: decimal; + padding: 5px 25px; + } + .guide ol li { + margin: 15px 0px 15px 20px; + font-size: 15px; + } .discipline { margin: 0px 25px; diff --git a/media/css/courses_teacher.css b/web/media/css/courses_teacher.css similarity index 100% rename from media/css/courses_teacher.css rename to web/media/css/courses_teacher.css diff --git a/media/css/courses_teacher_var2.css b/web/media/css/courses_teacher_var2.css similarity index 100% rename from media/css/courses_teacher_var2.css rename to web/media/css/courses_teacher_var2.css diff --git a/media/css/error.css b/web/media/css/error.css similarity index 100% rename from media/css/error.css rename to web/media/css/error.css diff --git a/media/css/forms.css b/web/media/css/forms.css similarity index 100% rename from media/css/forms.css rename to web/media/css/forms.css diff --git a/media/css/icons/add.png b/web/media/css/icons/add.png similarity index 100% rename from media/css/icons/add.png rename to web/media/css/icons/add.png diff --git a/media/css/icons/add_h.png b/web/media/css/icons/add_h.png similarity index 100% rename from media/css/icons/add_h.png rename to web/media/css/icons/add_h.png diff --git a/media/css/icons/delete.png b/web/media/css/icons/delete.png similarity index 100% rename from media/css/icons/delete.png rename to web/media/css/icons/delete.png diff --git a/media/css/icons/delete_h.png b/web/media/css/icons/delete_h.png similarity index 100% rename from media/css/icons/delete_h.png rename to web/media/css/icons/delete_h.png diff --git a/media/css/icons/down.png b/web/media/css/icons/down.png similarity index 100% rename from media/css/icons/down.png rename to web/media/css/icons/down.png diff --git a/media/css/icons/down_h.png b/web/media/css/icons/down_h.png similarity index 100% rename from media/css/icons/down_h.png rename to web/media/css/icons/down_h.png diff --git a/media/css/icons/feedback.png b/web/media/css/icons/feedback.png similarity index 100% rename from media/css/icons/feedback.png rename to web/media/css/icons/feedback.png diff --git a/media/css/icons/tick.png b/web/media/css/icons/tick.png similarity index 100% rename from media/css/icons/tick.png rename to web/media/css/icons/tick.png diff --git a/media/css/icons/up.png b/web/media/css/icons/up.png similarity index 100% rename from media/css/icons/up.png rename to web/media/css/icons/up.png diff --git a/media/css/icons/up_h.png b/web/media/css/icons/up_h.png similarity index 100% rename from media/css/icons/up_h.png rename to web/media/css/icons/up_h.png diff --git a/media/css/modules.css b/web/media/css/modules.css similarity index 100% rename from media/css/modules.css rename to web/media/css/modules.css diff --git a/media/css/profile.css b/web/media/css/profile.css similarity index 100% rename from media/css/profile.css rename to web/media/css/profile.css diff --git a/media/css/results.css b/web/media/css/results.css similarity index 100% rename from media/css/results.css rename to web/media/css/results.css diff --git a/media/css/setRate.css b/web/media/css/setRate.css similarity index 100% rename from media/css/setRate.css rename to web/media/css/setRate.css diff --git a/media/css/settings.css b/web/media/css/settings.css similarity index 96% rename from media/css/settings.css rename to web/media/css/settings.css index 8e453053cf6e6d2644cf8f8d1a746e6208fbd85b..476868726d1f52af9bdb38638c11a9d38a0aa920 100644 --- a/media/css/settings.css +++ b/web/media/css/settings.css @@ -9,7 +9,8 @@ width: 500px; } /* Подсказка */ - .settingsSection p{ + .settingsSection .help{ + margin: 10px 0; text-align: center; font-size: 15px; } .settingsSection .itemBlock { diff --git a/media/css/sign.css b/web/media/css/sign.css similarity index 100% rename from media/css/sign.css rename to web/media/css/sign.css diff --git a/web/media/js/construct/attach.js b/web/media/js/construct/attach.js new file mode 100644 index 0000000000000000000000000000000000000000..d43933f423e5874566560515f3ffdd55d1bf1c86 --- /dev/null +++ b/web/media/js/construct/attach.js @@ -0,0 +1,16 @@ +var $ = jQuery; +$(function() { + var URL = (window.location.href).split('/'); + var DisciplineID = URL[URL.length - 1] + + // Открыть РѕРєРЅРѕ 'Прикрепить РіСЂСѓРїРїС‹' + $('.AttachGroups').click(function(){ + wnd.open({title: 'Тестовое eeeeeРѕРєРЅРѕ', content: '<p>Theew text</p>', width: 700}); + }); + + // Открыть РѕРєРЅРѕ 'Прикрепить студентов' + $('.AttachStudents').click(function(){ + wnd.open({title: 'Тестовое eeeeeРѕРєРЅРѕ', content: '<p>Theew text</p>', width: 700}); + }); + +}) \ No newline at end of file diff --git a/web/media/js/construct/create.js b/web/media/js/construct/create.js new file mode 100644 index 0000000000000000000000000000000000000000..e7e7f882be3dc2069d141be7f38312eaff6cb8f7 --- /dev/null +++ b/web/media/js/construct/create.js @@ -0,0 +1,26 @@ +var $ = jQuery; +$(function() { + + // Рзменения базовых параметров дисциплины + $(".AddDiscipline").click(function(){ + $.post( + '/~dev_rating/handler/map/AddDiscipline', + { + 'Grade': $('.SelectGrade').val(), + 'SubjectID': $('.SelectSubject').val(), + 'ExamType': $('input:radio[name=ExamType]:checked').val(), + 'LectionCount': $('.InputLectionCount').val(), + 'PracticeCount': $('.InputPracticeCount').val(), + 'DepartmentID': $('.SelectDepartment').val() + }, + function(data){ + data = $.parseJSON(data); + if(data.success === true) { + alert('РћРє, AddDiscipline'); + setTimeout('location.replace("/~dev_rating/map/'+data.DisciplineID+'")',5000); + } else alert('Error, AddDiscipline'); + } + ); + }); + +}); \ No newline at end of file diff --git a/media/js/construct/edit.js b/web/media/js/construct/edit.js similarity index 81% rename from media/js/construct/edit.js rename to web/media/js/construct/edit.js index 9f1b608d259e8ecbaf7c954b28bd1d2ddb86a054..6991931a44168faeac7e4d1776360a013019432f 100644 --- a/media/js/construct/edit.js +++ b/web/media/js/construct/edit.js @@ -3,11 +3,6 @@ $(function() { var URL = (window.location.href).split('/'); var DisciplineID = URL[URL.length - 1] - // Проверка РЅР° число, причем NaN РЅРµ помеха - function isNum(v) { - return typeof v === 'number' && isFinite(v); - } - // Шаблон мероприятия function GetSubModuleTmp(){ return '\ @@ -79,8 +74,8 @@ $(function() { function(data){ data = $.parseJSON(data); if(data.success === true) - alert('РћРє, ChangeSubmoduleControlType'); - else alert('Error, ChangeSubmoduleControlType'); + EventInspector_ShowMsg('РћРє, ChangeSubmodule ControlType', 'success'); + else EventInspector_ShowMsg('Error, ChangeSubmodule ControlType', 'error'); } ); } @@ -96,8 +91,8 @@ $(function() { function(data){ data = $.parseJSON(data); if(data.success === true) - alert('РћРє, ChangeSubmoduleMaxRate'); - else alert('Error, ChangeSubmoduleMaxRate'); + EventInspector_ShowMsg('РћРє, ChangeSubmodule MaxRate', 'success'); + else EventInspector_ShowMsg('Error, ChangeSubmodule MaxRate', 'error'); } ); } @@ -144,9 +139,9 @@ $(function() { }, function(data){ data = $.parseJSON(data); - if(data.success === true) { - alert('РћРє, SwapModuleOrder'); - } else alert('Error, SwapModuleOrder'); + if(data.success === true) + EventInspector_ShowMsg('РћРє, SwapModuleOrder', 'success'); + else EventInspector_ShowMsg('Error, SwapModuleOrder', 'error'); } ); } @@ -161,9 +156,9 @@ $(function() { }, function(data){ data = $.parseJSON(data); - if(data.success === true) { - alert('РћРє, SwapModuleOrder'); - } else alert('Error, SwapModuleOrder'); + if(data.success === true) + EventInspector_ShowMsg('РћРє, SwapSubmoduleOrder', 'success'); + else EventInspector_ShowMsg('Error, SwapSubmoduleOrder', 'error'); } ); } @@ -172,26 +167,22 @@ $(function() { // Рзменения базовых параметров дисциплины $(".ChangeDiscipline").click(function(){ - //alert(DisciplineID); - //alert($('.Grade').val()); - //alert($('input:radio[name=ExamType]:checked').val()); - //alert($('.inputLectionCount').val()); - //alert($('.inputPracticeCount').val()); $.post( '/~dev_rating/handler/map/ChangeDiscipline', { 'DisciplineID': DisciplineID, - 'Grade': $('.Grade').val(), + 'Grade': $('.SelectGrade').val(), 'SubjectID': $('.SelectSubject').val(), 'ExamType': $('input:radio[name=ExamType]:checked').val(), - 'LectionCount': $('.inputLectionCount').val(), - 'PracticeCount': $('.inputPracticeCount').val() + 'LectionCount': $('.InputLectionCount').val(), + 'PracticeCount': $('.InputPracticeCount').val(), + 'DepartmentID': $('.SelectDepartment').val() }, function(data){ data = $.parseJSON(data); - if(data.success === true) { - alert('РћРє, ChangeDiscipline'); - } else alert('Error, ChangeDiscipline'); + if(data.success === true) + EventInspector_ShowMsg('РћРє, ChangeDiscipline', 'success'); + else EventInspector_ShowMsg('Error, ChangeDiscipline', 'error'); } ); return false @@ -265,8 +256,8 @@ $(function() { thisModuleDIV.attr('id', data.ModuleID); // Рљ добавленному РІ модуль мероприятию добавляем ID thisModuleDIV.children('.subModules').children('.subModule').eq(0).attr('id', data.SubmoduleID); - alert('РћРє, AddModule'); - } else alert('Error, AddModule'); + EventInspector_ShowMsg('РћРє, AddModule', 'success'); + } else EventInspector_ShowMsg('Error, AddModule', 'error'); } ); @@ -292,8 +283,8 @@ $(function() { if(data.success === true) { // Рљ добавленному мероприятию добавляем ID SubmodulesDIV.children('.subModule').eq(OrderNum - 1).attr('id', data.SubmoduleID); - alert('РћРє, AddSubmodule'); - } else alert('Error, AddSubmodule'); + EventInspector_ShowMsg('РћРє, AddSubmodule', 'success'); + } else EventInspector_ShowMsg('Error, AddSubmodule', 'error'); } ); }); @@ -306,8 +297,8 @@ $(function() { // Подтверждение РїСЂРё удаление модуля $('.moduleList').on('click', '.confirmDeleteModule', function(){ - $(this).parent('div').parent('div').parent('div').remove(); var subModulesDIV = $(this).parent('div').parent('div').next('.subModules'); + var CurrentModuleOrder = $(this).parent().parent().parent().index() + 1; // Собираем РІ JSON строку ID мероприятий var JSONSubmodules = '['; $('.subModule', subModulesDIV).each(function(){ @@ -315,19 +306,29 @@ $(function() { }); JSONSubmodules = JSONSubmodules.substr(0, JSONSubmodules.length - 1); JSONSubmodules += ']'; + // + // Собираем ID модулей, которые ниже для того, чтоб сменить РёС… порадок РЅР° +1 + var AttrID = $(this).parent().parent().parent().nextAll().map(function(indx, element){ + return $(element).attr("id"); + }); + var ChangeOrderModulesID = '[' + AttrID.get() + ']'; + // $.post( '/~dev_rating/handler/map/DeleteModule', { 'ModuleID': $(this).parent('div').parent('div').parent('div').attr('id'), - 'SubmodulesID': JSONSubmodules + 'SubmodulesID': JSONSubmodules, + 'CurrentModuleOrder': CurrentModuleOrder, + 'ChangeOrderModulesID': ChangeOrderModulesID }, function(data){ data = $.parseJSON(data); if(data.success === true) - alert('РћРє, DeleteModule'); - else alert('Error, DeleteModule'); + EventInspector_ShowMsg('РћРє, DeleteModule', 'success'); + else EventInspector_ShowMsg('Error, DeleteModule', 'error'); } ); + $(this).parent('div').parent('div').parent('div').remove(); }); // Удалить мероприятие @@ -339,24 +340,33 @@ $(function() { // Подтверждение РїСЂРё удаление мероприятия $('.moduleList').on('click', '.confirmDeleteSubModule ', function(){ var subModulesDiv = $(this).parent().parent().parent(); - $(this).parent('div').parent('div').remove(); + var CurrentSubmoduleOrder = $(this).parent().parent().index() + 1; CountCurrentControl(subModulesDiv); CountLandmarkControl(subModulesDiv); + // Собираем ID мероприятий, которые ниже для того, чтоб сменить РёС… порадок РЅР° +1 + var AttrID = $(this).parent().parent().nextAll().map(function(indx, element){ + return $(element).attr("id"); + }); + var ChangeOrderSubmodulesID = '[' + AttrID.get() + ']'; + // $.post( '/~dev_rating/handler/map/DeleteSubmodule', { - 'SubmoduleID': $(this).parent('div').parent('div').attr('id') + 'SubmoduleID': $(this).parent('div').parent('div').attr('id'), + 'CurrentSubmoduleOrder': CurrentSubmoduleOrder, + 'ChangeOrderSubmodulesID': ChangeOrderSubmodulesID }, function(data){ data = $.parseJSON(data); if(data.success === true) - alert('РћРє, DeleteSubmodule'); - else alert('Error, DeleteSubmodule'); + EventInspector_ShowMsg('РћРє, DeleteSubmodule', 'success'); + else EventInspector_ShowMsg('Error, DeleteSubmodule', 'error'); } ); + $(this).parent('div').parent('div').remove(); }); - // Отмена удаления + // Отмена удаления модулей/мероприятий $('.moduleList').on('click', '.cancel ', function(){ $(this).parent().parent().children('.actions').css('display', 'block'); $(this).parent().remove(); @@ -378,7 +388,10 @@ $(function() { 'ModuleName': NewModuleName }, function(data){ - alert(data); + data = $.parseJSON(data); + if(data.success === true) + EventInspector_ShowMsg('РћРє, Change Module Name', 'success'); + else EventInspector_ShowMsg('Error, Change Module Name', 'error'); } ); } @@ -400,7 +413,10 @@ $(function() { 'SubmoduleName': NewSubmoduleName }, function(data){ - alert(data); + data = $.parseJSON(data); + if(data.success === true) + EventInspector_ShowMsg('РћРє, Change Submodule Name', 'success'); + else EventInspector_ShowMsg('Error, Change Submodule Name', 'error'); } ); } @@ -430,21 +446,7 @@ $(function() { // Р’ inputCredit (РіРґРµ баллы вводить) разрешаем вводить только цифры $(".moduleList").on('keydown', '.inputCredit', function(event) { - // Разрешаем: backspace, delete, tab Рё escape - if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || - // Разрешаем: Ctrl+A - (event.keyCode == 65 && event.ctrlKey === true) || - // Разрешаем: home, end, влево, вправо - (event.keyCode >= 35 && event.keyCode <= 39)) { - // Ничего РЅРµ делаем - return; - } - else { - // Убеждаемся, что это цифра, Рё останавливаем событие keypress - if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) { - event.preventDefault(); - } - } + KeyDownOnlyNumber(event); }); }); diff --git a/web/media/js/event_inspector/event_inspector.css b/web/media/js/event_inspector/event_inspector.css new file mode 100644 index 0000000000000000000000000000000000000000..5306f9a7e6475c49cb9574c4e09938deed9ac9fd --- /dev/null +++ b/web/media/js/event_inspector/event_inspector.css @@ -0,0 +1,24 @@ +.EventInspectorList { + position: fixed; + height: auto; + width: 200px; + top: 50px; + right: 20px +} + .EventInspectorList .EventItem { + width: auto; + padding: 10px 15px; + margin-bottom: 10px; + border-radius: 4px; + font-size: 14px; + } + .EventInspectorList .success { + color: #3c763d; + background-color: #dff0d8; + border: 1px solid #d6e9c6; + } + .EventInspectorList .error { + color: #a94442; + background-color: #f2dede; + border: 1px solid #ebccd1; + } \ No newline at end of file diff --git a/web/media/js/event_inspector/event_inspector.js b/web/media/js/event_inspector/event_inspector.js new file mode 100644 index 0000000000000000000000000000000000000000..6d8c7526f0d598b000515bf8ec8843055bf48cd5 --- /dev/null +++ b/web/media/js/event_inspector/event_inspector.js @@ -0,0 +1,14 @@ +var $ = jQuery; +$(function() { + $('body').append('<div class="EventInspectorList"></div>'); +}); + +function EventInspector_ShowMsg(text, type){ + var MsgDiv = $('.EventInspectorList').append('<div class="EventItem '+ type +'">' + text + '</div>').children().last(); + setTimeout( + function(){ + MsgDiv.animate({opacity: 0}, 1000, function() {$(this).remove()}); + }, + 5000 + ); +} diff --git a/web/media/js/functions.js b/web/media/js/functions.js new file mode 100644 index 0000000000000000000000000000000000000000..45680cc3071cd801edcadabca370f15c6a3622aa --- /dev/null +++ b/web/media/js/functions.js @@ -0,0 +1,23 @@ +// Проверка РЅР° число, причем NaN РЅРµ помеха +function isNum(v) { + return typeof v === 'number' && isFinite(v); +} + +// Разрешаем вводить только цифры +function KeyDownOnlyNumber(event) { + // Разрешаем: backspace, delete, tab Рё escape + if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || + // Разрешаем: Ctrl+A + (event.keyCode == 65 && event.ctrlKey === true) || + // Разрешаем: home, end, влево, вправо + (event.keyCode >= 35 && event.keyCode <= 39)) { + // Ничего РЅРµ делаем + return; + } + else { + // Убеждаемся, что это цифра, Рё останавливаем событие keypress + if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) { + event.preventDefault(); + } + } +} \ No newline at end of file diff --git a/media/js/jquery-1.11.1.min.js b/web/media/js/jquery-1.11.1.min.js similarity index 100% rename from media/js/jquery-1.11.1.min.js rename to web/media/js/jquery-1.11.1.min.js diff --git a/media/js/jquery-1.9.1.min.js b/web/media/js/jquery-1.9.1.min.js similarity index 100% rename from media/js/jquery-1.9.1.min.js rename to web/media/js/jquery-1.9.1.min.js diff --git a/media/js/jquery-2.1.0.min.js b/web/media/js/jquery-2.1.0.min.js similarity index 100% rename from media/js/jquery-2.1.0.min.js rename to web/media/js/jquery-2.1.0.min.js diff --git a/media/js/setRate.js b/web/media/js/setRate.js similarity index 76% rename from media/js/setRate.js rename to web/media/js/setRate.js index 20bb2de12a8afe80712abd14d179890207f133f0..49e37497f125a4b00bbfb9fc51e1765a956b12f2 100644 --- a/media/js/setRate.js +++ b/web/media/js/setRate.js @@ -97,25 +97,6 @@ $(function() { tdUnFocus($(this)); }); - // Разрешаем вводить только цифры - function KeyDownOnlyNumber(event) { - // Разрешаем: backspace, delete, tab Рё escape - if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || - // Разрешаем: Ctrl+A - (event.keyCode == 65 && event.ctrlKey === true) || - // Разрешаем: home, end, влево, вправо - (event.keyCode >= 35 && event.keyCode <= 39)) { - // Ничего РЅРµ делаем - return; - } - else { - // Убеждаемся, что это цифра, Рё останавливаем событие keypress - if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) { - event.preventDefault(); - } - } - } - // Р’ inputCredit (РіРґРµ баллы вводить) разрешаем вводить только цифры $('.rateCell').children('input').keydown(function(event) { KeyDownOnlyNumber(event); diff --git a/media/js/settings.js b/web/media/js/settings.js similarity index 100% rename from media/js/settings.js rename to web/media/js/settings.js diff --git a/media/js/sign.js b/web/media/js/sign.js similarity index 100% rename from media/js/sign.js rename to web/media/js/sign.js diff --git a/web/media/js/wnd/close.png b/web/media/js/wnd/close.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d7885a6396c0f18338739e0665073e16fa8629 Binary files /dev/null and b/web/media/js/wnd/close.png differ diff --git a/web/media/js/wnd/wnd.css b/web/media/js/wnd/wnd.css new file mode 100644 index 0000000000000000000000000000000000000000..7563d252a53a03e3356d98422d64b31d6abdcbeb --- /dev/null +++ b/web/media/js/wnd/wnd.css @@ -0,0 +1,43 @@ +.window { + display: none; + position: absolute; + top: 0; + left: 0; + z-index: 1000; + width: 100%; + height: 100%; + background-color: rgba(0,0,0,.5); + font-family: sans-serif; +} + .window-shadow { + position: absolute; + width: 100%; + height: 100%; + } + .window-block { + position: relative; + z-index: 1; + margin: 20px auto; + background-color: #fff; + } + .window-title { + line-height: 20px; + font-size: 13px; + text-align: center; + } + .window-close { + position: absolute; + top: 0; + right: 0; + display: block; + width: 20px; + height: 20px; + background: url("close.png") center; + } + .window-content { + padding: 5px 10px; + } + .window-content p { + line-height: 16px; + font-size: 14px; + } \ No newline at end of file diff --git a/web/media/js/wnd/wnd.js b/web/media/js/wnd/wnd.js new file mode 100644 index 0000000000000000000000000000000000000000..302449b2cebed1fa85cdf54a5acfeabb529ec043 --- /dev/null +++ b/web/media/js/wnd/wnd.js @@ -0,0 +1,40 @@ +wnd = {} +wnd.$ = {} + +wnd.isShow = false; +wnd.show = function () { + wnd.isShow = true; + wnd.scroll = $(window).scrollTop(); + wnd.$.page.css("position", "fixed"); + wnd.$.page.css("margin-top", -wnd.scroll); + wnd.$.window.css("display", "block"); +} +wnd.hide = function () { + wnd.isShow = false; + wnd.$.page.css("position", "static"); + wnd.$.page.css("margin-top", 0); + $(window).scrollTop(wnd.scroll); + wnd.$.window.css("display", "none"); +} + +wnd.open = function(data) { + wnd.$.title.html(data.title || ''); + wnd.$.content.html(data.content || ''); + wnd.$.block.width(data.width || 600) + + wnd.show(); + + wnd.$.window.css("min-width", wnd.$.block.width() + 40); + wnd.$.window.css("min-height", wnd.$.block.height() + 40); +} +wnd.close = wnd.hide; + +$(function() { + // Блок РѕРєРЅР° + $("body").append("<div class=\"window\"><div class=\"window-shadow\" onclick=\"wnd.close()\"></div><div class=\"window-block\"><div class=\"window-title\"></div><a href=\"javascript:wnd.close()\" class=\"window-close\"></a><div class=\"window-content\"></div></div></div>"); + wnd.$.page = $(".page"); + wnd.$.window = $(".window"); + wnd.$.block = $(".window-block"); + wnd.$.title = $(".window-title"); + wnd.$.content = $(".window-content"); +}); \ No newline at end of file diff --git a/modules/account/classes/Account.php b/web/modules/account/classes/Account.php similarity index 100% rename from modules/account/classes/Account.php rename to web/modules/account/classes/Account.php diff --git a/modules/account/classes/Kohana/Account.php b/web/modules/account/classes/Kohana/Account.php similarity index 100% rename from modules/account/classes/Kohana/Account.php rename to web/modules/account/classes/Kohana/Account.php diff --git a/modules/account/classes/Model/Account.php b/web/modules/account/classes/Model/Account.php similarity index 100% rename from modules/account/classes/Model/Account.php rename to web/modules/account/classes/Model/Account.php diff --git a/modules/account/classes/Model/Kohana/Account.php b/web/modules/account/classes/Model/Kohana/Account.php similarity index 100% rename from modules/account/classes/Model/Kohana/Account.php rename to web/modules/account/classes/Model/Kohana/Account.php diff --git a/modules/codebench/classes/Bench/ArrCallback.php b/web/modules/codebench/classes/Bench/ArrCallback.php similarity index 100% rename from modules/codebench/classes/Bench/ArrCallback.php rename to web/modules/codebench/classes/Bench/ArrCallback.php diff --git a/modules/codebench/classes/Bench/AutoLinkEmails.php b/web/modules/codebench/classes/Bench/AutoLinkEmails.php similarity index 100% rename from modules/codebench/classes/Bench/AutoLinkEmails.php rename to web/modules/codebench/classes/Bench/AutoLinkEmails.php diff --git a/modules/codebench/classes/Bench/DateSpan.php b/web/modules/codebench/classes/Bench/DateSpan.php similarity index 100% rename from modules/codebench/classes/Bench/DateSpan.php rename to web/modules/codebench/classes/Bench/DateSpan.php diff --git a/modules/codebench/classes/Bench/ExplodeLimit.php b/web/modules/codebench/classes/Bench/ExplodeLimit.php similarity index 100% rename from modules/codebench/classes/Bench/ExplodeLimit.php rename to web/modules/codebench/classes/Bench/ExplodeLimit.php diff --git a/modules/codebench/classes/Bench/GruberURL.php b/web/modules/codebench/classes/Bench/GruberURL.php similarity index 100% rename from modules/codebench/classes/Bench/GruberURL.php rename to web/modules/codebench/classes/Bench/GruberURL.php diff --git a/modules/codebench/classes/Bench/LtrimDigits.php b/web/modules/codebench/classes/Bench/LtrimDigits.php similarity index 100% rename from modules/codebench/classes/Bench/LtrimDigits.php rename to web/modules/codebench/classes/Bench/LtrimDigits.php diff --git a/modules/codebench/classes/Bench/MDDoBaseURL.php b/web/modules/codebench/classes/Bench/MDDoBaseURL.php similarity index 100% rename from modules/codebench/classes/Bench/MDDoBaseURL.php rename to web/modules/codebench/classes/Bench/MDDoBaseURL.php diff --git a/modules/codebench/classes/Bench/MDDoImageURL.php b/web/modules/codebench/classes/Bench/MDDoImageURL.php similarity index 100% rename from modules/codebench/classes/Bench/MDDoImageURL.php rename to web/modules/codebench/classes/Bench/MDDoImageURL.php diff --git a/modules/codebench/classes/Bench/MDDoIncludeViews.php b/web/modules/codebench/classes/Bench/MDDoIncludeViews.php similarity index 100% rename from modules/codebench/classes/Bench/MDDoIncludeViews.php rename to web/modules/codebench/classes/Bench/MDDoIncludeViews.php diff --git a/modules/codebench/classes/Bench/StripNullBytes.php b/web/modules/codebench/classes/Bench/StripNullBytes.php similarity index 100% rename from modules/codebench/classes/Bench/StripNullBytes.php rename to web/modules/codebench/classes/Bench/StripNullBytes.php diff --git a/modules/codebench/classes/Bench/Transliterate.php b/web/modules/codebench/classes/Bench/Transliterate.php similarity index 100% rename from modules/codebench/classes/Bench/Transliterate.php rename to web/modules/codebench/classes/Bench/Transliterate.php diff --git a/modules/codebench/classes/Bench/URLSite.php b/web/modules/codebench/classes/Bench/URLSite.php similarity index 100% rename from modules/codebench/classes/Bench/URLSite.php rename to web/modules/codebench/classes/Bench/URLSite.php diff --git a/modules/codebench/classes/Bench/UserFuncArray.php b/web/modules/codebench/classes/Bench/UserFuncArray.php similarity index 100% rename from modules/codebench/classes/Bench/UserFuncArray.php rename to web/modules/codebench/classes/Bench/UserFuncArray.php diff --git a/modules/codebench/classes/Bench/ValidColor.php b/web/modules/codebench/classes/Bench/ValidColor.php similarity index 100% rename from modules/codebench/classes/Bench/ValidColor.php rename to web/modules/codebench/classes/Bench/ValidColor.php diff --git a/modules/codebench/classes/Bench/ValidURL.php b/web/modules/codebench/classes/Bench/ValidURL.php similarity index 100% rename from modules/codebench/classes/Bench/ValidURL.php rename to web/modules/codebench/classes/Bench/ValidURL.php diff --git a/modules/codebench/classes/Codebench.php b/web/modules/codebench/classes/Codebench.php similarity index 100% rename from modules/codebench/classes/Codebench.php rename to web/modules/codebench/classes/Codebench.php diff --git a/modules/codebench/classes/Controller/Codebench.php b/web/modules/codebench/classes/Controller/Codebench.php similarity index 100% rename from modules/codebench/classes/Controller/Codebench.php rename to web/modules/codebench/classes/Controller/Codebench.php diff --git a/modules/codebench/classes/Kohana/Codebench.php b/web/modules/codebench/classes/Kohana/Codebench.php similarity index 100% rename from modules/codebench/classes/Kohana/Codebench.php rename to web/modules/codebench/classes/Kohana/Codebench.php diff --git a/modules/codebench/composer.json b/web/modules/codebench/composer.json similarity index 100% rename from modules/codebench/composer.json rename to web/modules/codebench/composer.json diff --git a/modules/codebench/config/codebench.php b/web/modules/codebench/config/codebench.php similarity index 100% rename from modules/codebench/config/codebench.php rename to web/modules/codebench/config/codebench.php diff --git a/modules/codebench/config/userguide.php b/web/modules/codebench/config/userguide.php similarity index 100% rename from modules/codebench/config/userguide.php rename to web/modules/codebench/config/userguide.php diff --git a/modules/codebench/guide/codebench/index.md b/web/modules/codebench/guide/codebench/index.md similarity index 100% rename from modules/codebench/guide/codebench/index.md rename to web/modules/codebench/guide/codebench/index.md diff --git a/modules/codebench/guide/codebench/menu.md b/web/modules/codebench/guide/codebench/menu.md similarity index 100% rename from modules/codebench/guide/codebench/menu.md rename to web/modules/codebench/guide/codebench/menu.md diff --git a/modules/codebench/init.php b/web/modules/codebench/init.php similarity index 100% rename from modules/codebench/init.php rename to web/modules/codebench/init.php diff --git a/modules/codebench/media/guide/codebench/codebench_screenshot1.png b/web/modules/codebench/media/guide/codebench/codebench_screenshot1.png similarity index 100% rename from modules/codebench/media/guide/codebench/codebench_screenshot1.png rename to web/modules/codebench/media/guide/codebench/codebench_screenshot1.png diff --git a/modules/codebench/media/guide/codebench/codebench_screenshot2.png b/web/modules/codebench/media/guide/codebench/codebench_screenshot2.png similarity index 100% rename from modules/codebench/media/guide/codebench/codebench_screenshot2.png rename to web/modules/codebench/media/guide/codebench/codebench_screenshot2.png diff --git a/modules/codebench/views/codebench.php b/web/modules/codebench/views/codebench.php similarity index 100% rename from modules/codebench/views/codebench.php rename to web/modules/codebench/views/codebench.php diff --git a/modules/database/classes/Config/Database.php b/web/modules/database/classes/Config/Database.php similarity index 100% rename from modules/database/classes/Config/Database.php rename to web/modules/database/classes/Config/Database.php diff --git a/modules/database/classes/Config/Database/Reader.php b/web/modules/database/classes/Config/Database/Reader.php similarity index 100% rename from modules/database/classes/Config/Database/Reader.php rename to web/modules/database/classes/Config/Database/Reader.php diff --git a/modules/database/classes/Config/Database/Writer.php b/web/modules/database/classes/Config/Database/Writer.php similarity index 100% rename from modules/database/classes/Config/Database/Writer.php rename to web/modules/database/classes/Config/Database/Writer.php diff --git a/modules/database/classes/DB.php b/web/modules/database/classes/DB.php similarity index 100% rename from modules/database/classes/DB.php rename to web/modules/database/classes/DB.php diff --git a/modules/database/classes/Database.php b/web/modules/database/classes/Database.php similarity index 100% rename from modules/database/classes/Database.php rename to web/modules/database/classes/Database.php diff --git a/modules/database/classes/Database/Exception.php b/web/modules/database/classes/Database/Exception.php similarity index 100% rename from modules/database/classes/Database/Exception.php rename to web/modules/database/classes/Database/Exception.php diff --git a/modules/database/classes/Database/Expression.php b/web/modules/database/classes/Database/Expression.php similarity index 100% rename from modules/database/classes/Database/Expression.php rename to web/modules/database/classes/Database/Expression.php diff --git a/modules/database/classes/Database/MySQL.php b/web/modules/database/classes/Database/MySQL.php similarity index 100% rename from modules/database/classes/Database/MySQL.php rename to web/modules/database/classes/Database/MySQL.php diff --git a/modules/database/classes/Database/MySQL/Result.php b/web/modules/database/classes/Database/MySQL/Result.php similarity index 100% rename from modules/database/classes/Database/MySQL/Result.php rename to web/modules/database/classes/Database/MySQL/Result.php diff --git a/modules/database/classes/Database/PDO.php b/web/modules/database/classes/Database/PDO.php similarity index 100% rename from modules/database/classes/Database/PDO.php rename to web/modules/database/classes/Database/PDO.php diff --git a/modules/database/classes/Database/Query.php b/web/modules/database/classes/Database/Query.php similarity index 100% rename from modules/database/classes/Database/Query.php rename to web/modules/database/classes/Database/Query.php diff --git a/modules/database/classes/Database/Query/Builder.php b/web/modules/database/classes/Database/Query/Builder.php similarity index 100% rename from modules/database/classes/Database/Query/Builder.php rename to web/modules/database/classes/Database/Query/Builder.php diff --git a/modules/database/classes/Database/Query/Builder/Delete.php b/web/modules/database/classes/Database/Query/Builder/Delete.php similarity index 100% rename from modules/database/classes/Database/Query/Builder/Delete.php rename to web/modules/database/classes/Database/Query/Builder/Delete.php diff --git a/modules/database/classes/Database/Query/Builder/Insert.php b/web/modules/database/classes/Database/Query/Builder/Insert.php similarity index 100% rename from modules/database/classes/Database/Query/Builder/Insert.php rename to web/modules/database/classes/Database/Query/Builder/Insert.php diff --git a/modules/database/classes/Database/Query/Builder/Join.php b/web/modules/database/classes/Database/Query/Builder/Join.php similarity index 100% rename from modules/database/classes/Database/Query/Builder/Join.php rename to web/modules/database/classes/Database/Query/Builder/Join.php diff --git a/modules/database/classes/Database/Query/Builder/Select.php b/web/modules/database/classes/Database/Query/Builder/Select.php similarity index 100% rename from modules/database/classes/Database/Query/Builder/Select.php rename to web/modules/database/classes/Database/Query/Builder/Select.php diff --git a/modules/database/classes/Database/Query/Builder/Update.php b/web/modules/database/classes/Database/Query/Builder/Update.php similarity index 100% rename from modules/database/classes/Database/Query/Builder/Update.php rename to web/modules/database/classes/Database/Query/Builder/Update.php diff --git a/modules/database/classes/Database/Query/Builder/Where.php b/web/modules/database/classes/Database/Query/Builder/Where.php similarity index 100% rename from modules/database/classes/Database/Query/Builder/Where.php rename to web/modules/database/classes/Database/Query/Builder/Where.php diff --git a/modules/database/classes/Database/Result.php b/web/modules/database/classes/Database/Result.php similarity index 100% rename from modules/database/classes/Database/Result.php rename to web/modules/database/classes/Database/Result.php diff --git a/modules/database/classes/Database/Result/Cached.php b/web/modules/database/classes/Database/Result/Cached.php similarity index 100% rename from modules/database/classes/Database/Result/Cached.php rename to web/modules/database/classes/Database/Result/Cached.php diff --git a/modules/database/classes/Kohana/Config/Database.php b/web/modules/database/classes/Kohana/Config/Database.php similarity index 100% rename from modules/database/classes/Kohana/Config/Database.php rename to web/modules/database/classes/Kohana/Config/Database.php diff --git a/modules/database/classes/Kohana/Config/Database/Reader.php b/web/modules/database/classes/Kohana/Config/Database/Reader.php similarity index 100% rename from modules/database/classes/Kohana/Config/Database/Reader.php rename to web/modules/database/classes/Kohana/Config/Database/Reader.php diff --git a/modules/database/classes/Kohana/Config/Database/Writer.php b/web/modules/database/classes/Kohana/Config/Database/Writer.php similarity index 100% rename from modules/database/classes/Kohana/Config/Database/Writer.php rename to web/modules/database/classes/Kohana/Config/Database/Writer.php diff --git a/modules/database/classes/Kohana/DB.php b/web/modules/database/classes/Kohana/DB.php similarity index 100% rename from modules/database/classes/Kohana/DB.php rename to web/modules/database/classes/Kohana/DB.php diff --git a/modules/database/classes/Kohana/Database.php b/web/modules/database/classes/Kohana/Database.php similarity index 100% rename from modules/database/classes/Kohana/Database.php rename to web/modules/database/classes/Kohana/Database.php diff --git a/modules/database/classes/Kohana/Database/Exception.php b/web/modules/database/classes/Kohana/Database/Exception.php similarity index 100% rename from modules/database/classes/Kohana/Database/Exception.php rename to web/modules/database/classes/Kohana/Database/Exception.php diff --git a/modules/database/classes/Kohana/Database/Expression.php b/web/modules/database/classes/Kohana/Database/Expression.php similarity index 100% rename from modules/database/classes/Kohana/Database/Expression.php rename to web/modules/database/classes/Kohana/Database/Expression.php diff --git a/modules/database/classes/Kohana/Database/MySQL.php b/web/modules/database/classes/Kohana/Database/MySQL.php similarity index 100% rename from modules/database/classes/Kohana/Database/MySQL.php rename to web/modules/database/classes/Kohana/Database/MySQL.php diff --git a/modules/database/classes/Kohana/Database/MySQL/Result.php b/web/modules/database/classes/Kohana/Database/MySQL/Result.php similarity index 100% rename from modules/database/classes/Kohana/Database/MySQL/Result.php rename to web/modules/database/classes/Kohana/Database/MySQL/Result.php diff --git a/modules/database/classes/Kohana/Database/PDO.php b/web/modules/database/classes/Kohana/Database/PDO.php similarity index 100% rename from modules/database/classes/Kohana/Database/PDO.php rename to web/modules/database/classes/Kohana/Database/PDO.php diff --git a/modules/database/classes/Kohana/Database/Query.php b/web/modules/database/classes/Kohana/Database/Query.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query.php rename to web/modules/database/classes/Kohana/Database/Query.php diff --git a/modules/database/classes/Kohana/Database/Query/Builder.php b/web/modules/database/classes/Kohana/Database/Query/Builder.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query/Builder.php rename to web/modules/database/classes/Kohana/Database/Query/Builder.php diff --git a/modules/database/classes/Kohana/Database/Query/Builder/Delete.php b/web/modules/database/classes/Kohana/Database/Query/Builder/Delete.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query/Builder/Delete.php rename to web/modules/database/classes/Kohana/Database/Query/Builder/Delete.php diff --git a/modules/database/classes/Kohana/Database/Query/Builder/Insert.php b/web/modules/database/classes/Kohana/Database/Query/Builder/Insert.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query/Builder/Insert.php rename to web/modules/database/classes/Kohana/Database/Query/Builder/Insert.php diff --git a/modules/database/classes/Kohana/Database/Query/Builder/Join.php b/web/modules/database/classes/Kohana/Database/Query/Builder/Join.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query/Builder/Join.php rename to web/modules/database/classes/Kohana/Database/Query/Builder/Join.php diff --git a/modules/database/classes/Kohana/Database/Query/Builder/Select.php b/web/modules/database/classes/Kohana/Database/Query/Builder/Select.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query/Builder/Select.php rename to web/modules/database/classes/Kohana/Database/Query/Builder/Select.php diff --git a/modules/database/classes/Kohana/Database/Query/Builder/Update.php b/web/modules/database/classes/Kohana/Database/Query/Builder/Update.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query/Builder/Update.php rename to web/modules/database/classes/Kohana/Database/Query/Builder/Update.php diff --git a/modules/database/classes/Kohana/Database/Query/Builder/Where.php b/web/modules/database/classes/Kohana/Database/Query/Builder/Where.php similarity index 100% rename from modules/database/classes/Kohana/Database/Query/Builder/Where.php rename to web/modules/database/classes/Kohana/Database/Query/Builder/Where.php diff --git a/modules/database/classes/Kohana/Database/Result.php b/web/modules/database/classes/Kohana/Database/Result.php similarity index 100% rename from modules/database/classes/Kohana/Database/Result.php rename to web/modules/database/classes/Kohana/Database/Result.php diff --git a/modules/database/classes/Kohana/Database/Result/Cached.php b/web/modules/database/classes/Kohana/Database/Result/Cached.php similarity index 100% rename from modules/database/classes/Kohana/Database/Result/Cached.php rename to web/modules/database/classes/Kohana/Database/Result/Cached.php diff --git a/modules/database/classes/Kohana/Model/Database.php b/web/modules/database/classes/Kohana/Model/Database.php similarity index 100% rename from modules/database/classes/Kohana/Model/Database.php rename to web/modules/database/classes/Kohana/Model/Database.php diff --git a/modules/database/classes/Kohana/Session/Database.php b/web/modules/database/classes/Kohana/Session/Database.php similarity index 100% rename from modules/database/classes/Kohana/Session/Database.php rename to web/modules/database/classes/Kohana/Session/Database.php diff --git a/modules/database/classes/Model/Database.php b/web/modules/database/classes/Model/Database.php similarity index 100% rename from modules/database/classes/Model/Database.php rename to web/modules/database/classes/Model/Database.php diff --git a/modules/database/classes/Session/Database.php b/web/modules/database/classes/Session/Database.php similarity index 100% rename from modules/database/classes/Session/Database.php rename to web/modules/database/classes/Session/Database.php diff --git a/modules/database/composer.json b/web/modules/database/composer.json similarity index 100% rename from modules/database/composer.json rename to web/modules/database/composer.json diff --git a/modules/database/config/database.php b/web/modules/database/config/database.php similarity index 100% rename from modules/database/config/database.php rename to web/modules/database/config/database.php diff --git a/modules/database/config/session.php b/web/modules/database/config/session.php similarity index 100% rename from modules/database/config/session.php rename to web/modules/database/config/session.php diff --git a/modules/database/config/userguide.php b/web/modules/database/config/userguide.php similarity index 100% rename from modules/database/config/userguide.php rename to web/modules/database/config/userguide.php diff --git a/modules/database/guide/database/config.md b/web/modules/database/guide/database/config.md similarity index 100% rename from modules/database/guide/database/config.md rename to web/modules/database/guide/database/config.md diff --git a/modules/database/guide/database/examples.md b/web/modules/database/guide/database/examples.md similarity index 100% rename from modules/database/guide/database/examples.md rename to web/modules/database/guide/database/examples.md diff --git a/modules/database/guide/database/index.md b/web/modules/database/guide/database/index.md similarity index 100% rename from modules/database/guide/database/index.md rename to web/modules/database/guide/database/index.md diff --git a/modules/database/guide/database/menu.md b/web/modules/database/guide/database/menu.md similarity index 100% rename from modules/database/guide/database/menu.md rename to web/modules/database/guide/database/menu.md diff --git a/modules/database/guide/database/query.md b/web/modules/database/guide/database/query.md similarity index 100% rename from modules/database/guide/database/query.md rename to web/modules/database/guide/database/query.md diff --git a/modules/database/guide/database/query/builder.md b/web/modules/database/guide/database/query/builder.md similarity index 100% rename from modules/database/guide/database/query/builder.md rename to web/modules/database/guide/database/query/builder.md diff --git a/modules/database/guide/database/query/parameterized.md b/web/modules/database/guide/database/query/parameterized.md similarity index 100% rename from modules/database/guide/database/query/parameterized.md rename to web/modules/database/guide/database/query/parameterized.md diff --git a/modules/database/guide/database/results.md b/web/modules/database/guide/database/results.md similarity index 100% rename from modules/database/guide/database/results.md rename to web/modules/database/guide/database/results.md diff --git a/modules/kotwig/.gitignore b/web/modules/kotwig/.gitignore similarity index 100% rename from modules/kotwig/.gitignore rename to web/modules/kotwig/.gitignore diff --git a/modules/kotwig/.gitmodules b/web/modules/kotwig/.gitmodules similarity index 100% rename from modules/kotwig/.gitmodules rename to web/modules/kotwig/.gitmodules diff --git a/modules/kotwig/README.md b/web/modules/kotwig/README.md similarity index 100% rename from modules/kotwig/README.md rename to web/modules/kotwig/README.md diff --git a/modules/kotwig/classes/Kohana/Twig.php b/web/modules/kotwig/classes/Kohana/Twig.php similarity index 100% rename from modules/kotwig/classes/Kohana/Twig.php rename to web/modules/kotwig/classes/Kohana/Twig.php diff --git a/modules/kotwig/classes/Twig.php b/web/modules/kotwig/classes/Twig.php similarity index 100% rename from modules/kotwig/classes/Twig.php rename to web/modules/kotwig/classes/Twig.php diff --git a/modules/kotwig/classes/Twig/Exception.php b/web/modules/kotwig/classes/Twig/Exception.php similarity index 100% rename from modules/kotwig/classes/Twig/Exception.php rename to web/modules/kotwig/classes/Twig/Exception.php diff --git a/modules/kotwig/classes/Twig/Loader/CFS.php b/web/modules/kotwig/classes/Twig/Loader/CFS.php similarity index 100% rename from modules/kotwig/classes/Twig/Loader/CFS.php rename to web/modules/kotwig/classes/Twig/Loader/CFS.php diff --git a/modules/kotwig/config/twig.php b/web/modules/kotwig/config/twig.php similarity index 100% rename from modules/kotwig/config/twig.php rename to web/modules/kotwig/config/twig.php diff --git a/modules/kotwig/init.php b/web/modules/kotwig/init.php similarity index 100% rename from modules/kotwig/init.php rename to web/modules/kotwig/init.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Autoloader.php b/web/modules/kotwig/vendor/twig/lib/Twig/Autoloader.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Autoloader.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Autoloader.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Compiler.php b/web/modules/kotwig/vendor/twig/lib/Twig/Compiler.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Compiler.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Compiler.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/CompilerInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/CompilerInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/CompilerInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/CompilerInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Environment.php b/web/modules/kotwig/vendor/twig/lib/Twig/Environment.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Environment.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Environment.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Error.php b/web/modules/kotwig/vendor/twig/lib/Twig/Error.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Error.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Error.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Error/Loader.php b/web/modules/kotwig/vendor/twig/lib/Twig/Error/Loader.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Error/Loader.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Error/Loader.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Error/Runtime.php b/web/modules/kotwig/vendor/twig/lib/Twig/Error/Runtime.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Error/Runtime.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Error/Runtime.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Error/Syntax.php b/web/modules/kotwig/vendor/twig/lib/Twig/Error/Syntax.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Error/Syntax.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Error/Syntax.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/ExistsLoaderInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/ExistsLoaderInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/ExistsLoaderInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/ExistsLoaderInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/ExpressionParser.php b/web/modules/kotwig/vendor/twig/lib/Twig/ExpressionParser.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/ExpressionParser.php rename to web/modules/kotwig/vendor/twig/lib/Twig/ExpressionParser.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension/Core.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension/Core.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension/Core.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension/Core.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension/Debug.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension/Debug.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension/Debug.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension/Debug.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension/Escaper.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension/Escaper.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension/Escaper.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension/Escaper.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension/Optimizer.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension/Optimizer.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension/Optimizer.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension/Optimizer.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension/Sandbox.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension/Sandbox.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension/Sandbox.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension/Sandbox.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension/Staging.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension/Staging.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension/Staging.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension/Staging.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Extension/StringLoader.php b/web/modules/kotwig/vendor/twig/lib/Twig/Extension/StringLoader.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Extension/StringLoader.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Extension/StringLoader.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/ExtensionInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/ExtensionInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/ExtensionInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/ExtensionInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Filter.php b/web/modules/kotwig/vendor/twig/lib/Twig/Filter.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Filter.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Filter.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Filter/Function.php b/web/modules/kotwig/vendor/twig/lib/Twig/Filter/Function.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Filter/Function.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Filter/Function.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Filter/Method.php b/web/modules/kotwig/vendor/twig/lib/Twig/Filter/Method.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Filter/Method.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Filter/Method.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Filter/Node.php b/web/modules/kotwig/vendor/twig/lib/Twig/Filter/Node.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Filter/Node.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Filter/Node.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/FilterCallableInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/FilterCallableInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/FilterCallableInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/FilterCallableInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/FilterInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/FilterInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/FilterInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/FilterInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Function.php b/web/modules/kotwig/vendor/twig/lib/Twig/Function.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Function.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Function.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Function/Function.php b/web/modules/kotwig/vendor/twig/lib/Twig/Function/Function.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Function/Function.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Function/Function.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Function/Method.php b/web/modules/kotwig/vendor/twig/lib/Twig/Function/Method.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Function/Method.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Function/Method.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Function/Node.php b/web/modules/kotwig/vendor/twig/lib/Twig/Function/Node.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Function/Node.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Function/Node.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/FunctionCallableInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/FunctionCallableInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/FunctionCallableInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/FunctionCallableInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/FunctionInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/FunctionInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/FunctionInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/FunctionInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Lexer.php b/web/modules/kotwig/vendor/twig/lib/Twig/Lexer.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Lexer.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Lexer.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/LexerInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/LexerInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/LexerInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/LexerInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Loader/Array.php b/web/modules/kotwig/vendor/twig/lib/Twig/Loader/Array.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Loader/Array.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Loader/Array.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Loader/Chain.php b/web/modules/kotwig/vendor/twig/lib/Twig/Loader/Chain.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Loader/Chain.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Loader/Chain.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Loader/Filesystem.php b/web/modules/kotwig/vendor/twig/lib/Twig/Loader/Filesystem.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Loader/Filesystem.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Loader/Filesystem.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Loader/String.php b/web/modules/kotwig/vendor/twig/lib/Twig/Loader/String.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Loader/String.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Loader/String.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/LoaderInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/LoaderInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/LoaderInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/LoaderInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Markup.php b/web/modules/kotwig/vendor/twig/lib/Twig/Markup.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Markup.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Markup.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/AutoEscape.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/AutoEscape.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/AutoEscape.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/AutoEscape.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Block.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Block.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Block.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Block.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/BlockReference.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/BlockReference.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/BlockReference.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/BlockReference.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Body.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Body.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Body.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Body.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Do.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Do.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Do.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Do.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Embed.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Embed.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Embed.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Embed.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Array.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Array.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Array.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Array.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/AssignName.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/AssignName.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/AssignName.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/AssignName.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Add.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Add.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Add.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Add.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/And.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/And.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/And.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/And.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Concat.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Concat.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Concat.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Concat.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Div.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Div.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Div.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Div.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/EndsWith.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/EndsWith.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/EndsWith.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/EndsWith.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Equal.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Equal.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Equal.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Equal.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Greater.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Greater.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Greater.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Greater.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/In.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/In.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/In.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/In.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Less.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Less.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Less.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Less.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/LessEqual.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/LessEqual.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/LessEqual.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/LessEqual.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Matches.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Matches.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Matches.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Matches.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mod.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mod.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mod.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mod.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mul.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mul.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mul.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Mul.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotEqual.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotEqual.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotEqual.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotEqual.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotIn.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotIn.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotIn.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/NotIn.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Or.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Or.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Or.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Or.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Power.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Power.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Power.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Power.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Range.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Range.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Range.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Range.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/StartsWith.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/StartsWith.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/StartsWith.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/StartsWith.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Sub.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Sub.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Sub.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Binary/Sub.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/BlockReference.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/BlockReference.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/BlockReference.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/BlockReference.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Call.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Call.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Call.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Call.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Conditional.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Conditional.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Conditional.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Conditional.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Constant.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Constant.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Constant.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Constant.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/ExtensionReference.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/ExtensionReference.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/ExtensionReference.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/ExtensionReference.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter/Default.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter/Default.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter/Default.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Filter/Default.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Function.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Function.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Function.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Function.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/GetAttr.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/GetAttr.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/GetAttr.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/GetAttr.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/MethodCall.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/MethodCall.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/MethodCall.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/MethodCall.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Name.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Name.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Name.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Name.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Parent.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Parent.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Parent.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Parent.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/TempName.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/TempName.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/TempName.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/TempName.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Constant.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Constant.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Constant.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Constant.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Defined.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Defined.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Defined.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Defined.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Divisibleby.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Divisibleby.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Divisibleby.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Divisibleby.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Even.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Even.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Even.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Even.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Null.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Null.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Null.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Null.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Odd.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Odd.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Odd.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Odd.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Sameas.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Sameas.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Sameas.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Test/Sameas.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Neg.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Neg.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Neg.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Neg.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Not.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Not.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Not.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Not.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Pos.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Pos.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Pos.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Expression/Unary/Pos.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Flush.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Flush.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Flush.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Flush.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/For.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/For.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/For.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/For.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/ForLoop.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/ForLoop.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/ForLoop.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/ForLoop.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/If.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/If.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/If.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/If.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Import.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Import.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Import.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Import.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Include.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Include.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Include.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Include.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Macro.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Macro.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Macro.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Macro.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Module.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Module.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Module.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Module.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Print.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Print.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Print.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Print.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Sandbox.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Sandbox.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Sandbox.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Sandbox.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedModule.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedModule.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedModule.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedModule.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedPrint.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedPrint.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedPrint.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/SandboxedPrint.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Set.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Set.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Set.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Set.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/SetTemp.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/SetTemp.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/SetTemp.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/SetTemp.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Spaceless.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Spaceless.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Spaceless.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Spaceless.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Node/Text.php b/web/modules/kotwig/vendor/twig/lib/Twig/Node/Text.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Node/Text.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Node/Text.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeOutputInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeOutputInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeOutputInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeOutputInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeTraverser.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeTraverser.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeTraverser.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeTraverser.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Escaper.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Escaper.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Escaper.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Escaper.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Optimizer.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Optimizer.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Optimizer.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Optimizer.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/SafeAnalysis.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/SafeAnalysis.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/SafeAnalysis.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/SafeAnalysis.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Sandbox.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Sandbox.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Sandbox.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitor/Sandbox.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/NodeVisitorInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitorInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/NodeVisitorInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/NodeVisitorInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Parser.php b/web/modules/kotwig/vendor/twig/lib/Twig/Parser.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Parser.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Parser.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/ParserInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/ParserInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/ParserInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/ParserInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityError.php b/web/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityError.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityError.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityError.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicy.php b/web/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicy.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicy.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicy.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/SimpleFilter.php b/web/modules/kotwig/vendor/twig/lib/Twig/SimpleFilter.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/SimpleFilter.php rename to web/modules/kotwig/vendor/twig/lib/Twig/SimpleFilter.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/SimpleFunction.php b/web/modules/kotwig/vendor/twig/lib/Twig/SimpleFunction.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/SimpleFunction.php rename to web/modules/kotwig/vendor/twig/lib/Twig/SimpleFunction.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/SimpleTest.php b/web/modules/kotwig/vendor/twig/lib/Twig/SimpleTest.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/SimpleTest.php rename to web/modules/kotwig/vendor/twig/lib/Twig/SimpleTest.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Template.php b/web/modules/kotwig/vendor/twig/lib/Twig/Template.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Template.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Template.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TemplateInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/TemplateInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TemplateInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TemplateInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Test.php b/web/modules/kotwig/vendor/twig/lib/Twig/Test.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Test.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Test.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Test/Function.php b/web/modules/kotwig/vendor/twig/lib/Twig/Test/Function.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Test/Function.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Test/Function.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Test/IntegrationTestCase.php b/web/modules/kotwig/vendor/twig/lib/Twig/Test/IntegrationTestCase.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Test/IntegrationTestCase.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Test/IntegrationTestCase.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Test/Method.php b/web/modules/kotwig/vendor/twig/lib/Twig/Test/Method.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Test/Method.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Test/Method.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Test/Node.php b/web/modules/kotwig/vendor/twig/lib/Twig/Test/Node.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Test/Node.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Test/Node.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Test/NodeTestCase.php b/web/modules/kotwig/vendor/twig/lib/Twig/Test/NodeTestCase.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Test/NodeTestCase.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Test/NodeTestCase.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TestCallableInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/TestCallableInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TestCallableInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TestCallableInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TestInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/TestInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TestInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TestInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/Token.php b/web/modules/kotwig/vendor/twig/lib/Twig/Token.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/Token.php rename to web/modules/kotwig/vendor/twig/lib/Twig/Token.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/AutoEscape.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/AutoEscape.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/AutoEscape.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/AutoEscape.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Block.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Block.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Block.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Block.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Do.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Do.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Do.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Do.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Embed.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Embed.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Embed.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Embed.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Extends.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Extends.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Extends.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Extends.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Filter.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Filter.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Filter.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Filter.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Flush.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Flush.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Flush.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Flush.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/For.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/For.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/For.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/For.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/From.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/From.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/From.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/From.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/If.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/If.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/If.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/If.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Import.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Import.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Import.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Import.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Include.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Include.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Include.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Include.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Macro.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Macro.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Macro.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Macro.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Sandbox.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Sandbox.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Sandbox.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Sandbox.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Set.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Set.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Set.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Set.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Spaceless.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Spaceless.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Spaceless.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Spaceless.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Use.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Use.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParser/Use.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParser/Use.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParserBroker.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParserBroker.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParserBroker.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParserBroker.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParserBrokerInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParserBrokerInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParserBrokerInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParserBrokerInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenParserInterface.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenParserInterface.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenParserInterface.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenParserInterface.php diff --git a/modules/kotwig/vendor/twig/lib/Twig/TokenStream.php b/web/modules/kotwig/vendor/twig/lib/Twig/TokenStream.php similarity index 100% rename from modules/kotwig/vendor/twig/lib/Twig/TokenStream.php rename to web/modules/kotwig/vendor/twig/lib/Twig/TokenStream.php diff --git a/modules/kotwig/views/auth.html b/web/modules/kotwig/views/auth.html similarity index 100% rename from modules/kotwig/views/auth.html rename to web/modules/kotwig/views/auth.html diff --git a/modules/kotwig/views/auth.twig b/web/modules/kotwig/views/auth.twig similarity index 100% rename from modules/kotwig/views/auth.twig rename to web/modules/kotwig/views/auth.twig diff --git a/modules/unittest/README.markdown b/web/modules/unittest/README.markdown similarity index 100% rename from modules/unittest/README.markdown rename to web/modules/unittest/README.markdown diff --git a/modules/unittest/bootstrap.php b/web/modules/unittest/bootstrap.php similarity index 100% rename from modules/unittest/bootstrap.php rename to web/modules/unittest/bootstrap.php diff --git a/modules/unittest/bootstrap_all_modules.php b/web/modules/unittest/bootstrap_all_modules.php similarity index 100% rename from modules/unittest/bootstrap_all_modules.php rename to web/modules/unittest/bootstrap_all_modules.php diff --git a/modules/unittest/classes/Kohana/Unittest/Database/TestCase.php b/web/modules/unittest/classes/Kohana/Unittest/Database/TestCase.php similarity index 100% rename from modules/unittest/classes/Kohana/Unittest/Database/TestCase.php rename to web/modules/unittest/classes/Kohana/Unittest/Database/TestCase.php diff --git a/modules/unittest/classes/Kohana/Unittest/Helpers.php b/web/modules/unittest/classes/Kohana/Unittest/Helpers.php similarity index 100% rename from modules/unittest/classes/Kohana/Unittest/Helpers.php rename to web/modules/unittest/classes/Kohana/Unittest/Helpers.php diff --git a/modules/unittest/classes/Kohana/Unittest/TestCase.php b/web/modules/unittest/classes/Kohana/Unittest/TestCase.php similarity index 100% rename from modules/unittest/classes/Kohana/Unittest/TestCase.php rename to web/modules/unittest/classes/Kohana/Unittest/TestCase.php diff --git a/modules/unittest/classes/Kohana/Unittest/TestSuite.php b/web/modules/unittest/classes/Kohana/Unittest/TestSuite.php similarity index 100% rename from modules/unittest/classes/Kohana/Unittest/TestSuite.php rename to web/modules/unittest/classes/Kohana/Unittest/TestSuite.php diff --git a/modules/unittest/classes/Kohana/Unittest/Tests.php b/web/modules/unittest/classes/Kohana/Unittest/Tests.php similarity index 100% rename from modules/unittest/classes/Kohana/Unittest/Tests.php rename to web/modules/unittest/classes/Kohana/Unittest/Tests.php diff --git a/modules/unittest/classes/Unittest/Database/TestCase.php b/web/modules/unittest/classes/Unittest/Database/TestCase.php similarity index 100% rename from modules/unittest/classes/Unittest/Database/TestCase.php rename to web/modules/unittest/classes/Unittest/Database/TestCase.php diff --git a/modules/unittest/classes/Unittest/Helpers.php b/web/modules/unittest/classes/Unittest/Helpers.php similarity index 100% rename from modules/unittest/classes/Unittest/Helpers.php rename to web/modules/unittest/classes/Unittest/Helpers.php diff --git a/modules/unittest/classes/Unittest/TestCase.php b/web/modules/unittest/classes/Unittest/TestCase.php similarity index 100% rename from modules/unittest/classes/Unittest/TestCase.php rename to web/modules/unittest/classes/Unittest/TestCase.php diff --git a/modules/unittest/classes/Unittest/TestSuite.php b/web/modules/unittest/classes/Unittest/TestSuite.php similarity index 100% rename from modules/unittest/classes/Unittest/TestSuite.php rename to web/modules/unittest/classes/Unittest/TestSuite.php diff --git a/modules/unittest/classes/Unittest/Tests.php b/web/modules/unittest/classes/Unittest/Tests.php similarity index 100% rename from modules/unittest/classes/Unittest/Tests.php rename to web/modules/unittest/classes/Unittest/Tests.php diff --git a/modules/unittest/composer.json b/web/modules/unittest/composer.json similarity index 100% rename from modules/unittest/composer.json rename to web/modules/unittest/composer.json diff --git a/modules/unittest/config/unittest.php b/web/modules/unittest/config/unittest.php similarity index 100% rename from modules/unittest/config/unittest.php rename to web/modules/unittest/config/unittest.php diff --git a/modules/unittest/config/userguide.php b/web/modules/unittest/config/userguide.php similarity index 100% rename from modules/unittest/config/userguide.php rename to web/modules/unittest/config/userguide.php diff --git a/modules/unittest/example.phpunit.xml b/web/modules/unittest/example.phpunit.xml similarity index 100% rename from modules/unittest/example.phpunit.xml rename to web/modules/unittest/example.phpunit.xml diff --git a/modules/unittest/guide/unittest/index.md b/web/modules/unittest/guide/unittest/index.md similarity index 100% rename from modules/unittest/guide/unittest/index.md rename to web/modules/unittest/guide/unittest/index.md diff --git a/modules/unittest/guide/unittest/menu.md b/web/modules/unittest/guide/unittest/menu.md similarity index 100% rename from modules/unittest/guide/unittest/menu.md rename to web/modules/unittest/guide/unittest/menu.md diff --git a/modules/unittest/guide/unittest/mockobjects.md b/web/modules/unittest/guide/unittest/mockobjects.md similarity index 100% rename from modules/unittest/guide/unittest/mockobjects.md rename to web/modules/unittest/guide/unittest/mockobjects.md diff --git a/modules/unittest/guide/unittest/testing.md b/web/modules/unittest/guide/unittest/testing.md similarity index 100% rename from modules/unittest/guide/unittest/testing.md rename to web/modules/unittest/guide/unittest/testing.md diff --git a/modules/unittest/guide/unittest/testing_workflows.md b/web/modules/unittest/guide/unittest/testing_workflows.md similarity index 100% rename from modules/unittest/guide/unittest/testing_workflows.md rename to web/modules/unittest/guide/unittest/testing_workflows.md diff --git a/modules/unittest/guide/unittest/troubleshooting.md b/web/modules/unittest/guide/unittest/troubleshooting.md similarity index 100% rename from modules/unittest/guide/unittest/troubleshooting.md rename to web/modules/unittest/guide/unittest/troubleshooting.md diff --git a/modules/unittest/tests.php b/web/modules/unittest/tests.php similarity index 100% rename from modules/unittest/tests.php rename to web/modules/unittest/tests.php