Browse Source

- Fixed the "context" icons when displaying the impact analysis
- Bug fix: properly compute the list of impacted CIs on an Incident

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@3657 a333f486-631f-4898-b8df-5754b55c2be0

dflaven 10 years ago
parent
commit
aaba0c6d3c

+ 10 - 10
datamodels/2.x/itop-change-mgmt-itil/datamodel.itop-change-mgmt-itil.xml

@@ -4526,12 +4526,12 @@
                 <item id="open_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed', 'rejected')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id)]]></oql>
                   <dict>Tickets:Related:OpenChanges</dict>
-                  <icon>itop-change-mgmt/images/change-ongoing.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
                 </item>
                 <item id="recent_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
                   <dict>Tickets:Related:RecentChanges</dict>
-                  <icon>itop-change-mgmt/images/change-done.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-done.png</icon>
                 </item>
               </items>
             </down>
@@ -4544,12 +4544,12 @@
                 <item id="open_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed', 'rejected')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id)]]></oql>
                   <dict>Tickets:Related:OpenChanges</dict>
-                  <icon>itop-change-mgmt/images/change-ongoing.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
                 </item>
                 <item id="recent_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
                   <dict>Tickets:Related:RecentChanges</dict>
-                  <icon>itop-change-mgmt/images/change-done.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-done.png</icon>
                 </item>
               </items>
             </down>
@@ -4562,12 +4562,12 @@
                 <item id="open_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed', 'rejected')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id)]]></oql>
                   <dict>Tickets:Related:OpenChanges</dict>
-                  <icon>itop-change-mgmt/images/change-ongoing.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
                 </item>
                 <item id="recent_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed')) AND (L.impact_code != 'not_impacted') AND (C.id != :this->id) AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
                   <dict>Tickets:Related:RecentChanges</dict>
-                  <icon>itop-change-mgmt/images/change-done.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-done.png</icon>
                 </item>
               </items>
             </down>
@@ -4584,12 +4584,12 @@
                 <item id="open_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed', 'rejected')) AND (L.impact_code != 'not_impacted')]]></oql>
                   <dict>Tickets:Related:OpenChanges</dict>
-                  <icon>itop-change-mgmt/images/change-ongoing.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
                 </item>
                 <item id="recent_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
                   <dict>Tickets:Related:RecentChanges</dict>
-                  <icon>itop-change-mgmt/images/change-done.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-done.png</icon>
                 </item>
               </items>
             </down>
@@ -4598,12 +4598,12 @@
                 <item id="open_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status NOT IN ('closed', 'rejected')) AND (L.impact_code != 'not_impacted')]]></oql>
                   <dict>Tickets:Related:OpenChanges</dict>
-                  <icon>itop-change-mgmt/images/change-ongoing.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-ongoing.png</icon>
                 </item>
                 <item id="recent_changes" _delta="define">
                   <oql><![CDATA[SELECT FCI, C FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Change AS C ON L.ticket_id = C.id WHERE (C.status IN ('closed')) AND (L.impact_code != 'not_impacted') AND (DATE_ADD(C.end_date, INTERVAL 3 DAY) < NOW())]]></oql>
                   <dict>Tickets:Related:RecentChanges</dict>
-                  <icon>itop-change-mgmt/images/change-done.png</icon>
+                  <icon>itop-change-mgmt-itil/images/change-done.png</icon>
                 </item>
               </items>
             </up>

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

@@ -1307,34 +1307,10 @@
           <type>LifecycleAction</type>
           <code><![CDATA[	public function ComputeImpactedItems()
 	{
-		$oToNotify = $this->Get('contacts_list');
-		$oToImpact = $this->Get('functionalcis_list');
-
-		$oImpactedInfras = DBObjectSet::FromLinkSet($this, 'functionalcis_list', 'functionalci_id');
-
-		$aComputed = $oImpactedInfras->GetRelatedObjects('impacts', 10);
-
-		if (isset($aComputed['FunctionalCI']) && is_array($aComputed['FunctionalCI']))
-		{
-			foreach($aComputed['FunctionalCI'] as $iKey => $oObject)
-			{
-				$oNewLink = new lnkFunctionalCIToTicket();
-				$oNewLink->Set('functionalci_id', $iKey);
-				$oNewLink->Set('impact', 'potentially impacted (automatically computed)');
-				$oToImpact->AddObject($oNewLink);
-			}
-		}
-		if (isset($aComputed['Contact']) && is_array($aComputed['Contact']))
-		{
-			foreach($aComputed['Contact'] as $iKey => $oObject)
-			{
-				$oNewLink = new lnkContactToTicket();
-				$oNewLink->Set('contact_id', $iKey);
-				$oNewLink->Set('role', 'contact automatically computed');
-				$oToNotify->AddObject($oNewLink);
-			}
-		}
-		parent::OnInsert();
+        // This method is kept for backward compatibility
+        // in case a delta redefines it, but you may call
+        // UpdateImpactedItems directly
+		$this->UpdateImpactedItems();
 	}]]></code>
         </method>
         <method id="OnInsert">
