ソースを参照

Msgs fix bug in execute procedures override msgs status

Piotr Labudda 10 年 前
コミット
3cf9cdb66d
1 ファイル変更30 行追加12 行削除
  1. 30 12
      SE/se-lib/Route/Msgs.php

+ 30 - 12
SE/se-lib/Route/Msgs.php

@@ -69,6 +69,21 @@ class Route_Msgs extends RouteBase {
 
 	public function reinstallFunctions() {
 		$sqlList = array();
+		$sqlList['RemoveTable_CRM_UI_MSGS__EXEC_LOG'] = "DROP TABLE IF EXISTS `CRM_UI_MSGS__EXEC_LOG`";
+		$sqlList['CreateTable_CRM_UI_MSGS__EXEC_LOG'] = "
+			CREATE TABLE IF NOT EXISTS `CRM_UI_MSGS__EXEC_LOG` (
+				`ID` int(11) NOT NULL AUTO_INCREMENT
+				, `_exec_time` datetime DEFAULT NULL
+				, `author` VARCHAR(40) DEFAULT ''
+				, `app_className` VARCHAR(255) DEFAULT ''
+				, `msg` VARCHAR(255) DEFAULT ''
+				, `uiTargetType` VARCHAR(255) DEFAULT ''
+				, `uiTargetName` VARCHAR(255) DEFAULT ''
+				, `userTargetType` VARCHAR(255) DEFAULT ''
+				, `userTargetName` VARCHAR(255) DEFAULT ''
+				, PRIMARY KEY (`ID`)
+			) ENGINE=MyISAM DEFAULT CHARSET=latin2
+		";
 		$sqlList['RemoveProcedureMarkAsExecuted'] = "DROP PROCEDURE IF EXISTS `CRM_UI_MSGS__markAsExecuted`";
 		$sqlList['InstallProcedureMarkAsExecuted'] = <<<SQL_QUERY
 CREATE DEFINER=`root`@`localhost` PROCEDURE `CRM_UI_MSGS__markAsExecuted`(
@@ -81,18 +96,21 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `CRM_UI_MSGS__markAsExecuted`(
 	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
+--	insert into `CRM_UI_MSGS__EXEC_LOG`
+--		(`author`, `app_className`, `msg`, `uiTargetType`, `uiTargetName`, `userTargetType`, `userTargetName`, `_exec_time`)
+--		values(author, app_className, msg, uiTargetType, uiTargetName, userTargetType, userTargetName, NOW());
+	update `CRM_UI_MSGS` m
+		set m.`A_STATUS`='OFF_HARD'
+			, m.`actionExecutedTime`=NOW()
+			, m.`A_RECORD_UPDATE_DATE`=NOW()
+			, m.`A_RECORD_UPDATE_AUTHOR`=author
+		where m.`A_STATUS`='WAITING' -- TODO: not in('DELETED', 'OFF_HARD')
+			and m.`app_className`=app_className
+			and m.`msg`=msg
+			and m.`uiTargetType`=uiTargetType
+			and m.`uiTargetName`=uiTargetName
+			and m.`userTargetType`=userTargetType
+			and m.`userTargetName`=userTargetName
 		;
 END
 SQL_QUERY;