Kaynağa Gözat

Msgs create procedure for mark as executed

Piotr Labudda 10 yıl önce
ebeveyn
işleme
a226ac79a9

+ 1 - 11
SE/se-lib/Route/FixCrmProcesInitIdx.php

@@ -1027,17 +1027,7 @@ BEGIN
 		replace into `CRM_CONFIG` (`conf_key`, `conf_val`) values (@conf_last_exec_lock_key, ''), (@conf_last_exec_end_key, NOW());
 
 		-- clear msg 'Update perms' from Msgs system
-		update `CRM_UI_MSGS`
-			set `A_STATUS`='OFF_HARD'
-				, `actionExecutedTime`=NOW()
-				, `A_RECORD_UPDATE_DATE`=NOW()
-				, `A_RECORD_UPDATE_AUTHOR`='update_proces_init_idx_rec'
-			where `A_STATUS`='WAITING'
-				and `app_className`='FixCrmProcesInitIdx'
-				and `msg`='Update perms'
-				and `uiTargetType`='default_db_table'
-				and `uiTargetName`='CRM_PROCES'
-		;
+		CALL CRM_UI_MSGS__markTableEveryoneAsExecuted('update_proces_init_idx_rec','FixCrmProcesInitIdx','Update perms','CRM_PROCES');
 
 	END ; END IF ;
 END ;

+ 1 - 10
SE/se-lib/Route/FixProjectPath.php

