diff --git a/db/StoredFunctions.sql b/db/StoredFunctions.sql index 50cba8c3aff4dab888aba0ca0f239c7aa1a63fc3..fa40dbb9c93322f12694c6e7db698235d45b80a3 100644 --- a/db/StoredFunctions.sql +++ b/db/StoredFunctions.sql @@ -856,7 +856,7 @@ CREATE FUNCTION `BindGroup` NO SQL BEGIN DECLARE vChecker INT DEFAULT -1; - DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; + DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -3; # 1. check if AccessedTeacher is author IF NOT InternalIsTeacherAuthor(pTeacherID, pDisciplineID) OR @@ -1029,7 +1029,7 @@ CREATE FUNCTION `UnbindTeacher` NO SQL BEGIN IF pAuthorID = pBindingTeacher OR - NOT InternalIsTeacherAuthor(pBindingTeacher, pDisciplineID) + NOT InternalIsTeacherAuthor(pAuthorID, pDisciplineID) THEN RETURN -1; END IF; @@ -1037,7 +1037,7 @@ BEGIN DELETE FROM `disciplines_teachers` WHERE disciplines_teachers.DisciplineID = pDisciplineID AND disciplines_teachers.TeacherID = pBindingTeacher; - RETURN 0; + RETURN ROW_COUNT()-1; END // @@ -1246,7 +1246,7 @@ BEGIN IF NOT InternalIsTeacherAuthor(pTeacherID, pDisciplineID) OR InternalIsMapLocked(pDisciplineID) THEN - RETURN -1; + RETURN -2; END IF; # get free orderNum @@ -1254,6 +1254,9 @@ BEGIN FROM `modules` WHERE modules.DisciplineID = pDisciplineID AND modules.Type = 'regular' LIMIT 1; + IF vOrderNum IS NULL THEN + SET vOrderNum = 1; + END IF; INSERT INTO `modules` (Name, OrderNum, DisciplineID ) @@ -1580,11 +1583,11 @@ BEGIN UPDATE `submodules` - SET submodules.MaxRate = MaxRate, + SET submodules.MaxRate = pMaxRate, submodules.Type = pControlType WHERE submodules.ID = pSubmoduleID LIMIT 1; - RETURN 0; + RETURN ROW_COUNT()-1; END // @@ -1699,7 +1702,7 @@ CREATE FUNCTION `AddSubmodule` BEGIN DECLARE vOrderNum, vIsLocked INT DEFAULT -1; DECLARE vDescription VARCHAR(200) CHARSET utf8 DEFAULT pDescription; - DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; + # DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; # check author and discipline lock SELECT disciplines.IsLocked INTO vIsLocked @@ -1709,7 +1712,7 @@ BEGIN modules.ID = pModuleID LIMIT 1; IF vIsLocked != 0 THEN - RETURN -1; + RETURN -2; END IF; # get free order @@ -1718,6 +1721,9 @@ BEGIN FROM `submodules` WHERE submodules.ModuleID = pModuleID LIMIT 1; + IF vOrderNum IS NULL THEN + SET vOrderNum = 0; + END IF; SET vOrderNum = vOrderNum + 1; # insert submodule diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 23e62b1bb7bf353d415b3fb0ffcb6ee0f1f78e88..68202f2c7e794920fa96b2fd1fee1b2fde92f018 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -373,7 +373,7 @@ BEGIN view_teachers.DepName, (view_teachers.TeacherID = vAuthorID) AS 'IsAuthor' FROM `view_teachers` - WHERE InternalIsTeacherBounded(view_teachers.TeacherID, pDisciplineID) AND + WHERE NOT InternalIsTeacherBounded(view_teachers.TeacherID, pDisciplineID) AND view_teachers.FacultyID = pFacultyID AND CONCAT( view_teachers.LastName, view_teachers.FirstName, view_teachers.SecondName) LIKE CONCAT('%', pFullName, '%') @@ -695,16 +695,16 @@ BEGIN view_roadmap.SubmoduleID = (@tmp = (SELECT rating_table.SubmoduleID FROM `submodules` INNER JOIN `rating_table` ON rating_table.SubModuleID = submodules.ID - WHERE submodules.ModuleID = modules.ID AND rating_table.StudentID = pStudentID + WHERE submodules.ModuleID = view_roadmap.ModuleID AND rating_table.StudentID = pStudentID ORDER BY submodules.OrderNum DESC LIMIT 1) ) OR ( @tmp IS NULL AND view_roadmap.SubmoduleOrderNum = 1) ) - ORDER BY modules.Type ^ 1 ASC, + ORDER BY view_roadmap.ModuleType ^ 1 ASC, -- 1, 3, 2, 4 ASC - modules.OrderNum ASC, - submodules.OrderNum ASC; + view_roadmap.ModuleOrderNum ASC, + view_roadmap.SubmoduleOrderNum ASC; END // @@ -778,7 +778,7 @@ BEGIN INNER JOIN `view_disciplines` ON view_disciplines.DisciplineID = pDisciplineID WHERE view_roadmap.DisciplineID = pDisciplineID AND (view_roadmap.ModuleType = 'exam' OR view_roadmap.ModuleType = 'extra') - ORDER BY OrderModuleTypesForSession(view_roadmap.ModuleType) ASC, + ORDER BY InternalOrderModuleTypesForSession(view_roadmap.ModuleType) ASC, view_roadmap.ModuleOrderNum ASC, view_roadmap.SubmoduleOrderNum ASC; END // diff --git a/db/Views.sql b/db/Views.sql index c39efedeae9de1994a548eb699459a6b25369930..3ed2d2553b0cb65a4068477012519d37f71263c4 100644 --- a/db/Views.sql +++ b/db/Views.sql @@ -132,7 +132,7 @@ CREATE OR REPLACE VIEW `view_roadmap` AS # enum('CurrentControl','LandmarkControl') submodules.IsUsed AS 'SubmoduleIsUsed' FROM `modules` - INNER JOIN `submodules` ON submodules.ModuleID = modules.ID; + LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID; # without students, that haven't any rate diff --git a/~dev_rating/application/classes/Controller/Teacher/Discipline.php b/~dev_rating/application/classes/Controller/Teacher/Discipline.php index bea9a2280714933af9591f669d173dd1b017b0bc..4de70ea8bb0b7aa4eacbfd77be98661ef9b742c2 100644 --- a/~dev_rating/application/classes/Controller/Teacher/Discipline.php +++ b/~dev_rating/application/classes/Controller/Teacher/Discipline.php @@ -75,6 +75,8 @@ class Controller_Teacher_Discipline extends Controller_UserEnvi { $groupID = 0; $i = 0; $k = 0; + $n = 0; + $j = 0; foreach($students as $row) { if ($row['AttachType'] == 'attach'){ if ($row['GroupID'] != $groupID) {