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