瀏覽代碼

FixProjectPath fix triggers for problems #108

Piotr Labudda 11 年之前
父節點
當前提交
532c29f9ea
共有 1 個文件被更改,包括 45 次插入0 次删除
  1. 45 0
      SE/se-lib/Route/FixProjectPath.php

+ 45 - 0
SE/se-lib/Route/FixProjectPath.php

@@ -285,6 +285,36 @@ jQuery(document).ready(function () {
 					END IF;
 				END
 		";
+		$sqlList['RemoveTrigger_BeforeInsertProblems'] = "DROP TRIGGER IF EXISTS `_PROBLEMS_tree_INSERT`";
+		$sqlList['CreateTrigger_BeforeInsertProblems'] = "
+			CREATE TRIGGER `_PROBLEMS_tree_INSERT` BEFORE INSERT ON `PROBLEMS`
+				FOR EACH ROW BEGIN
+					IF NEW.ID_PROJECT IS NOT NULL and NEW.ID_PROJECT>0 THEN
+						-- SET NEW.ID_PROJECT_path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
+						SET NEW.ID_PROJECT_path = (select coalesce(
+										(select p.`path` from `IN7_MK_BAZA_DYSTRYBUCJI` p where p.`ID`=NEW.`ID_PROJECT` limit 1)
+										, '?'));
+					END IF;
+				END
+		";
+		$sqlList['RemoveTrigger_BeforeUpdateProblems'] = "DROP TRIGGER IF EXISTS `_PROBLEMS_tree_UPDATE`";
+		$sqlList['CreateTrigger_BeforeUpdateProblems'] = "
+			CREATE TRIGGER `_PROBLEMS_tree_UPDATE` BEFORE UPDATE ON `PROBLEMS`
+				FOR EACH ROW BEGIN
+					IF NEW.ID_PROJECT IS NULL THEN
+						SET NEW.ID_PROJECT_path = '';
+					ELSEIF OLD.ID_PROJECT IS NULL or NEW.ID_PROJECT<>OLD.ID_PROJECT THEN
+						-- SET NEW.ID_PROJECT_path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
+						IF NEW.ID_PROJECT>0 THEN
+							SET NEW.ID_PROJECT_path = (select coalesce(
+											(select p.`path` from `IN7_MK_BAZA_DYSTRYBUCJI` p where p.`ID`=NEW.`ID_PROJECT` limit 1)
+											, '?'));
+						ELSE
+							SET NEW.ID_PROJECT_path = '';
+						END IF;
+					END IF;
+				END
+		";
 		$sqlList['RemoveEvent_everyDay'] = "DROP EVENT IF EXISTS `_IN7_MK_BAZA_DYSTRYBUCJI__IN7_DZIENNIK_KORESP_tree_event`";
 		$sqlList['CreateEvent_everyDay'] = "
 			CREATE EVENT `_IN7_MK_BAZA_DYSTRYBUCJI__IN7_DZIENNIK_KORESP_tree_event` ON SCHEDULE EVERY 1 DAY STARTS '2015-05-15 05:00:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
@@ -340,6 +370,21 @@ CREATE TRIGGER `_IN7_DZIENNIK_KORESP_tree_UPDATE` BEFORE UPDATE ON `IN7_DZIENNIK
 		END IF;
 	END
 
+CREATE TRIGGER `_PROBLEMS_tree_INSERT` BEFORE INSERT ON `PROBLEMS`
+	FOR EACH ROW BEGIN
+		IF NEW.ID_PROJECT IS NOT NULL THEN
+			SET NEW.ID_PROJECT_path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
+		END IF;
+	END
+
+CREATE TRIGGER `_PROBLEMS_tree_UPDATE` BEFORE UPDATE ON `PROBLEMS`
+	FOR EACH ROW BEGIN
+		IF NEW.ID_PROJECT is null THEN
+			SET NEW.ID_PROJECT_path = '';
+		ELSEIF OLD.ID_PROJECT IS NULL or NEW.ID_PROJECT<>OLD.ID_PROJECT THEN
+			SET NEW.ID_PROJECT_path = IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path('-', NEW.ID_PROJECT);
+		END IF;
+	END
 
 CREATE FUNCTION `IN7_MK_BAZA_DYSTRYBUCJI_hierarchy_sys_connect_by_path`(`delimiter` TEXT, `node` INT) RETURNS text CHARSET latin2
 	READS SQL DATA