diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 333850005b502b50ee99102edce1c49ce5910565..18a100af28c0b06d31618252a0dbdab4099c244a 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -1598,36 +1598,36 @@ CREATE FUNCTION `BindTeacher`( `AccessedTeacher` INT, BEGIN DECLARE checker INT; +-- 1. check if AccessedTeacher is author + 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 = DisciplineID + WHERE disciplines.ID = DisciplineID AND + disciplines.AuthorID = AccessedTeacher LIMIT 1; IF NOT (checker > 0) THEN RETURN -1; END IF; - - +-- 2. check if BindingTeacher has rights to access this discipline SET checker = -1; SELECT disciplines_teachers.ID INTO checker - FROM `disciplines` - INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND - disciplines_teachers.TeacherID = BindingTeacher - WHERE disciplines.ID = DisciplineID + FROM `disciplines_teachers` + WHERE disciplines_teachers.DisciplineID = DisciplineID AND + disciplines_teachers.TeacherID = BindingTeacher LIMIT 1; IF checker > 0 THEN RETURN 0; END IF; +-- 3. insert BindingTeacher in access list INSERT INTO `disciplines_teachers` ( disciplines_teachers.DisciplineID, disciplines_teachers.TeacherID ) VALUES ( DisciplineID, BindingTeacher ); - RETURN 0; + RETURN 1; END //