@@ -172,16 +172,7 @@ jQuery(document).ready(function () {
 				update `PROBLEMS` pr left join `_project_path_idx` i on(i.`ID`=pr.`ID_PROJECT`)
 					set pr.`ID_PROJECT_path`=coalesce(i.`idx_PATH`, '?');
 
-				update `CRM_UI_MSGS`
-					set `A_STATUS`='OFF_HARD'
-						, `actionExecutedTime`=NOW()
-						, `A_RECORD_UPDATE_DATE`=NOW()
-						, `A_RECORD_UPDATE_AUTHOR`='update_zasob_path_idx_rec'
-					where `A_STATUS`='WAITING'
-						and `app_className`='FixProjectPath'
-						and `msg`='Update all paths'
-						and `uiTargetType`='default_db_table'
-						and `uiTargetName`='IN7_MK_BAZA_DYSTRYBUCJI';
+				CALL CRM_UI_MSGS__markTableEveryoneAsExecuted('update_zasob_path_idx_rec','FixProjectPath','Update all paths','IN7_MK_BAZA_DYSTRYBUCJI');
 			END
 		";
 		$sqlList['RemoveTrigger_BeforeInsertProject'] = "DROP TRIGGER IF EXISTS `_IN7_MK_BAZA_DYSTRYBUCJI_tree_INSERT`";

+ 1 - 10
SE/se-lib/Route/FixZasobPath.php

@@ -171,16 +171,7 @@ jQuery(document).ready(function () {
 				update `CRM_WSKAZNIK` wsk left join `_zasob_path_idx` i on(i.`ID`=wsk.`ID_ZASOB`)
 					set wsk.`path_CRM_LISTA_ZASOBOW`=coalesce(i.`idx_PATH_DESC`, '?');
 
-				update `CRM_UI_MSGS`
-					set `A_STATUS`='OFF_HARD'
-						, `actionExecutedTime`=NOW()
-						, `A_RECORD_UPDATE_DATE`=NOW()
-						, `A_RECORD_UPDATE_AUTHOR`='update_zasob_path_idx_rec'
-					where `A_STATUS`='WAITING'
-						and `app_className`='FixZasobPath'
-						and `msg`='Update all paths'
-						and `uiTargetType`='default_db_table'
-						and `uiTargetName`='CRM_LISTA_ZASOBOW';
+				CALL CRM_UI_MSGS__markTableEveryoneAsExecuted('update_zasob_path_idx_rec','FixZasobPath','Update all paths','CRM_LISTA_ZASOBOW');
 			END
 		";
 		$sqlList['RemoveTrigger_BeforeInsertZasob'] = "DROP TRIGGER IF EXISTS `_CRM_LISTA_ZASOBOW_tree_INSERT`";

+ 99 - 0
SE/se-lib/Route/Msgs.php

@@ -42,6 +42,11 @@ class Route_Msgs extends RouteBase {
 		die('OK');
 	}
 
+	public function reinstallFunctionsAction() {
+		$this->reinstallFunctions();
+		die('OK');
+	}
+
 	public function runAction() {
 		$msgId = V::get('_msgId', 0, $_REQUEST, 'int');
 		if ($msgId > 0) {
@@ -62,6 +67,99 @@ class Route_Msgs extends RouteBase {
 		die('OK');
 	}
 
+	public function reinstallFunctions() {
+		$sqlList = array();
+		$sqlList['RemoveProcedureMarkAsExecuted'] = "DROP PROCEDURE IF EXISTS `CRM_UI_MSGS__markAsExecuted`";
+		$sqlList['InstallProcedureMarkAsExecuted'] = <<<SQL_QUERY
+CREATE DEFINER=`root`@`localhost` PROCEDURE `CRM_UI_MSGS__markAsExecuted`(
+	IN author VARCHAR(40),
+	IN app_className VARCHAR(255),
+	IN msg VARCHAR(255),
+	IN uiTargetType VARCHAR(255),
+	IN uiTargetName VARCHAR(255),
+	IN userTargetType VARCHAR(255),
+	IN userTargetName VARCHAR(255)
+)
+BEGIN
+	update `CRM_UI_MSGS`
+		set `A_STATUS`='OFF_HARD'
+			, `actionExecutedTime`=NOW()
+			, `A_RECORD_UPDATE_DATE`=NOW()
+			, `A_RECORD_UPDATE_AUTHOR`=author
+		where `A_STATUS`='WAITING' -- TODO: not in('DELETED', 'OFF_HARD')
+			and `app_className`=app_className
+			and `msg`=msg
+			and `uiTargetType`=uiTargetType
+			and `uiTargetName`=uiTargetName
+			and `userTargetType`=userTargetType
+			and `userTargetName`=userTargetName
+		;
+END
+SQL_QUERY;
+		$sqlList['RemoveProcedureMarkTableEveryoneAsExecuted'] = "DROP PROCEDURE IF EXISTS `CRM_UI_MSGS__markTableEveryoneAsExecuted`";
+		$sqlList['InstallProcedureMarkTableEveryoneAsExecuted'] = <<<SQL_QUERY
+CREATE DEFINER=`root`@`localhost` PROCEDURE `CRM_UI_MSGS__markTableEveryoneAsExecuted`(
+	IN author VARCHAR(40),
+	IN app_className VARCHAR(255),
+	IN msg VARCHAR(255),
+	IN uiTargetName VARCHAR(255)
+)
+BEGIN
+	CALL CRM_UI_MSGS__markAsExecuted(author, app_className, msg, 'default_db_table', uiTargetName, 'everyone', '');
+END
+SQL_QUERY;
+		$exampleFromCrmProcesInitIdx = <<<SQL_QUERY
+		CALL CRM_UI_MSGS__markTableEveryoneAsExecuted('update_proces_init_idx_rec','FixCrmProcesInitIdx','Update perms','CRM_PROCES');
+		update `CRM_UI_MSGS`
+			set `A_STATUS`='OFF_HARD'
+				, `actionExecutedTime`=NOW()
+				, `A_RECORD_UPDATE_DATE`=NOW()
+				, `A_RECORD_UPDATE_AUTHOR`='update_proces_init_idx_rec'
+			where `A_STATUS`='WAITING'
+				and `app_className`='FixCrmProcesInitIdx'
+				and `msg`='Update perms'
+				and `uiTargetType`='default_db_table'
+				and `uiTargetName`='CRM_PROCES'
+		;
+SQL_QUERY;
+		$exampleFromFixProjectPath = <<<SQL_QUERY
+		CALL CRM_UI_MSGS__markTableEveryoneAsExecuted('update_zasob_path_idx_rec','FixProjectPath','Update all paths','IN7_MK_BAZA_DYSTRYBUCJI');
+		update `CRM_UI_MSGS`
+			set `A_STATUS`='OFF_HARD'
+				, `actionExecutedTime`=NOW()
+				, `A_RECORD_UPDATE_DATE`=NOW()
+				, `A_RECORD_UPDATE_AUTHOR`='update_zasob_path_idx_rec'
+			where `A_STATUS`='WAITING'
+				and `app_className`='FixProjectPath'
+				and `msg`='Update all paths'
+				and `uiTargetType`='default_db_table'
+				and `uiTargetName`='IN7_MK_BAZA_DYSTRYBUCJI';
+SQL_QUERY;
+		$exampleFromFixZasobPath = <<<SQL_QUERY
+		CALL CRM_UI_MSGS__markTableEveryoneAsExecuted('update_zasob_path_idx_rec','FixZasobPath','Update all paths','CRM_LISTA_ZASOBOW');
+		update `CRM_UI_MSGS`
+			set `A_STATUS`='OFF_HARD'
+				, `actionExecutedTime`=NOW()
+				, `A_RECORD_UPDATE_DATE`=NOW()
+				, `A_RECORD_UPDATE_AUTHOR`='update_zasob_path_idx_rec'
+			where `A_STATUS`='WAITING'
+				and `app_className`='FixZasobPath'
+				and `msg`='Update all paths'
+				and `uiTargetType`='default_db_table'
+				and `uiTargetName`='CRM_LISTA_ZASOBOW';
+SQL_QUERY;
+		$db = DB::getDB();
+		if ($db->has_errors()) {
+			throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
+		}
+		foreach ($sqlList as $sqlName => $sql) {
+			$res = $db->query($sql);
+			if ($db->has_errors()) {
+				throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n<br>", $db->get_errors()));
+			}
+		}
+	}
+
 	public function reinstall() {
 		$sqlList = array();
 		$sqlList['RemoveTable'] = "DROP TABLE IF EXISTS `CRM_UI_MSGS`";
@@ -104,6 +202,7 @@ class Route_Msgs extends RouteBase {
 				throw new Exception("DB Errors at sql '{$sqlName}': " . implode("\n<br>", $db->get_errors()));
 			}
 		}
+		$this->reinstallFunctions();
 	}
 
 	public function getActiveMessagesForTable($tblName) {