@@ -1344,6 +1320,7 @@
           <code><![CDATA[	protected function OnInsert()
 
 	{
+        parent::OnInsert();    
 		$this->ComputeImpactedItems();
 		$this->Set('last_update', time());
 		$this->Set('start_date', time());
@@ -1355,6 +1332,12 @@
           <type>Overload-DBObject</type>
           <code><![CDATA[	protected function OnUpdate()
 	{
+        parent::OnUpdate(); 
+        $aChanges = $this->ListChanges();
+        if (array_key_exists('functionalcis_list', $aChanges))
+        {
+            $this->UpdateImpactedItems();
+        }
 		$this->Set('last_update', time());
 		$this->UpdateChildRequestLog();
 		$this->UpdateChildIncidentLog();
@@ -1771,7 +1754,7 @@
                 <item id="open_incidents" _delta="define">
                   <oql><![CDATA[SELECT FCI, I FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Incident AS I ON L.ticket_id = I.id WHERE (I.status NOT IN ('closed', 'resolved')) AND (L.impact_code != 'not_impacted') AND (I.id != :this->id)]]></oql>
                   <dict>Tickets:Related:OpenIncidents</dict>
-                  <icon>itop-request-mgmt/images/incident-red.png</icon>
+                  <icon>itop-incident-mgmt-itil/images/incident-red.png</icon>
                 </item>
               </items>
             </down>
@@ -1784,7 +1767,7 @@
                 <item id="open_incidents" _delta="define">
                   <oql><![CDATA[SELECT FCI, I FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Incident AS I ON L.ticket_id = I.id WHERE (I.status NOT IN ('closed', 'resolved')) AND (L.impact_code != 'not_impacted') AND (I.id != :this->id)]]></oql>
                   <dict>Tickets:Related:OpenIncidents</dict>
-                  <icon>itop-request-mgmt/images/incident-red.png</icon>
+                  <icon>itop-incident-mgmt-itil/images/incident-red.png</icon>
                 </item>
               </items>
             </down>
@@ -1797,7 +1780,7 @@
                 <item id="open_incidents" _delta="define">
                   <oql><![CDATA[SELECT FCI, I FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Incident AS I ON L.ticket_id = I.id WHERE (I.status NOT IN ('closed', 'resolved')) AND (L.impact_code != 'not_impacted') AND (I.id != :this->id)]]></oql>
                   <dict>Tickets:Related:OpenIncidents</dict>
-                  <icon>itop-request-mgmt/images/incident-red.png</icon>
+                  <icon>itop-incident-mgmt-itil/images/incident-red.png</icon>
                 </item>
               </items>
             </down>
@@ -1814,7 +1797,7 @@
                 <item id="open_incidents" _delta="define">
                   <oql><![CDATA[SELECT FCI, I FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Incident AS I ON L.ticket_id = I.id WHERE (I.status NOT IN ('closed', 'resolved')) AND (L.impact_code != 'not_impacted')]]></oql>
                   <dict>Tickets:Related:OpenIncidents</dict>
-                  <icon>itop-request-mgmt/images/incident-red.png</icon>
+                  <icon>itop-incident-mgmt-itil/images/incident-red.png</icon>
                 </item>
               </items>
             </down>
@@ -1823,7 +1806,7 @@
                 <item id="open_incidents" _delta="define">
                   <oql><![CDATA[SELECT FCI, I FROM FunctionalCI AS FCI JOIN lnkFunctionalCIToTicket AS L ON L.functionalci_id = FCI.id JOIN Incident AS I ON L.ticket_id = I.id WHERE (I.status NOT IN ('closed', 'resolved')) AND (L.impact_code != 'not_impacted')]]></oql>
                   <dict>Tickets:Related:OpenIncidents</dict>
-                  <icon>itop-request-mgmt/images/incident-red.png</icon>
+                  <icon>itop-incident-mgmt-itil/images/incident-red.png</icon>
                 </item>
               </items>
             </up>