浏览代码

#792 Duplicate entries in the parent/child tickets when updating the case log and applying a stimulus (e.g. Close the WO) at the same time.

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2930 a333f486-631f-4898-b8df-5754b55c2be0
romainq 11 年之前
父节点
当前提交
543386a03b

+ 16 - 32
datamodels/2.x/itop-incident-mgmt-itil/datamodel.itop-incident-mgmt-itil.xml

@@ -1534,14 +1534,10 @@
 	{
         if (!MetaModel::IsValidClass('UserRequest')) return true; // Do nothing
   
-		$sLogPublic = utils::ReadPostedParam('attr_public_log', null,false,'raw_data');
-		if ( $sLogPublic != null)
+		$oLog = $this->Get('public_log');
+		$sLogPublic = $oLog->GetModifiedEntry();
+		if ($sLogPublic != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT UserRequest WHERE parent_incident_id=:ticket";
 			$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1552,18 +1548,14 @@
 			while($oRequest = $oChildRequestSet->Fetch())
 			{
 				$oRequest->set('public_log',$sLogPublic);
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 
 		}
-		$sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data');
-		if ( $sLogPrivate != null)
+		$oLog = $this->Get('private_log');
+		$sLogPrivate = $oLog->GetModifiedEntry();
+		if ($sLogPrivate != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT UserRequest WHERE parent_incident_id=:ticket";
 			$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1574,7 +1566,7 @@
 			while($oRequest = $oChildRequestSet->Fetch())
 			{
 				$oRequest->set('private_log',$sLogPrivate);
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 		}
 		return true;
@@ -1587,14 +1579,10 @@
           <type>LifecycleAction</type>
           <code><![CDATA[	public function UpdateChildIncidentLog()
 	{
-		$sLogPublic = utils::ReadPostedParam('attr_public_log', null,false,'raw_data');
-		if ( $sLogPublic != null)
+		$oLog = $this->Get('public_log');
+		$sLogPublic = $oLog->GetModifiedEntry();
+		if ($sLogPublic != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT Incident WHERE parent_incident_id=:ticket";
 			$oChildIncidentSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1605,18 +1593,14 @@
 			while($oIncident = $oChildIncidentSet->Fetch())
 			{
 				$oIncident->set('public_log',$sLogPublic);
-				$oIncident->DBUpdateTracked($oMyChange);
+				$oIncident->DBUpdate();
 			}
 
 		}
-		$sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data');
-		if ( $sLogPrivate != null)
+		$oLog = $this->Get('private_log');
+		$sLogPrivate = $oLog->GetModifiedEntry();
+		if ($sLogPrivate != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT Incident WHERE parent_incident_id=:ticket";
 			$oChildIncidentSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1627,7 +1611,7 @@
 			while($oIncident = $oChildIncidentSet->Fetch())
 			{
 				$oIncident->set('private_log',$sLogPrivate);
-				$oIncident->DBUpdateTracked($oMyChange);
+				$oIncident->DBUpdate();
 			}
 		}
 		return true;

+ 9 - 22
datamodels/2.x/itop-request-mgmt-itil/datamodel.itop-request-mgmt-itil.xml

@@ -1859,11 +1859,6 @@
           <code><![CDATA[	public function resolveChilds($sStimulusCode)
 	{
 				
-		$oMyChange = MetaModel::NewObject("CMDBChange");
-		$oMyChange->Set("date", time());
-		$sUserString = CMDBChange::GetCurrentUserName();
-		$oMyChange->Set("userinfo", $sUserString."(automatic resolution)");
-		$iChangeId = $oMyChange->DBInsert();
 		$sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket";
 		$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 						array(),
@@ -1882,7 +1877,7 @@
 				$oRequest->set('resolution_code',$this->Get('resolution_code'));
 				$oRequest->set('solution','Automatically resolved by request:[[UserRequest:'.$this->Get('ref').']]');
 				$oRequest->ApplyStimulus('ev_autoresolve');
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 		}
 		return true;
@@ -1895,14 +1890,10 @@
           <type>LifecycleAction</type>
           <code><![CDATA[	public function UpdateChildRequestLog()
 	{
-		$sLogPublic = utils::ReadPostedParam('attr_public_log', null,false,'raw_data');
-		if ( $sLogPublic != null)
+		$oLog = $this->Get('public_log');
+		$sLogPublic = $oLog->GetModifiedEntry();
+		if ($sLogPublic != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket";
 			$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1913,18 +1904,14 @@
 			while($oRequest = $oChildRequestSet->Fetch())
 			{
 				$oRequest->set('public_log',$sLogPublic);
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 
 		}
-		$sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data');
-		if ( $sLogPrivate != null)
+		$oLog = $this->Get('private_log');
+		$sLogPrivate = $oLog->GetModifiedEntry();
+		if ($sLogPrivate != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket";
 			$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1935,7 +1922,7 @@
 			while($oRequest = $oChildRequestSet->Fetch())
 			{
 				$oRequest->set('private_log',$sLogPrivate);
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 		}
 		return true;

+ 9 - 22
datamodels/2.x/itop-request-mgmt/datamodel.itop-request-mgmt.xml

@@ -1845,11 +1845,6 @@
           <code><![CDATA[	public function resolveChilds($sStimulusCode)
 	{
 				
-		$oMyChange = MetaModel::NewObject("CMDBChange");
-		$oMyChange->Set("date", time());
-		$sUserString = CMDBChange::GetCurrentUserName();
-		$oMyChange->Set("userinfo", $sUserString."(automatic resolution)");
-		$iChangeId = $oMyChange->DBInsert();
 		$sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket";
 		$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 						array(),
@@ -1868,7 +1863,7 @@
 				$oRequest->set('resolution_code',$this->Get('resolution_code'));
 				$oRequest->set('solution','Automatically resolved by request:[[UserRequest:'.$this->Get('ref').']]');
 				$oRequest->ApplyStimulus('ev_autoresolve');
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 		}
 		return true;
@@ -1881,14 +1876,10 @@
           <type>LifecycleAction</type>
           <code><![CDATA[	public function UpdateChildRequestLog()
 	{
-		$sLogPublic = utils::ReadPostedParam('attr_public_log', null,false,'raw_data');
-		if ( $sLogPublic != null)
+		$oLog = $this->Get('public_log');
+		$sLogPublic = $oLog->GetModifiedEntry();
+		if ($sLogPublic != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket";
 			$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1899,18 +1890,14 @@
 			while($oRequest = $oChildRequestSet->Fetch())
 			{
 				$oRequest->set('public_log',$sLogPublic);
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 
 		}
-		$sLogPrivate = utils::ReadPostedParam('attr_private_log', null,false,'raw_data');
-		if ( $sLogPrivate != null)
+		$oLog = $this->Get('private_log');
+		$sLogPrivate = $oLog->GetModifiedEntry();
+		if ($sLogPrivate != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString."(automatic update)");
-			$iChangeId = $oMyChange->DBInsert();
 			$sOQL = "SELECT UserRequest WHERE parent_request_id=:ticket";
 			$oChildRequestSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
 							array(),
@@ -1921,7 +1908,7 @@
 			while($oRequest = $oChildRequestSet->Fetch())
 			{
 				$oRequest->set('private_log',$sLogPrivate);
-				$oRequest->DBUpdateTracked($oMyChange);
+				$oRequest->DBUpdate();
 			}
 		}
 		return true;

+ 7 - 20
datamodels/2.x/itop-tickets/datamodel.itop-tickets.xml

@@ -572,30 +572,17 @@
           <type>StimulusUserAction</type>
           <code><![CDATA[	public function UpdateParentTicketLog()
 	{
-		$sLog = utils::ReadPostedParam('attr_log', null,false,'raw_data');
-		if ( $sLog != null)
+		$oLog = $this->Get('log');
+		$sLog = $oLog->GetModifiedEntry();
+		if ($sLog != '')
 		{
-			$oMyChange = MetaModel::NewObject("CMDBChange");
-			$oMyChange->Set("date", time());
-			$sUserString = CMDBChange::GetCurrentUserName();
-			$oMyChange->Set("userinfo", $sUserString);
-			$iChangeId = $oMyChange->DBInsert();
-			$sOQL = "SELECT Ticket WHERE id=:ticket";
-			$oParentTicketSet = new DBObjectSet(DBObjectSearch::FromOQL($sOQL),
-							array(),
-							array(
-								'ticket' => $this->Get('ticket_id'),
-								)
-							);
-			while($oTicket = $oParentTicketSet->Fetch())
+			$oTicket = MetaModel::GetObject('Ticket', $this->Get('ticket_id'), false);
+			if ($oTicket)
 			{
-				$oTicket->set('private_log',$sLog);
-				$oTicket->DBUpdateTracked($oMyChange);
+				$oTicket->Set('private_log', $sLog);
+				$oTicket->DBUpdate();
 			}
-
 		}
-		return true;
-
 	}]]></code>
         </method>
         <method id="OnUpdate">