diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 81eb87b52e8f35d3607fcd1205502fd8d7c79da2..ca648782a4011b70123dc5eaa0f970669cb9c32d 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -1,6 +1,11 @@ DELIMITER // DROP PROCEDURE IF EXISTS GetCurSemesterInfo// +DROP FUNCTION IF EXISTS GetGradeID// +DROP FUNCTION IF EXISTS SetCurSemesterID// +DROP FUNCTION IF EXISTS SetHashKey// +DROP PROCEDURE IF EXISTS GetCurSemesterID// +DROP PROCEDURE IF EXISTS GetHashKey// # ------------------------------------------------------------------------------------------- # Label: abbreviations @@ -18,17 +23,17 @@ DROP PROCEDURE IF EXISTS GetCurSemesterInfo// # "SetRate" stored procedure can change isLocked flag DROP FUNCTION IF EXISTS InternalIsMapLocked// CREATE FUNCTION `InternalIsMapLocked` - (`pDisciplineID` INT) RETURNS boolean + (`pDisciplineID` INT) RETURNS BOOLEAN NO SQL BEGIN - RETURN (EXISTS(SELECT * FROM `disciplines` WHERE disciplines.ID = pDisciplineID)); + RETURN EXISTS(SELECT * FROM `disciplines` WHERE disciplines.ID = pDisciplineID); END // # check, that student really take this course DROP FUNCTION IF EXISTS InternalIsStudentAttached// CREATE FUNCTION `InternalIsStudentAttached` - (`pStudentID` INT, `pDisciplineID` INT) RETURNS boolean + (`pStudentID` INT, `pDisciplineID` INT) RETURNS BOOLEAN NO SQL BEGIN DECLARE vChecker boolean; @@ -58,33 +63,22 @@ END // # check, that teacher teach this course drop function if exists InternalIsTeacherBinded// CREATE FUNCTION `InternalIsTeacherBinded` - ( `pTeacherID` INT, `pDisciplineID` INT) RETURNS boolean + ( `pTeacherID` INT, `pDisciplineID` INT) RETURNS BOOLEAN NO SQL BEGIN - DECLARE vChecker boolean DEFAULT FALSE; - - SELECT (disciplines_teachers.ID IS NOT NULL AND disciplines_teachers.ID > 0) - INTO vChecker - FROM `disciplines_teachers` - WHERE disciplines_teachers.TeacherID = pTeacherID AND - disciplines_teachers.DisciplineID = pDisciplineID - LIMIT 1; - RETURN vChecker; + RETURN EXISTS (SELECT * FROM `disciplines_teachers` + WHERE disciplines_teachers.TeacherID = pTeacherID AND + disciplines_teachers.DisciplineID = pDisciplineID); END // DROP FUNCTION IF EXISTS InternalIsTeacherAuthor// CREATE FUNCTION `InternalIsTeacherAuthor` - ( `pTeacherID` INT, `pDisciplineID` INT) RETURNS boolean + ( `pTeacherID` INT, `pDisciplineID` INT) RETURNS BOOLEAN NO SQL -BEGIN - DECLARE vChecker boolean DEFAULT FALSE; - SELECT (disciplines.AuthorID = pTeacherID) - INTO vChecker - FROM `disciplines` - WHERE disciplines.ID = pDisciplineID - LIMIT 1; - RETURN vChecker; +BEGIN + RETURN EXISTS (SELECT * FROM `disciplines` + WHERE disciplines.ID = pDisciplineID AND disciplines.AuthorID = pTeacherID); END // @@ -99,8 +93,8 @@ BEGIN SELECT SUM(submodules.MaxRate) INTO vMaxRate FROM `submodules` - INNER JOIN `modules` ON submodules.ModuleID = modules.ID AND - (modules.Type = 'regular' OR modules.Type = 'exam') + INNER JOIN `modules` + ON submodules.ModuleID = modules.ID AND (modules.Type = 'regular' OR modules.Type = 'exam') WHERE modules.DisciplineID = pDisciplineID; RETURN vMaxRate; @@ -256,7 +250,7 @@ END // # check, if any module is created DROP FUNCTION IF EXISTS InternalIsMapCreated// CREATE FUNCTION `InternalIsMapCreated` - ( `pDisciplineID` INT) RETURNS int(11) + ( `pDisciplineID` INT) RETURNS int(11) NO SQL BEGIN DECLARE vRes INT DEFAULT -1; @@ -282,9 +276,9 @@ CREATE FUNCTION `InternalNotify` ( `AccountID` INT NO SQL BEGIN UPDATE `accounts` - SET accounts.Notification = 1 - WHERE accounts.ID = AccountID - LIMIT 1; + SET accounts.Notification = 1 + WHERE accounts.ID = AccountID + LIMIT 1; RETURN 0; END // @@ -297,31 +291,34 @@ END // # ------------------------------------------------------------------------------------------- -DROP FUNCTION IF EXISTS SetHashKey// -CREATE FUNCTION `SetHashKey` - (`pValue` VARCHAR(300) charset utf8) RETURNS int(11) +DROP FUNCTION IF EXISTS SetSettings// +CREATE FUNCTION `SetSettings` + (`pKey` VARCHAR(50) CHARSET utf8, `pVal` INT, `pValS` VARCHAR(300) CHARSET utf8 + ) RETURNS int(11) NO SQL BEGIN - UPDATE `general_settings` - SET general_settings.ValS = pValue - WHERE general_settings.ID = 2 - LIMIT 1; - RETURN 0; -END // - + INSERT INTO `general_settings` + (Val, ValS, Name) VALUES(pVal, pValS, pKey) + ON DUPLICATE KEY UPDATE + general_settings.Val = pVal, + general_settings.ValS = pValS; + RETURN 0; +END// -DROP FUNCTION IF EXISTS GetHashKey// -CREATE FUNCTION `GetHashKey` ( ) RETURNS varchar(300) CHARSET utf8 +DROP PROCEDURE IF EXISTS GetSettings// +CREATE PROCEDURE `GetSettings`(IN `pKey` VARCHAR(50) CHARSET utf8) NO SQL BEGIN - RETURN( SELECT general_settings.ValS - FROM `general_settings` - WHERE general_settings.ID = 2 - LIMIT 1); + SELECT general_settings.* + FROM `general_settings` + WHERE general_settings.Name = pKey + LIMIT 1; END // + + DROP FUNCTION IF EXISTS SetBitmaskByPagename// CREATE FUNCTION `SetBitmaskByPagename` (`pPagename` TEXT CHARSET utf8, `pMask` INT) RETURNS int(11) @@ -355,17 +352,6 @@ END // # ------------------------------------------------------------------------------------------- -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 SetSemesterID// CREATE FUNCTION `SetSemesterID` (`SemesterID` INT) RETURNS int(11) @@ -379,25 +365,6 @@ END // -DROP FUNCTION IF EXISTS SetCurSemesterID// -CREATE FUNCTION `SetCurSemesterID` (`pSemesterID` INT) RETURNS int(11) - NO SQL -BEGIN - DECLARE vChecker BOOLEAN; - SET vChecker = EXISTS(SELECT * FROM `semesters` WHERE semesters.ID = pSemesterID); - IF !vChecker THEN - RETURN -1; - END IF; - - INSERT INTO `general_settings` - (ID, Val) VALUES(1, pSemesterID) - ON DUPLICATE KEY UPDATE - general_settings.Val = pSemesterID; - RETURN 0; -END // - - - DROP FUNCTION IF EXISTS GetSemesterID// CREATE FUNCTION `GetSemesterID` (`pYear` INT, `pNum` INT) RETURNS int(11) NO SQL @@ -512,25 +479,6 @@ END // # ------------------------------------------------------------------------------------------- -DROP FUNCTION IF EXISTS GetGradeID// -CREATE FUNCTION `GetGradeID` - (`pGradeNum` INT, `pDegree` VARCHAR(30) charset utf8) RETURNS int(11) - # enum('bachelor','master','specialist') - NO SQL -BEGIN - DECLARE vResult INT DEFAULT -1; - - SELECT grades.ID - INTO vResult - FROM `grades` - WHERE grades.Num = pGradeNum AND - grades.Degree = pDegree - LIMIT 1; - - RETURN vResult; -END // - - DROP PROCEDURE IF EXISTS GetGrades// CREATE PROCEDURE `GetGrades` ( ) NO SQL @@ -635,8 +583,8 @@ END // DROP FUNCTION IF EXISTS CreateSubject// CREATE FUNCTION `CreateSubject` ( `pFacultyID` INT, - `pSubjectName` VARCHAR(200) charset utf8, - `pSubjectAbbr` VARCHAR(20) charset utf8 + `pSubjectName` VARCHAR(200) CHARSET utf8, + `pSubjectAbbr` VARCHAR(20) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -1528,7 +1476,7 @@ END // DROP FUNCTION IF EXISTS OrderModuleTypesForSession// CREATE FUNCTION `OrderModuleTypesForSession` - ( IN `pModuleType` INT ) RETURNS INT(3) + (`pModuleType` INT ) RETURNS INT(3) NO SQL BEGIN DECLARE vRes INT DEFAULT 0; @@ -1547,24 +1495,24 @@ END // DROP PROCEDURE IF EXISTS GetMapForStudentExam// CREATE PROCEDURE `GetMapForStudentExam` ( IN `pStudentID` INT, IN `pDisciplineID` INT) -NO SQL - BEGIN - SELECT view_roadmap.ModuleID, - view_roadmap.ModuleName, - view_roadmap.SubmoduleID, - view_roadmap.SubmoduleName, - view_roadmap.SubmoduleRate AS 'MaxRate', - view_roadmap.SubmoduleType, - rating_table.Rate, - rating_table.Date, - view_roadmap.ModuleType - FROM `view_roadmap` - LEFT JOIN `rating_table` ON rating_table.SubmoduleID = view_roadmap.SubmoduleID AND - rating_table.StudentID = pStudentID - WHERE view_roadmap.DisciplineID = pDisciplineID - ORDER BY view_roadmap.ModuleOrderNum ASC, - view_roadmap.SubmoduleOrderNum ASC; - END // + NO SQL +BEGIN + SELECT view_roadmap.ModuleID, + view_roadmap.ModuleName, + view_roadmap.SubmoduleID, + view_roadmap.SubmoduleName, + view_roadmap.SubmoduleRate AS 'MaxRate', + view_roadmap.SubmoduleType, + rating_table.Rate, + rating_table.Date, + view_roadmap.ModuleType + FROM `view_roadmap` + LEFT JOIN `rating_table` ON rating_table.SubmoduleID = view_roadmap.SubmoduleID AND + rating_table.StudentID = pStudentID + WHERE view_roadmap.DisciplineID = pDisciplineID + ORDER BY view_roadmap.ModuleOrderNum ASC, + view_roadmap.SubmoduleOrderNum ASC; +END // @@ -1656,7 +1604,7 @@ END // DROP FUNCTION IF EXISTS AddDiscipline// CREATE FUNCTION `AddDiscipline` ( `pTeacherID` INT, `pGradeID` INT, `pSubjectID` INT, - `pExamType` VARCHAR(30) charset utf8, + `pExamType` VARCHAR(30) CHARSET utf8, `pLectureCount` INT, `pPracticeCount` INT, `pLabCount` INT, `pFacultyID` INT ) RETURNS int(11) @@ -1746,7 +1694,7 @@ END // DROP FUNCTION IF EXISTS ChangeDisciplineControl// CREATE FUNCTION `ChangeDisciplineControl` ( `pTeacherID` INT, `pDisciplineID` INT, - `pExamType` VARCHAR(30) charset utf8 + `pExamType` VARCHAR(30) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -2203,7 +2151,7 @@ END // DROP FUNCTION IF EXISTS ChangeModuleName// CREATE FUNCTION `ChangeModuleName` ( `pTeacherID` INT, `pModuleID` INT, - `pName` VARCHAR(200) charset utf8 + `pName` VARCHAR(200) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -2235,7 +2183,7 @@ END // DROP FUNCTION IF EXISTS AddModule// CREATE FUNCTION `AddModule` ( `pTeacherID` INT, `pDisciplineID` INT, - `pName` VARCHAR(200) charset utf8 + `pName` VARCHAR(200) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -2564,7 +2512,7 @@ DROP FUNCTION IF EXISTS ChangeSubmoduleMaxAndControl// CREATE FUNCTION `ChangeSubmoduleMaxAndControl` ( `TeacherID` INT, `SubmoduleID` INT, `MaxRate` INT, - `ControlType` VARCHAR(30) charset utf8 + `ControlType` VARCHAR(30) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -2601,7 +2549,7 @@ END // DROP FUNCTION IF EXISTS ChangeSubmoduleName// CREATE FUNCTION `ChangeSubmoduleName` ( `TeacherID` INT, `SubmoduleID` INT, - `Name` VARCHAR(200) charset utf8 + `Name` VARCHAR(200) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -2636,7 +2584,7 @@ END // DROP FUNCTION IF EXISTS ChangeSubmoduleDescription// CREATE FUNCTION `ChangeSubmoduleDescription` ( `TeacherID` INT, `SubmoduleID` INT, - `Description` VARCHAR(200) charset utf8 + `Description` VARCHAR(200) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -2720,9 +2668,9 @@ END // DROP FUNCTION IF EXISTS AddSubmodule// CREATE FUNCTION `AddSubmodule` ( `pTeacherID` INT, `pModuleID` INT, `pMaxRate` INT, - `pName` VARCHAR(200) charset utf8, - `pDescription` VARCHAR(200) charset utf8, - `pControlType` VARCHAR(30) charset utf8 + `pName` VARCHAR(200) CHARSET utf8, + `pDescription` VARCHAR(200) CHARSET utf8, + `pControlType` VARCHAR(30) CHARSET utf8 ) RETURNS int(11) NO SQL BEGIN @@ -2854,7 +2802,7 @@ CREATE FUNCTION `CalculateMaxRateForExtra` ( `pSubmoduleID` INT, `pStudentID` INT) RETURNS int(11) NO SQL BEGIN - DECLARE vExamType INT; # enum('exam', 'credit');# utf8_general_ci; + DECLARE vExamType INT; # enum('exam', 'credit');# utf8; DECLARE vLim INT; DECLARE vResult INT DEFAULT -1; @@ -2987,7 +2935,7 @@ END // DROP PROCEDURE IF EXISTS GetRequests// CREATE PROCEDURE `GetRequests` ( IN `pOffsetN` INT, IN `pCountN` INT, - IN `pAccountID` INT, IN `pStatus` VARCHAR(20) charset utf8) + IN `pAccountID` INT, IN `pStatus` VARCHAR(20) CHARSET utf8) NO SQL BEGIN SELECT requests.ID, @@ -3005,7 +2953,7 @@ END // DROP FUNCTION IF EXISTS SetRequestStatus// CREATE FUNCTION `SetRequestStatus` -(`pRequestID` INT, `pStatus` VARCHAR(20) charset utf8) RETURNS int(11) +(`pRequestID` INT, `pStatus` VARCHAR(20) CHARSET utf8) RETURNS int(11) NO SQL BEGIN UPDATE `requests` @@ -3018,8 +2966,8 @@ END// DROP FUNCTION IF EXISTS CreateRequest// CREATE FUNCTION `CreateRequest` -( `pAccountID` INT, `pTitle` VARCHAR(50) charset utf8, - `pDescription` TEXT charset utf8) RETURNS int(11) +( `pAccountID` INT, `pTitle` VARCHAR(50) CHARSET utf8, + `pDescription` TEXT CHARSET utf8) RETURNS int(11) NO SQL BEGIN INSERT INTO `requests` @@ -3034,7 +2982,7 @@ END// # DROP FUNCTION IF EXISTS SetRequestStatus// # CREATE FUNCTION `SetRequestStatus` ( `RequestID` INT, -# `vStatus` VARCHAR(20) charset utf8 +# `vStatus` VARCHAR(20) CHARSET utf8 # ) RETURNS int(11) # NO SQL # BEGIN @@ -3096,8 +3044,8 @@ END// # DROP FUNCTION IF EXISTS RequestReport// # CREATE FUNCTION `RequestReport` ( `AccountID` INT, -# `vTitle` VARCHAR(50) charset utf8, -# `vDescription` TEXT charset utf8 +# `vTitle` VARCHAR(50) CHARSET utf8, +# `vDescription` TEXT CHARSET utf8 # ) RETURNS int(11) # NO SQL # BEGIN @@ -3174,8 +3122,8 @@ END// DROP FUNCTION IF EXISTS CreateRecoveryToken// CREATE FUNCTION `CreateRecoveryToken` -( `pAccountOrEMail` VARCHAR(255) charset utf8, - `pToken` VARCHAR(100) charset utf8) RETURNS int(11) +( `pAccountOrEMail` VARCHAR(255) CHARSET utf8, + `pToken` VARCHAR(100) CHARSET utf8) RETURNS int(11) NO SQL BEGIN DECLARE vChecker INT DEFAULT 0; @@ -3209,7 +3157,7 @@ END// DROP FUNCTION IF EXISTS UseRecoveryToken// CREATE FUNCTION `UseRecoveryToken` -( `pToken` VARCHAR(100) charset utf8) RETURNS int(11) +( `pToken` VARCHAR(100) CHARSET utf8) RETURNS int(11) NO SQL BEGIN DECLARE vChecker INT DEFAULT -1; @@ -3234,7 +3182,7 @@ END// DROP PROCEDURE IF EXISTS GetRecoveryInfoByToken// CREATE PROCEDURE `GetRecoveryInfoByToken` -(IN `pToken` VARCHAR(100) charset utf8) +(IN `pToken` VARCHAR(100) CHARSET utf8) NO SQL BEGIN SELECT recovery_tokens.ID, @@ -3251,7 +3199,7 @@ END // DROP PROCEDURE IF EXISTS GetRecoveryInfoByEMail// CREATE PROCEDURE `GetRecoveryInfoByEMail` -(IN `pEMail` VARCHAR(255) charset utf8) +(IN `pEMail` VARCHAR(255) CHARSET utf8) NO SQL BEGIN SELECT recovery_tokens.ID, diff --git a/db/Structure.sql b/db/Structure.sql index ca66494a2309620e44c3ff6ae3e15aa8d8f497ae..18cd400ee24fd9d99156b09919cd042e3cc6b984 100644 --- a/db/Structure.sql +++ b/db/Structure.sql @@ -30,11 +30,11 @@ SET time_zone = "+00:00"; CREATE TABLE IF NOT EXISTS `accounts` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Login` varchar(50) DEFAULT NULL, - `Password` varchar(64) DEFAULT NULL, - `EMail` varchar(255) DEFAULT NULL, + `Login` varchar(50) CHARACTER SET utf8_general_ci DEFAULT NULL, + `Password` varchar(64) CHARACTER SET utf8_general_ci DEFAULT NULL, + `EMail` varchar(255) CHARACTER SET utf8_general_ci DEFAULT NULL, `UserRoleID` int(11) NOT NULL, - `ActivationCode` varchar(40) DEFAULT NULL, + `ActivationCode` varchar(40) CHARACTER SET utf8_general_ci DEFAULT NULL, `IsEnabled` tinyint(1) NOT NULL DEFAULT '1', `UserAgent` text, `Notification` int(11) NOT NULL DEFAULT '0', @@ -53,7 +53,7 @@ CREATE TABLE IF NOT EXISTS `accounts` ( CREATE TABLE IF NOT EXISTS `job_positions` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(200) NOT NULL, + `Name` varchar(200) CHARACTER SET utf8_general_ci NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `Name` (`Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -66,7 +66,7 @@ CREATE TABLE IF NOT EXISTS `job_positions` ( CREATE TABLE IF NOT EXISTS `departments` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(200) NULL, + `Name` varchar(200) CHARACTER SET utf8_general_ci NULL, `FacultyID` int(11) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `Name` (`Name`,`FacultyID`), @@ -160,8 +160,8 @@ CREATE TABLE IF NOT EXISTS `disciplines_teachers` ( CREATE TABLE IF NOT EXISTS `faculties` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(100) NOT NULL, - `Abbr` varchar(20) NOT NULL, + `Name` varchar(100) CHARACTER SET utf8_general_ci NOT NULL, + `Abbr` varchar(20) CHARACTER SET utf8_general_ci NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `Name` (`Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -175,7 +175,8 @@ CREATE TABLE IF NOT EXISTS `faculties` ( CREATE TABLE IF NOT EXISTS `general_settings` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Val` int(11) DEFAULT NULL, - `ValS` varchar(300) DEFAULT NULL, + `ValS` varchar(300) CHARACTER SET utf8_general_ci DEFAULT NULL, + `Name` varchar(50) CHARACTER SET utf8_general_ci NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -227,7 +228,7 @@ CREATE TABLE IF NOT EXISTS `logs_signin` ( CREATE TABLE IF NOT EXISTS `modules` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(200) NOT NULL, + `Name` varchar(200) CHARACTER SET utf8_general_ci NOT NULL, `OrderNum` int(11) NOT NULL, `DisciplineID` int(11) NOT NULL, `Type` enum('regular','exam', 'bonus', 'extra') NOT NULL DEFAULT 'regular', @@ -244,7 +245,7 @@ CREATE TABLE IF NOT EXISTS `modules` ( CREATE TABLE IF NOT EXISTS `page_access` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Pagename` text NOT NULL, + `Pagename` text CHARACTER SET utf8_general_ci NOT NULL, `Bitmask` int(11) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -279,8 +280,8 @@ CREATE TABLE IF NOT EXISTS `rating_table` ( CREATE TABLE IF NOT EXISTS `requests` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `AccountID` int(11) DEFAULT NULL, - `Title` varchar(50) NULL DEFAULT NULL, - `Description` text NOT NULL, + `Title` varchar(50) CHARACTER SET utf8_general_ci NULL DEFAULT NULL, + `Description` text CHARACTER SET utf8_general_ci NOT NULL, `Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `Status` enum('opened','processed','closed') NOT NULL DEFAULT 'opened', PRIMARY KEY (`ID`), @@ -346,9 +347,9 @@ CREATE TABLE IF NOT EXISTS `semesters` ( CREATE TABLE IF NOT EXISTS `specializations` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(50) NULL, - `Abbr` varchar(20) NULL, - `Code` varchar(12) NULL, + `Name` varchar(50) CHARACTER SET utf8_general_ci NULL, + `Abbr` varchar(20) CHARACTER SET utf8_general_ci NULL, + `Code` varchar(12) CHARACTER SET utf8_general_ci NULL, `FacultyID` int(11) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `Name` (`Name`,`FacultyID`), @@ -365,9 +366,9 @@ CREATE TABLE IF NOT EXISTS `students` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `GroupID` int(11) NOT NULL, `AccountID` int(11) NOT NULL, - `LastName` varchar(30) NOT NULL, - `FirstName` varchar(30) NOT NULL, - `SecondName` varchar(30) DEFAULT NULL, + `LastName` varchar(30) CHARACTER SET utf8_general_ci NOT NULL, + `FirstName` varchar(30) CHARACTER SET utf8_general_ci NOT NULL, + `SecondName` varchar(30) CHARACTER SET utf8_general_ci DEFAULT NULL, PRIMARY KEY (`ID`), KEY `GroupID` (`GroupID`), KEY `AccountID` (`AccountID`) @@ -384,7 +385,7 @@ CREATE TABLE IF NOT EXISTS `study_groups` ( `GradeID` int(11) NOT NULL, `GroupNum` int(11) NOT NULL, `SpecializationID` int(11) NOT NULL, - `Name` varchar(50) DEFAULT NULL, + `Name` varchar(50) CHARACTER SET utf8_general_ci DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `GradeID_2` (`GradeID`,`GroupNum`,`SpecializationID`), KEY `GradeID` (`GradeID`), @@ -399,8 +400,8 @@ CREATE TABLE IF NOT EXISTS `study_groups` ( CREATE TABLE IF NOT EXISTS `subjects` ( `ID` int(11) NOT NULL AUTO_INCREMENT, - `Name` varchar(200) NOT NULL, - `Abbr` varchar(20) DEFAULT NULL, + `Name` varchar(200) CHARACTER SET utf8_general_ci NOT NULL, + `Abbr` varchar(20) CHARACTER SET utf8_general_ci DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `Name` (`Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -434,7 +435,7 @@ CREATE TABLE IF NOT EXISTS `submodules` ( `MaxRate` int(11) NOT NULL, `OrderNum` int(11) NOT NULL, `Name` varchar(200) NOT NULL, - `Description` varchar(200) DEFAULT NULL, + `Description` varchar(200) CHARACTER SET utf8_general_ci DEFAULT NULL, `IsUsed` tinyint(1) NOT NULL DEFAULT 0, `Type` enum('CurrentControl','LandmarkControl') NOT NULL DEFAULT 'CurrentControl', PRIMARY KEY (`ID`), @@ -468,9 +469,9 @@ CREATE TABLE IF NOT EXISTS `grades` ( 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, + `LastName` varchar(30) CHARACTER SET utf8_general_ci NOT NULL, + `FirstName` varchar(30) CHARACTER SET utf8_general_ci NOT NULL, + `SecondName` varchar(30) CHARACTER SET utf8_general_ci DEFAULT NULL, `JobPositionID` int(11) NOT NULL, `DepartmentID` int(11) NULL, `AccountID` int(11) NOT NULL, @@ -486,10 +487,11 @@ CREATE TABLE IF NOT EXISTS `teachers` ( -- Структура таблицы `user_roles` -- +# TODO: just name CREATE TABLE IF NOT EXISTS `user_roles` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Type` enum('student','teacher') NOT NULL, - `RoleName` varchar(30) NOT NULL, + `RoleName` varchar(30) CHARACTER SET utf8_general_ci NOT NULL, `Mark` int(11) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; @@ -505,7 +507,7 @@ CREATE TABLE IF NOT EXISTS `recovery_tokens` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `AccountID` int(11) NOT NULL, `Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - `Token` varchar(100) NOT NULL, + `Token` varchar(100) CHARACTER SET utf8_general_ci NOT NULL, `IsUsed` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `AccountID` (`AccountID`), diff --git a/db/fix.sql b/db/fix.sql index a6602e30367bb4c71760a35791c515959320063c..a65baddf95fa3cf19e9d34955e231d45e08ffd06 100644 --- a/db/fix.sql +++ b/db/fix.sql @@ -24,11 +24,16 @@ ADD CONSTRAINT `students_ibfk_1` FOREIGN KEY (`GroupID`) REFERENCES `study_group ALTER TABLE `page_access` -CHANGE `Pagename` `Pagename` VARCHAR( 150 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ; +CHANGE `Pagename` `Pagename` VARCHAR(150) CHARACTER SET utf8_general_ci NOT NULL ; ALTER TABLE `page_access` ADD UNIQUE (`Pagename`); - ALTER TABLE `accounts` ADD UNIQUE (`ActivationCode`); +ALTER TABLE `general_settings` ADD `Name` VARCHAR(50) CHARACTER SET utf8_general_ci NOT NULL ; +UPDATE `general_settings` SET general_settings.Name = 'SemesterID' WHERE general_settings.ID = 1; +UPDATE `general_settings` SET general_settings.Name = 'HashKey' WHERE general_settings.ID = 2; +ALTER TABLE `general_settings` ADD UNIQUE (`Name`); + + diff --git a/~dev_rating/application/classes/Model/Admin/Students.php b/~dev_rating/application/classes/Model/Admin/Students.php index 03222f0317c848646a7b5b54395b2bbaba2d0cc7..bb6e02d9e5883397a686ca61b84d88e9876978f5 100644 --- a/~dev_rating/application/classes/Model/Admin/Students.php +++ b/~dev_rating/application/classes/Model/Admin/Students.php @@ -8,11 +8,6 @@ class Model_Admin_Students extends Model $sql = "CALL `GetStudyGroups`('$gradeNum', '$facultyID'); "; return DB::query(Database::SELECT, $sql)->execute(); } - - public function getGradeID($gradeNum, $degree) - { - $sql = "SELECT `GetGradeID`('$gradeNum', '$degree') AS `ID`; "; - return DB::query(Database::SELECT, $sql)->execute()->get('ID'); - } + } \ No newline at end of file diff --git a/~dev_rating/modules/account/classes/Model/Kohana/Account.php b/~dev_rating/modules/account/classes/Model/Kohana/Account.php index 76326a0dfda885b34d31c626f3c2eebc9ccf7c01..b3a8c16e457d8282a21ea47d22b5386319b4e775 100644 --- a/~dev_rating/modules/account/classes/Model/Kohana/Account.php +++ b/~dev_rating/modules/account/classes/Model/Kohana/Account.php @@ -4,16 +4,16 @@ class Model_Kohana_Account extends Model { public function setHashKey($key) { - $sql = "SELECT `SetHashKey`('$key') AS `Key`;"; + $sql = "SELECT `SetSettings`('HashKey', '', '$key') AS `Key`;"; $res = DB::query(Database::SELECT, $sql)->execute(); return $res->get('Key'); } public function getHashKey() { - $sql = "SELECT `GetHashKey`() AS `Key`;"; + $sql = "CALL `GetSettings`('HashKey');"; $key = DB::query(Database::SELECT, $sql)->execute(); - return $key->get('Key'); + return $key->get('ValS'); } public function checkAuth($login, $password) { @@ -163,10 +163,11 @@ class Model_Kohana_Account extends Model public function GetCurSemesterID() { - $sql = "SELECT `GetCurSemesterID`() AS `Num`; "; + $sql = "CALL `GetSettings`('SemesterID');"; $res = DB::query(Database::SELECT, $sql)->execute(); + $id = NULL; foreach ($res as $value) { - $id = $value['Num']; + $id = $value['Val']; } return $id; } @@ -175,6 +176,7 @@ class Model_Kohana_Account extends Model { $sql = "SELECT `SetSemesterID`('$semesterID') AS `Num`; "; $res = DB::query(Database::SELECT, $sql)->execute(); + $id = NULL; foreach ($res as $value) { $id = $value['Num']; }