mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
Obsoleted the SibusQL and the keyword pkey (still allowed as a placeholder in the templates)
SVN:trunk[372]
This commit is contained in:
@@ -187,7 +187,7 @@ class UserRightsMatrix extends UserRightsAddOnAPI
|
||||
{
|
||||
// Users must be added manually
|
||||
// This procedure will then update the matrix when a new user is found or a new class/attribute appears
|
||||
$oUserSet = new DBObjectSet(DBObjectSearch::FromSibuSQL("UserRightsMatrixUsers"));
|
||||
$oUserSet = new DBObjectSet(DBObjectSearch::FromOQL("SELECT UserRightsMatrixUsers"));
|
||||
while ($oUser = $oUserSet->Fetch())
|
||||
{
|
||||
$this->SetupUser($oUser->GetKey());
|
||||
|
||||
@@ -3,7 +3,7 @@ require_once('../application/audit.category.class.inc.php');
|
||||
|
||||
/**
|
||||
* This class manages the audit "rule" linked to a given audit category.
|
||||
* Each rule is based ona SibusQL expression that returns either the "good" objects
|
||||
* Each rule is based on an OQL expression that returns either the "good" objects
|
||||
* or the "bad" ones. The core audit engines computes the complement to the definition
|
||||
* set when needed to obtain either the valid objects, or the ones with an error
|
||||
*/
|
||||
|
||||
@@ -85,7 +85,7 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
|
||||
// action menu
|
||||
$oSingletonFilter = new DBObjectSearch(get_class($this));
|
||||
$oSingletonFilter->AddCondition('pkey', array($this->GetKey()));
|
||||
$oSingletonFilter->AddCondition('id', array($this->GetKey()));
|
||||
$oBlock = new MenuBlock($oSingletonFilter, 'popup', false);
|
||||
$oBlock->Display($oPage, -1);
|
||||
|
||||
@@ -211,7 +211,9 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
{
|
||||
$oTemplate = new DisplayTemplate($sTemplate);
|
||||
$sNameAttCode = MetaModel::GetNameAttributeCode(get_class($this));
|
||||
$oTemplate->Render($oPage, array('class_name'=> MetaModel::GetName(get_class($this)),'class'=> get_class($this),'pkey'=> $this->GetKey(), 'name' => $this->Get($sNameAttCode)));
|
||||
// Note: to preserve backward compatibility with home-made templates, the placeholder '$pkey$' has been preserved
|
||||
// but the preferred method is to use '$id$'
|
||||
$oTemplate->Render($oPage, array('class_name'=> MetaModel::GetName(get_class($this)),'class'=> get_class($this), 'pkey'=> $this->GetKey(), 'id'=> $this->GetKey(), 'name' => $this->Get($sNameAttCode)));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -138,10 +138,6 @@ class DisplayBlock
|
||||
$oFilter = CMDBSearchFilter::unserialize($sITopData);
|
||||
break;
|
||||
|
||||
case 'text/sibusql':
|
||||
$oFilter = CMDBSearchFilter::FromSibusQL($sITopData);
|
||||
break;
|
||||
|
||||
case 'text/oql':
|
||||
$oFilter = CMDBSearchFilter::FromOQL($sITopData);
|
||||
break;
|
||||
|
||||
@@ -31,11 +31,23 @@ class DisplayTemplate
|
||||
$oPage->add(substr($this->m_sTemplate, $iBeforeTagPos, $iStart - $iBeforeTagPos));
|
||||
if ($sTag == DisplayBlock::TAG_BLOCK)
|
||||
{
|
||||
$oBlock = DisplayBlock::FromTemplate($sOuterTag);
|
||||
if (is_object($oBlock))
|
||||
try
|
||||
{
|
||||
$oBlock->Display($oPage, 'block_'.self::$iBlockCount, $aParams);
|
||||
$oBlock = DisplayBlock::FromTemplate($sOuterTag);
|
||||
if (is_object($oBlock))
|
||||
{
|
||||
$oBlock->Display($oPage, 'block_'.self::$iBlockCount, $aParams);
|
||||
}
|
||||
}
|
||||
catch(OQLException $e)
|
||||
{
|
||||
$oPage->p('Error in template (please contact your administrator) - Invalid query<!--'.$sOuterTag.'-->');
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
$oPage->p('Error in template (please contact your administrator)<!--'.$sOuterTag.'-->');
|
||||
}
|
||||
|
||||
self::$iBlockCount++;
|
||||
}
|
||||
else
|
||||
@@ -175,19 +187,19 @@ class DisplayTemplate
|
||||
$sTemplate = '<div class="page_header">
|
||||
<div class="actions_details"><a href="#"><span>Actions</span></a></div>
|
||||
<h1>$class$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = \'$class$\'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = \'$class$\'</itopblock>
|
||||
</div>
|
||||
<img src="../../images/connect_to_network.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/sibusql">bizNetworkDevice: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizNetworkDevice AS d WHERE d.id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Interfaces">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/sibusql">bizInterface: device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizInterface AS i WHERE i.device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/sibusql">bizContact: PKEY IS contact_id IN (ContactsLinks: object_id = $pkey$)</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizContact AS c JOIN ContactsLinks AS l ON l.contact_id = c.id WHERE l.object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/sibusql">bizDocument: PKEY IS doc_id IN (lnkDocumentRealObject: object_id = $pkey$)</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizDocument AS d JOIN lnkDocumentRealObject as l ON l.document_id = d.id WHERE l.object_id = $id$)</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>';
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../../images/clean.png" style="margin-top:-20px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/sibusql">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Rules">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/sibusql">AuditRule: category_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT AuditRule WHERE category_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -64,7 +64,7 @@ class UserContext
|
||||
{
|
||||
$oObject = null;
|
||||
$oFilter = $this->NewFilter($sClass);
|
||||
$oFilter->AddCondition('pkey', $sKey, '=');
|
||||
$oFilter->AddCondition('id', $sKey, '=');
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
if ($oSet->Count() > 0)
|
||||
{
|
||||
|
||||
@@ -63,7 +63,7 @@ class cmdbObjectHomeMade extends cmdbObject
|
||||
switch ($sRelCode)
|
||||
{
|
||||
case "Potes":
|
||||
$aRels = array("xxxx" => array("sQuery"=>"cmdbContact: pkey = 40", "bPropagate"=>true, "iDistance"=>3));
|
||||
$aRels = array("xxxx" => array("sQuery"=>"SELECT cmdbContact AS c WHERE c.id = 40", "bPropagate"=>true, "iDistance"=>3));
|
||||
return $aRels;
|
||||
}
|
||||
}
|
||||
@@ -134,8 +134,8 @@ class cmdbContact extends cmdbObjectHomeMade
|
||||
{
|
||||
case "Potes":
|
||||
$aRels = array(
|
||||
"zz1" => array("sQuery"=>"cmdbContact: name Begins with '\$[this.name::]' AND pkey != \$[this.pkey::]", "bPropagate"=>false, "iDistance"=>3),
|
||||
"zz2" => array("sQuery"=>"cmdbContact: owner = \$[this.owner::] AND owner != 2", "bPropagate"=>false, "iDistance"=>3),
|
||||
"zz1" => array("sQuery"=>"SELECT cmdbContact AS c WHERE c.name = '\$[this.name::]'", "bPropagate"=>false, "iDistance"=>3),
|
||||
"zz2" => array("sQuery"=>"SELECT cmdbContact AS c WHERE c.owner = \$[this.owner::] AND c.owner != 2", "bPropagate"=>false, "iDistance"=>3),
|
||||
);
|
||||
return array_merge($aRels, parent::GetRelationQueries($sRelCode));
|
||||
}
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/software.jpg" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizApplication WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizApplication WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Impacted_Client_Applications">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="server_id" object_id="$pkey$" target_attr="client_id" encoding="text/oql">SELECT lnkClientServer WHERE server_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="server_id" object_id="$id$" target_attr="client_id" encoding="text/oql">SELECT lnkClientServer WHERE server_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Application_Server">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="client_id" object_id="$pkey$" target_attr="server_id" encoding="text/oql">SELECT lnkClientServer WHERE client_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="client_id" object_id="$id$" target_attr="server_id" encoding="text/oql">SELECT lnkClientServer WHERE client_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Incidents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="ticket_id" encoding="text/sibusql">lnkInfraTicket: infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Changes">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/sibusql">bizChangeTicket: PKEY IS ticket_id IN (lnkInfraChangeTicket: infra_id = $pkey$)</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizChangeTicket AS c JOIN lnkInfraChangeTicket AS l ON l.ticket_id = c.id WHERE l.infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
<itoptab name="Contracts">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="contract_id" encoding="text/oql">SELECT lnkInfraContract WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="contract_id" encoding="text/oql">SELECT lnkInfraContract WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Groups">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/imageChange.gif" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Impacted_Infrastructures">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="ticket_id" object_id="$pkey$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraChangeTicket WHERE ticket_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="ticket_id" object_id="$id$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraChangeTicket WHERE ticket_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts_to_Notify">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="change_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactChange WHERE change_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="change_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactChange WHERE change_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/WanLinks.jpg" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/sibusql">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Incidents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Changes">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizChangeTicket AS Change JOIN lnkInfraChangeTicket AS Link ON Link.ticket_id = Change.id WHERE Link.infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizChangeTicket AS Change JOIN lnkInfraChangeTicket AS Link ON Link.ticket_id = Change.id WHERE Link.infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/erwanContracts.jpg" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizContract WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizContract WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Covered_Infrastructures">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contract_id" object_id="$pkey$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraContract WHERE contract_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contract_id" object_id="$id$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraContract WHERE contract_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contract_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactContract WHERE contract_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contract_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactContract WHERE contract_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contract_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentContract WHERE contract_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contract_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentContract WHERE contract_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/tar.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/sibusql">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/folder_documents.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/tar.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizInfraGroup WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizInfraGroup WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Infrastructures">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_group_id" object_id="$pkey$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_group_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_group_id" object_id="$id$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_group_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/tar.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizInterface WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizInterface WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Groups">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizKnownError WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizKnownError WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Related_Intrastructures">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="error_id" object_id="$pkey$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraError WHERE error_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="error_id" object_id="$id$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraError WHERE error_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/starthere.png" style="margin-top:-20px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizLocation WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizLocation WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="list" object_id="$pkey$" target_attr="location_id" encoding="text/oql">SELECT bizContact WHERE location_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" object_id="$id$" target_attr="location_id" encoding="text/oql">SELECT bizContact WHERE location_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Servers">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="location_id">SELECT bizServer WHERE location_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="location_id">SELECT bizServer WHERE location_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="PCs">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="location_id">SELECT bizPC WHERE location_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="location_id">SELECT bizPC WHERE location_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Network_Devices">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="location_id">SELECT bizNetworkDevice WHERE location_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="location_id">SELECT bizNetworkDevice WHERE location_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/connect_to_network.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizNetworkDevice WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizNetworkDevice WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Interfaces">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="device_id">SELECT bizInterface WHERE device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="device_id">SELECT bizInterface WHERE device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactInfra WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactInfra WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Incidents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Changes">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/sibusql">bizChangeTicket: PKEY IS ticket_id IN (lnkInfraChangeTicket: infra_id = $pkey$)</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizChangeTicket AS c JOIN lnkInfraChangeTicket AS l ON l.ticket_id = c.id WHERE l.infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Groups">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/laptop_pcmcia.png" style="margin-top:-20px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizPC WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizPC WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Applications">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="device_id">SELECT bizApplication WHERE device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="device_id">SELECT bizApplication WHERE device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Patches">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="device_id">SELECT bizPatch WHERE device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="device_id">SELECT bizPatch WHERE device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Interfaces">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="device_id">SELECT bizInterface WHERE device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="device_id">SELECT bizInterface WHERE device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Incidents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Groups">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/users2-big.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizPerson WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizPerson WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Teams">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contact_id" object_id="$pkey$" target_attr="team_id" encoding="text/oql">SELECT lnkContactTeam WHERE contact_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contact_id" object_id="$id$" target_attr="team_id" encoding="text/oql">SELECT lnkContactTeam WHERE contact_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Infrastructure">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contact_id" object_id="$pkey$" target_attr="object_id" encoding="text/oql">SELECT lnkContactRealObject WHERE contact_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contact_id" object_id="$id$" target_attr="object_id" encoding="text/oql">SELECT lnkContactRealObject WHERE contact_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Service_Calls">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizServiceCall WHERE caller_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizServiceCall WHERE caller_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/network-server.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizServer WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizServer WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Applications">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="device_id">SELECT bizApplication WHERE device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="device_id">SELECT bizApplication WHERE device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Patches">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="device_id">SELECT bizPatch WHERE device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="device_id">SELECT bizPatch WHERE device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Interfaces">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$pkey$" target_attr="device_id">SELECT bizInterface WHERE device_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql" object_id="$id$" target_attr="device_id">SELECT bizInterface WHERE device_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Incidents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="ticket_id" encoding="text/oql">SELECT lnkInfraTicket WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Changes">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizChangeTicket AS Change JOIN lnkInfraChangeTicket AS Link ON Link.ticket_id = Change.id WHERE Link.infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizChangeTicket AS Change JOIN lnkInfraChangeTicket AS Link ON Link.ticket_id = Change.id WHERE Link.infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Groups">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$pkey$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="infra_id" object_id="$id$" target_attr="infra_group_id" encoding="text/oql">SELECT lnkInfraGrouping WHERE infra_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/kservices-big.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizService WHERE id=$pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizService WHERE id=$id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Contracts">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="list" encoding="text/oql" object_id="$pkey$" target_attr="service_id">SELECT bizContract WHERE service_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="list" encoding="text/oql" object_id="$id$" target_attr="service_id">SELECT bizContract WHERE service_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/messagebox_warning.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Impacted_Infrastructures">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="call_id" object_id="$pkey$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraCall WHERE call_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="call_id" object_id="$id$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraCall WHERE call_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Related_Incidents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="call_id" object_id="$pkey$" target_attr="ticket_id" encoding="text/oql">SELECT lnkCallTicket WHERE call_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="call_id" object_id="$id$" target_attr="ticket_id" encoding="text/oql">SELECT lnkCallTicket WHERE call_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/erwanContracts.jpg" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Service_Items">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizServiceItem WHERE request_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizServiceItem WHERE request_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/software.jpg" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/sibusql">bizSoftware: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT bizSoftware WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Installed_Instances">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/sibusql">bizApplication: soft_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizApplication WHERE soft_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/users2-big.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Members">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="team_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactTeam WHERE team_id=$pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="team_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactTeam WHERE team_id=$id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Infrastructures">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contact_id" object_id="$pkey$" target_attr="infra_id" encoding="text/oql">SELECT lnkContactInfra WHERE contact_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="contact_id" object_id="$id$" target_attr="infra_id" encoding="text/oql">SELECT lnkContactInfra WHERE contact_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Workgroups">
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizWorkgroup WHERE team_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" encoding="text/oql">SELECT bizWorkgroup WHERE team_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
<itoptab name="Documents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$pkey$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="object_id" object_id="$id$" target_attr="doc_id" encoding="text/oql">SELECT lnkDocumentRealObject WHERE object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
</itoptabs>
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<div class="page_header">
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/sibusql" label="Actions">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="MenuBlock" type="popup" encoding="text/oql" label="Actions">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<h1>$class_name$: <span class="hilite">$name$</span></h1>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $pkey$ AND objclass = '$class$'</itopblock>
|
||||
<itopblock blockclass="HistoryBlock" type="toggle" encoding="text/oql">SELECT CMDBChangeOp WHERE objkey = $id$ AND objclass = '$class$'</itopblock>
|
||||
</div>
|
||||
<img src="../images/messagebox_warning.png" style="margin-top:-10px; margin-right:10px; float:right">
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/sibusql">$class$: pkey = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" asynchronous="false" type="bare_details" encoding="text/oql">SELECT $class$ WHERE id = $id$</itopblock>
|
||||
<itoptabs>
|
||||
<itoptab name="Impacted_Infrastructures">
|
||||
<itopblock blockclass="DisplayBlock" type="list" link_attr="ticket_id" object_id="$pkey$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraTicket WHERE ticket_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" link_attr="ticket_id" object_id="$id$" target_attr="infra_id" encoding="text/oql">SELECT lnkInfraTicket WHERE ticket_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Related_Incidents">
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="ticket_id" object_id="$pkey$" target_attr="rel_ticket_id" encoding="text/oql">SELECT lnkRelatedTicket WHERE ticket_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="links" link_attr="ticket_id" object_id="$id$" target_attr="rel_ticket_id" encoding="text/oql">SELECT lnkRelatedTicket WHERE ticket_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Contacts_to_Notify">
|
||||
<itopblock blockclass="DisplayBlock" type="list" link_attr="ticket_id" object_id="$pkey$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactTicket WHERE ticket_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" link_attr="ticket_id" object_id="$id$" target_attr="contact_id" encoding="text/oql">SELECT lnkContactTicket WHERE ticket_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
<itoptab name="Email_Notifications">
|
||||
<itopblock blockclass="DisplayBlock" type="list" parameters="menu:0;" encoding="text/oql">SELECT EventNotificationEmail AS Ev JOIN TriggerOnObject AS T ON Ev.trigger_id = T.id WHERE T.target_class = 'bizIncidentTicket' AND Ev.object_id = $pkey$</itopblock>
|
||||
<itopblock blockclass="DisplayBlock" type="list" parameters="menu:0;" encoding="text/oql">SELECT EventNotificationEmail AS Ev JOIN TriggerOnObject AS T ON Ev.trigger_id = T.id WHERE T.target_class = 'bizIncidentTicket' AND Ev.object_id = $id$</itopblock>
|
||||
</itoptab>
|
||||
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ class ActionEmail extends ActionNotification
|
||||
{
|
||||
$oSearch = DBObjectSearch::FromOQL($sOQL);
|
||||
}
|
||||
catch (OqlException $e)
|
||||
catch (OQLException $e)
|
||||
{
|
||||
$this->m_aMailErrors[] = "query syntax error for recipient '$sRecipAttCode'";
|
||||
return $e->getMessage();
|
||||
|
||||
@@ -1085,7 +1085,7 @@ class AttributeExternalKey extends AttributeDBFieldVoid
|
||||
if (!$oValSetDef)
|
||||
{
|
||||
// Let's propose every existing value
|
||||
$oValSetDef = new ValueSetObjects($this->GetTargetClass());
|
||||
$oValSetDef = new ValueSetObjects('SELECT '.$this->GetTargetClass());
|
||||
}
|
||||
return $oValSetDef;
|
||||
}
|
||||
@@ -1099,7 +1099,7 @@ class AttributeExternalKey extends AttributeDBFieldVoid
|
||||
catch (MissingQueryArgument $e)
|
||||
{
|
||||
// Some required arguments could not be found, enlarge to any existing value
|
||||
$oValSetDef = new ValueSetObjects($this->GetTargetClass());
|
||||
$oValSetDef = new ValueSetObjects('SELECT '.$this->GetTargetClass());
|
||||
return $oValSetDef->GetValues($aArgs, $sBeginsWith);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -383,7 +383,7 @@ abstract class CMDBObject extends DBObject
|
||||
|
||||
// Get the list of objects to delete (and record data before deleting the DB records)
|
||||
$oObjSet = new CMDBObjectSet($oFilter);
|
||||
$aObjAndKeys = array(); // array of pkey=>object
|
||||
$aObjAndKeys = array(); // array of id=>object
|
||||
while ($oItem = $oObjSet->Fetch())
|
||||
{
|
||||
$aObjAndKeys[$oItem->GetKey()] = $oItem;
|
||||
|
||||
@@ -350,7 +350,7 @@ class cmdbDataGenerator
|
||||
{
|
||||
$oOrg = null;
|
||||
$oFilter = new CMDBSearchFilter('bizOrganization');
|
||||
$oFilter->AddCondition('pkey', $sId, '=');
|
||||
$oFilter->AddCondition('id', $sId, '=');
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
if ($oSet->Count() > 0)
|
||||
{
|
||||
|
||||
@@ -13,22 +13,6 @@
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Sibusql - value set start
|
||||
* @package iTopORM
|
||||
*/
|
||||
define('VS_START', '{');
|
||||
/**
|
||||
* Sibusql - value set end
|
||||
* @package iTopORM
|
||||
*/
|
||||
define('VS_END', '}');
|
||||
|
||||
|
||||
define('SIBUSQLPARAMREGEXP', "/\\$\\[(.*)\\:(.*)\\:(.*)\\]/U");
|
||||
define('SIBUSQLTHISREGEXP', "/this\\.(.*)/U");
|
||||
|
||||
|
||||
/**
|
||||
* Define filters for a given class of objects (formerly named "filter")
|
||||
*
|
||||
@@ -241,11 +225,6 @@ class DBObjectSearch
|
||||
|
||||
public function AddCondition($sFilterCode, $value, $sOpCode = null)
|
||||
{
|
||||
// #@# backward compatibility for pkey/id
|
||||
if (strtolower(trim($sFilterCode)) == 'pkey') $sFilterCode = 'id';
|
||||
// #@# todo - obsolete smoothly, first send exceptions
|
||||
// throw new CoreException('SibusQL has been obsoleted, please update your queries', array('sibusql'=>$sQuery, 'oql'=>$oFilter->ToOQL()));
|
||||
|
||||
MyHelpers::CheckKeyInArray('filter code', $sFilterCode, MetaModel::GetClassFilterDefs($this->GetClass()));
|
||||
$oFilterDef = MetaModel::GetClassFilterDef($this->GetClass(), $sFilterCode);
|
||||
|
||||
@@ -719,77 +698,6 @@ class DBObjectSearch
|
||||
return $sRes;
|
||||
}
|
||||
|
||||
public function ToSibusQL()
|
||||
{
|
||||
return "NONONO";
|
||||
}
|
||||
|
||||
static private function privProcessParams($sQuery, array $aParams, $oDbObject)
|
||||
{
|
||||
$iPlaceHoldersCount = preg_match_all(SIBUSQLPARAMREGEXP, $sQuery, $aMatches, PREG_SET_ORDER);
|
||||
if ($iPlaceHoldersCount > 0)
|
||||
{
|
||||
foreach($aMatches as $aMatch)
|
||||
{
|
||||
$sStringToSearch = $aMatch[0];
|
||||
$sParameterName = $aMatch[1];
|
||||
$sDefaultValue = $aMatch[2];
|
||||
$sDescription = $aMatch[3];
|
||||
|
||||
$sValue = $sDefaultValue;
|
||||
if (array_key_exists($sParameterName, $aParams))
|
||||
{
|
||||
$sValue = $aParams[$sParameterName];
|
||||
unset($aParams[$sParameterName]);
|
||||
}
|
||||
else if (is_object($oDbObject))
|
||||
{
|
||||
if (strpos($sParameterName, "this.") === 0)
|
||||
{
|
||||
$sAttCode = substr($sParameterName, strlen("this."));
|
||||
if ($sAttCode == 'id')
|
||||
{
|
||||
$sValue = $oDbObject->GetKey();
|
||||
}
|
||||
else if ($sAttCode == 'class')
|
||||
{
|
||||
$sValue = get_class($oDbObject);
|
||||
}
|
||||
else if (MetaModel::IsValidAttCode(get_class($oDbObject), $sAttCode))
|
||||
{
|
||||
$sValue = $oDbObject->Get($sAttCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
$sQuery = str_replace($sStringToSearch, $sValue, $sQuery);
|
||||
}
|
||||
}
|
||||
if (count($aParams) > 0)
|
||||
{
|
||||
// throw new CoreException("Unused parameter(s) for this SibusQL expression: (".implode(', ', array_keys($aParams)).")");
|
||||
}
|
||||
return $sQuery;
|
||||
}
|
||||
|
||||
static public function ListSibusQLParams($sQuery)
|
||||
{
|
||||
$aRet = array();
|
||||
$iPlaceHoldersCount = preg_match_all(SIBUSQLPARAMREGEXP, $sQuery, $aMatches, PREG_SET_ORDER);
|
||||
if ($iPlaceHoldersCount > 0)
|
||||
{
|
||||
foreach($aMatches as $aMatch)
|
||||
{
|
||||
$sStringToSearch = $aMatch[0];
|
||||
$sParameterName = $aMatch[1];
|
||||
$sDefaultValue = $aMatch[2];
|
||||
$sDescription = $aMatch[3];
|
||||
$aRet[$sParameterName]["description"] = $sDescription;
|
||||
$aRet[$sParameterName]["default"] = $sDefaultValue;
|
||||
}
|
||||
}
|
||||
return $aRet;
|
||||
}
|
||||
|
||||
protected function OQLExpressionToCondition($sQuery, $oExpression, $aClassAliases)
|
||||
{
|
||||
if ($oExpression instanceof BinaryOqlExpression)
|
||||
@@ -991,111 +899,6 @@ class DBObjectSearch
|
||||
return $oResultFilter;
|
||||
}
|
||||
|
||||
static public function FromSibusQL($sQuery, array $aParams = array(), $oObject = null)
|
||||
{
|
||||
if (empty($sQuery)) return null;
|
||||
$sQuery = self::privProcessParams($sQuery, $aParams, $oObject);
|
||||
|
||||
if (preg_match('@^\\s*SELECT@', $sQuery))
|
||||
{
|
||||
return self::FromOQL($sQuery);
|
||||
}
|
||||
|
||||
$iSepPos = strpos($sQuery, ":");
|
||||
if ($iSepPos === false)
|
||||
{
|
||||
// Only the class was specified -> all rows are required
|
||||
$sClass = trim($sQuery);
|
||||
$oFilter = new DBObjectSearch($sClass);
|
||||
}
|
||||
else
|
||||
{
|
||||
$sClass = trim(substr($sQuery, 0, $iSepPos));
|
||||
$sConds = trim(substr($sQuery, $iSepPos + 1));
|
||||
$aValues = explode(" AND ", $sConds);
|
||||
|
||||
$oFilter = new DBObjectSearch($sClass);
|
||||
|
||||
foreach ($aValues as $sCond)
|
||||
{
|
||||
$sCond = trim($sCond);
|
||||
|
||||
if (strpos($sCond, "* HAS ") === 0)
|
||||
{
|
||||
$sValue = self::Expression2Value(substr($sCond, strlen("* HAS ")));
|
||||
$oFilter->AddCondition_FullText($sValue);
|
||||
}
|
||||
else if (preg_match("@^(\S+) IN \\((.+)\\)$@", $sCond, $aMatches))
|
||||
{
|
||||
$sExtKeyAttCode = $aMatches[1];
|
||||
$sFilterExp = $aMatches[2];
|
||||
|
||||
$oSubFilter = self::FromSibuSQL($sFilterExp);
|
||||
$oFilter->AddCondition_PointingTo($oSubFilter, $sExtKeyAttCode);
|
||||
}
|
||||
else if (strpos($sCond, "PKEY IS ") === 0)
|
||||
{
|
||||
if (preg_match("@^PKEY IS (\S+) IN \\((.+)\\)$@", $sCond, $aMatches))
|
||||
{
|
||||
$sExtKeyAttCodeToMe = $aMatches[1];
|
||||
$sFilterExp = $aMatches[2];
|
||||
$oRemoteFilter = self::FromSibuSQL($sFilterExp);
|
||||
$oFilter->AddCondition_ReferencedBy($oRemoteFilter, $sExtKeyAttCodeToMe);
|
||||
}
|
||||
}
|
||||
else if (strpos($sCond, "RELATED") === 0)
|
||||
{
|
||||
if (preg_match("@^RELATED\s*\\((.+)\\)\s*TO\s*\\((.+)\\)@", trim($sCond), $aMatches))
|
||||
{
|
||||
$aRelation = explode(',', trim($aMatches[1]));
|
||||
$sRelCode = trim($aRelation[0]);
|
||||
$iMaxDepth = intval(trim($aRelation[1]));
|
||||
$sFilterExp = trim($aMatches[2]);
|
||||
|
||||
$oSubFilter = self::FromSibuSQL($sFilterExp);
|
||||
$oFilter->AddCondition_RelatedTo($oSubFilter, $sRelCode, $iMaxDepth);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$sOperandExpr = "'.*'|\d+|-\d+|".VS_START.".+".VS_END;
|
||||
if (preg_match("@^(\S+)\s+(.*)\s+($sOperandExpr)$@", $sCond, $aMatches))
|
||||
{
|
||||
$sFltCode = trim($aMatches[1]);
|
||||
$sOpCode = trim($aMatches[2]);
|
||||
$value = self::Expression2Value($aMatches[3]);
|
||||
$oFilter->AddCondition($sFltCode, $value, $sOpCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new CoreException("Wrong format for filter definition: '$sQuery'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// #@# todo - obsolete smoothly, first give the OQL version !
|
||||
// throw new CoreException('SibusQL has been obsoleted, please update your queries', array('sibusql'=>$sQuery, 'oql'=>$oFilter->ToOQL()));
|
||||
|
||||
return $oFilter;
|
||||
}
|
||||
|
||||
// Sexy display of a SibuSQL expression
|
||||
static public function SibuSQLAsHtml($sQuery)
|
||||
{
|
||||
$sQuery = htmlentities($sQuery);
|
||||
$aParams = self::ListSibusQLParams($sQuery);
|
||||
$aParamValues = array();
|
||||
foreach ($aParams as $sParamName => $aParamInfo)
|
||||
{
|
||||
$sDescription = $aParamInfo["description"];
|
||||
$sDefaultValue = $aParamInfo["default"];
|
||||
$aParamValues[$sParamName] = "<span style=\"background-color:#aaa;\" title\"$sDescription (default to '$sDefaultValue')\">$sParamName</span>";
|
||||
}
|
||||
$sQuery = self::privProcessParams($sQuery, $aParamValues, null);
|
||||
return $sQuery;
|
||||
}
|
||||
|
||||
public function toxpath()
|
||||
{
|
||||
// #@# a voir...
|
||||
|
||||
@@ -41,7 +41,7 @@ class DBObjectSet
|
||||
{
|
||||
$sRet = '';
|
||||
$this->Rewind();
|
||||
$sRet .= "Set (".$this->m_oFilter->ToSibuSQL().")<br/>\n";
|
||||
$sRet .= "Set (".$this->m_oFilter->ToOQL().")<br/>\n";
|
||||
$sRet .= "Query: <pre style=\"font-size: smaller; display:inline;\">".MetaModel::MakeSelectQuery($this->m_oFilter, array()).")</pre>\n";
|
||||
|
||||
$sRet .= $this->Count()." records<br/>\n";
|
||||
|
||||
@@ -1432,7 +1432,7 @@ abstract class MetaModel
|
||||
$aClassAliases = array_merge($aClassAliases, $oFilter->GetJoinedClasses());
|
||||
}
|
||||
|
||||
self::DbgTrace("Entering: ".$oFilter->ToSibuSQL().", ".($bIsOnQueriedClass ? "MAIN" : "SECONDARY").", expectedatts=".count($aExpectedAtts).": ".implode(",", array_keys($aExpectedAtts)));
|
||||
self::DbgTrace("Entering: ".$oFilter->ToOQL().", ".($bIsOnQueriedClass ? "MAIN" : "SECONDARY").", expectedatts=".count($aExpectedAtts).": ".implode(",", array_keys($aExpectedAtts)));
|
||||
|
||||
$sRootClass = self::GetRootClass($sClass);
|
||||
$sKeyField = self::DBGetKey($sClass);
|
||||
@@ -1515,7 +1515,7 @@ abstract class MetaModel
|
||||
|
||||
self::DbgTrace("Referenced by foreign key: $sForeignKeyAttCode... let's call MakeQuery()");
|
||||
//self::DbgTrace($oForeignFilter);
|
||||
//self::DbgTrace($oForeignFilter->ToSibuSQL());
|
||||
//self::DbgTrace($oForeignFilter->ToOQL());
|
||||
//self::DbgTrace($oSelectForeign);
|
||||
//self::DbgTrace($oSelectForeign->RenderSelect(array()));
|
||||
$oSelectForeign = self::MakeQuery($aSelectedClasses, $oConditionTree, $aClassAliases, $aTableAliases, $aTranslation, $oForeignFilter, $aExpAtts);
|
||||
@@ -1589,7 +1589,7 @@ abstract class MetaModel
|
||||
|
||||
$bIsOnQueriedClass = array_key_exists($sTargetAlias, $aSelectedClasses);
|
||||
|
||||
self::DbgTrace("Entering: tableclass=$sTableClass, filter=".$oFilter->ToSibuSQL().", ".($bIsOnQueriedClass ? "MAIN" : "SECONDARY").", expectedatts=".count($aExpectedAtts).": ".implode(",", array_keys($aExpectedAtts)));
|
||||
self::DbgTrace("Entering: tableclass=$sTableClass, filter=".$oFilter->ToOQL().", ".($bIsOnQueriedClass ? "MAIN" : "SECONDARY").", expectedatts=".count($aExpectedAtts).": ".implode(",", array_keys($aExpectedAtts)));
|
||||
|
||||
// 1 - SELECT and UPDATE
|
||||
//
|
||||
|
||||
@@ -41,7 +41,7 @@ class OqlInterpreter
|
||||
$oRes = $this->Parse();
|
||||
if (!$oRes instanceof OqlObjectQuery)
|
||||
{
|
||||
throw new OqlException('Expecting an OQL query', $this->m_sQuery, 0, 0, get_class($oRes), array('OqlObjectQuery'));
|
||||
throw new OQLException('Expecting an OQL query', $this->m_sQuery, 0, 0, get_class($oRes));
|
||||
}
|
||||
return $oRes;
|
||||
}
|
||||
@@ -51,7 +51,7 @@ class OqlInterpreter
|
||||
$oRes = $this->Parse();
|
||||
if (!$oRes instanceof Expression)
|
||||
{
|
||||
throw new OqlException('Expecting an OQL expression', $this->m_sQuery, 0, 0, get_class($oRes), array('Expression'));
|
||||
throw new OQLException('Expecting an OQL expression', $this->m_sQuery, 0, 0, get_class($oRes), array('Expression'));
|
||||
}
|
||||
return $oRes;
|
||||
}
|
||||
|
||||
@@ -492,10 +492,10 @@ abstract class TestBizModel extends TestHandler
|
||||
self::show_list($oObjSet);
|
||||
}
|
||||
|
||||
static protected function search_and_show_list_from_sibusql($sSibuSQL)
|
||||
static protected function search_and_show_list_from_oql($sOQL)
|
||||
{
|
||||
echo $sSibuSQL."...<br/>\n";
|
||||
$oNewFilter = DBObjectSearch::FromSibuSQL($sSibuSQL);
|
||||
echo $sOQL."...<br/>\n";
|
||||
$oNewFilter = DBObjectSearch::FromOQL($sOQL);
|
||||
self::search_and_show_list($oNewFilter);
|
||||
}
|
||||
}
|
||||
@@ -544,14 +544,14 @@ abstract class TestBizModelGeneric extends TestBizModel
|
||||
$oBaby = new $sClassName;
|
||||
$oFilter = new DBObjectSearch($sClassName);
|
||||
|
||||
// Challenge reversibility of SibusQL / filter object
|
||||
// Challenge reversibility of OQL / filter object
|
||||
//
|
||||
$sExpr1 = $oFilter->ToSibuSQL();
|
||||
$oNewFilter = DBObjectSearch::FromSibuSQL($sExpr1);
|
||||
$sExpr2 = $oNewFilter->ToSibuSQL();
|
||||
$sExpr1 = $oFilter->ToOQL();
|
||||
$oNewFilter = DBObjectSearch::FromOQL($sExpr1);
|
||||
$sExpr2 = $oNewFilter->ToOQL();
|
||||
if ($sExpr1 != $sExpr2)
|
||||
{
|
||||
$this->ReportError("Found two different SibuSQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
$this->ReportError("Found two different OQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
}
|
||||
|
||||
// Use the filter (perform the query)
|
||||
|
||||
@@ -78,7 +78,7 @@ abstract class ValueSetDefinition
|
||||
*/
|
||||
class ValueSetObjects extends ValueSetDefinition
|
||||
{
|
||||
protected $m_sFilterExpr; // in SibuSQL
|
||||
protected $m_sFilterExpr; // in OQL
|
||||
protected $m_sValueAttCode;
|
||||
protected $m_aOrderBy;
|
||||
|
||||
@@ -93,7 +93,7 @@ class ValueSetObjects extends ValueSetDefinition
|
||||
{
|
||||
$this->m_aValues = array();
|
||||
|
||||
$oFilter = DBObjectSearch::FromSibusQL($this->m_sFilterExpr, $aArgs);
|
||||
$oFilter = DBObjectSearch::FromOQL($this->m_sFilterExpr, $aArgs);
|
||||
if (!$oFilter) return false;
|
||||
|
||||
$oObjects = new DBObjectSet($oFilter, $this->m_aOrderBy, $aArgs);
|
||||
@@ -102,9 +102,9 @@ class ValueSetObjects extends ValueSetDefinition
|
||||
if (empty($this->m_sValueAttCode))
|
||||
{
|
||||
$this->m_aValues[$oObject->GetKey()] = $oObject->GetName();
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->m_aValues[$oObject->GetKey()] = $oObject->GetAsHTML($this->m_sValueAttCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:AuditCategory/Attribute:description' => 'Audit Category Description',
|
||||
'Class:AuditCategory/Attribute:description+' => 'Long description for this audit category',
|
||||
'Class:AuditCategory/Attribute:definition_set' => 'Definition Set',
|
||||
'Class:AuditCategory/Attribute:definition_set+' => 'SibusQL expression defining the set of objects to audit',
|
||||
'Class:AuditCategory/Attribute:definition_set+' => 'OQL expression defining the set of objects to audit',
|
||||
));
|
||||
|
||||
//
|
||||
@@ -72,7 +72,7 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:AuditRule/Attribute:description' => 'Audit Rule Description',
|
||||
'Class:AuditRule/Attribute:description+' => 'Long description for this audit rule',
|
||||
'Class:AuditRule/Attribute:query' => 'Query to Run',
|
||||
'Class:AuditRule/Attribute:query+' => 'The SibusQL expression to run',
|
||||
'Class:AuditRule/Attribute:query+' => 'The OQL expression to run',
|
||||
'Class:AuditRule/Attribute:valid_flag' => 'Valid objects?',
|
||||
'Class:AuditRule/Attribute:valid_flag+' => 'True if the rule returns the valid objects, false otherwise',
|
||||
'Class:AuditRule/Attribute:valid_flag/Value:true' => 'true',
|
||||
|
||||
@@ -8,8 +8,8 @@ function UpdateObjectList(sClass, sId, sExtKeyToRemote)
|
||||
{
|
||||
aRelatedObjectIds[0] = 0;
|
||||
}
|
||||
var sibusql = sClass+": pkey IN {" + aRelatedObjectIds.join(", ") + "}";
|
||||
$.get("ajax.render.php?filter=" + sibusql + "&style=list&encoding=sibusql",
|
||||
var oql = "SELECT "+sClass+" AS c WHERE c.id IN (" + aRelatedObjectIds.join(", ") + ")";
|
||||
$.get("ajax.render.php?filter=" + oql + "&style=list&encoding=oql",
|
||||
{ operation: "ajax" },
|
||||
function(data){
|
||||
$("#related_objects_"+sId).empty();
|
||||
|
||||
@@ -230,7 +230,7 @@ try
|
||||
$oP->add("<div class=\"page_header\">\n");
|
||||
$oP->add("<h1><span class=\"hilite\">".Metamodel::GetName($sClassName).":</span> ".count($aLeafs)." object(s) found.</h1>\n");
|
||||
$oP->add("</div>\n");
|
||||
$oLeafsFilter->AddCondition('pkey', $aLeafs, 'IN');
|
||||
$oLeafsFilter->AddCondition('id', $aLeafs, 'IN');
|
||||
$oBlock = new DisplayBlock($oLeafsFilter, 'list', false);
|
||||
$oBlock->Display($oP, $iBlock++);
|
||||
}
|
||||
@@ -261,7 +261,7 @@ try
|
||||
{
|
||||
// Check if the user can modify this object
|
||||
$oSearch = new DBObjectSearch($sClass);
|
||||
$oSearch->AddCondition('pkey', $id, '=');
|
||||
$oSearch->AddCondition('id', $id, '=');
|
||||
$oSet = new CMDBObjectSet($oSearch);
|
||||
if ($oSet->Count() > 0)
|
||||
{
|
||||
@@ -301,7 +301,7 @@ try
|
||||
{
|
||||
// Check if the user can modify this object
|
||||
$oSearch = new DBObjectSearch($sClass);
|
||||
$oSearch->AddCondition('pkey', $id, '=');
|
||||
$oSearch->AddCondition('id', $id, '=');
|
||||
$oSet = new CMDBObjectSet($oSearch);
|
||||
if ($oSet->Count() > 0)
|
||||
{
|
||||
|
||||
@@ -68,7 +68,7 @@ function Page2_ConfigFilters($oPage, $oFilter)
|
||||
$sValue = "";
|
||||
foreach($oFilter->GetCriteria() as $aCritInfo)
|
||||
{
|
||||
if ($aCritInfo["filtercode"] == "pkey")
|
||||
if ($aCritInfo["filtercode"] == "id")
|
||||
{
|
||||
// ???
|
||||
}
|
||||
|
||||
@@ -107,9 +107,9 @@ switch($operation)
|
||||
{
|
||||
$aExtraParams = json_decode(str_replace("'", '"', $sExtraParams), true /* associative array */);
|
||||
}
|
||||
if ($sEncoding == 'sibusql')
|
||||
if ($sEncoding == 'oql')
|
||||
{
|
||||
$oFilter = CMDBSearchFilter::FromSibusQL($sFilter);
|
||||
$oFilter = CMDBSearchFilter::FromOQL($sFilter);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -127,7 +127,7 @@ switch($operation)
|
||||
case 'details':
|
||||
$key = utils::ReadParam('id', 0);
|
||||
$oFilter = $oContext->NewFilter($sClass);
|
||||
$oFilter->AddCondition('pkey', $key, '=');
|
||||
$oFilter->AddCondition('id', $key, '=');
|
||||
$oDisplayBlock = new DisplayBlock($oFilter, 'details', false);
|
||||
$oDisplayBlock->RenderContent($oPage);
|
||||
break;
|
||||
@@ -135,7 +135,7 @@ switch($operation)
|
||||
case 'preview':
|
||||
$key = utils::ReadParam('id', 0);
|
||||
$oFilter = $oContext->NewFilter($sClass);
|
||||
$oFilter->AddCondition('pkey', $key, '=');
|
||||
$oFilter->AddCondition('id', $key, '=');
|
||||
$oDisplayBlock = new DisplayBlock($oFilter, 'preview', false);
|
||||
$oDisplayBlock->RenderContent($oPage);
|
||||
break;
|
||||
@@ -187,7 +187,7 @@ switch($operation)
|
||||
case 'modal_details':
|
||||
$key = utils::ReadParam('id', 0);
|
||||
$oFilter = $oContext->NewFilter($sClass);
|
||||
$oFilter->AddCondition('pkey', $key, '=');
|
||||
$oFilter->AddCondition('id', $key, '=');
|
||||
$oPage->Add("<p style=\"width:100%; margin-top:-5px;padding:3px; background-color:#33f; color:#fff;\">Object Details</p>\n");
|
||||
$oDisplayBlock = new DisplayBlock($oFilter, 'details', false);
|
||||
$oDisplayBlock->RenderContent($oPage);
|
||||
|
||||
@@ -17,8 +17,8 @@ function GetRuleResultSet($iRuleId, $oDefinitionFilter)
|
||||
$oContext = new UserContext();
|
||||
|
||||
$oRule = $oContext->GetObject('AuditRule', $iRuleId);
|
||||
$sSibusql = $oRule->Get('query');
|
||||
$oRuleFilter = DBObjectSearch::FromSibusQL($sSibusql);
|
||||
$sOql = $oRule->Get('query');
|
||||
$oRuleFilter = DBObjectSearch::FromOQL($sOql);
|
||||
if ($oRule->Get('valid_flag') == 'false')
|
||||
{
|
||||
// The query returns directly the invalid elements
|
||||
@@ -37,7 +37,7 @@ function GetRuleResultSet($iRuleId, $oDefinitionFilter)
|
||||
$aValidIds[] = $oObj->GetKey();
|
||||
}
|
||||
$oFilter = $oDefinitionFilter;
|
||||
$oFilter->AddCondition('pkey', $aValidIds, 'NOTIN');
|
||||
$oFilter->AddCondition('id', $aValidIds, 'NOTIN');
|
||||
$oErrorObjectSet = new CMDBObjectSet($oFilter);
|
||||
}
|
||||
return $oErrorObjectSet;
|
||||
@@ -65,7 +65,7 @@ switch($operation)
|
||||
|
||||
$oContext = new UserContext();
|
||||
$oAuditCategory = $oContext->GetObject('AuditCategory', $iCategory);
|
||||
$oDefinitionFilter = DBObjectSearch::FromSibusQL($oAuditCategory->Get('definition_set'));
|
||||
$oDefinitionFilter = DBObjectSearch::FromOQL($oAuditCategory->Get('definition_set'));
|
||||
if (!empty($currentOrganization))
|
||||
{
|
||||
$oDefinitionFilter->AddCondition('org_id', $currentOrganization);
|
||||
@@ -94,13 +94,13 @@ switch($operation)
|
||||
$oP->add("</tr>\n");
|
||||
while($oAuditCategory = $oCategoriesSet->fetch())
|
||||
{
|
||||
$oDefinitionFilter = DBObjectSearch::FromSibusQL($oAuditCategory->Get('definition_set'));
|
||||
$oDefinitionFilter = DBObjectSearch::FromOQL($oAuditCategory->Get('definition_set'));
|
||||
$aObjectsWithErrors = array();
|
||||
if (!empty($currentOrganization))
|
||||
{
|
||||
if (MetaModel::IsValidFilterCode($oDefinitionFilter->GetClass(), 'org_id'))
|
||||
{
|
||||
if (MetaModel::IsValidFilterCode($oDefinitionFilter->GetClass(), 'org_id'))
|
||||
{
|
||||
$oDefinitionFilter->AddCondition('org_id', $currentOrganization);
|
||||
$oDefinitionFilter->AddCondition('org_id', $currentOrganization);
|
||||
}
|
||||
}
|
||||
$aResults = array();
|
||||
@@ -122,7 +122,7 @@ switch($operation)
|
||||
}
|
||||
else
|
||||
{
|
||||
$oRuleFilter = DBObjectSearch::FromSibusQL($oAuditRule->Get('query'));
|
||||
$oRuleFilter = DBObjectSearch::FromOQL($oAuditRule->Get('query'));
|
||||
$oErrorObjectSet = GetRuleResultSet($oAuditRule->GetKey(), $oDefinitionFilter);
|
||||
$iErrorsCount = $oErrorObjectSet->Count();
|
||||
while($oObj = $oErrorObjectSet->Fetch())
|
||||
|
||||
@@ -1,761 +0,0 @@
|
||||
<?php
|
||||
require_once('../application/application.inc.php');
|
||||
require_once('../application/startup.inc.php');
|
||||
|
||||
require_once('../application/itopwizardwebpage.class.inc.php');
|
||||
|
||||
|
||||
abstract class DialogWizard
|
||||
{
|
||||
protected $m_sCurrentStep;
|
||||
protected $m_aSteps;
|
||||
|
||||
public function __construct($sStep)
|
||||
{
|
||||
$this->m_sCurrentStep = $sStep;
|
||||
}
|
||||
|
||||
protected function GetFields($sStep = '')
|
||||
{
|
||||
if ($sStep == '')
|
||||
{
|
||||
$sStep = $this->m_sCurrentStep;
|
||||
}
|
||||
return $this->m_aSteps[$sStep];
|
||||
}
|
||||
|
||||
protected function AddContextToForm(WebPage $oPage)
|
||||
{
|
||||
// Store as hidden fields in the page all the variables from the previous steps
|
||||
foreach($this->m_aSteps as $sStep => $aFields)
|
||||
{
|
||||
if ($sStep == $this->m_sCurrentStep) continue;
|
||||
foreach($aFields as $sAttName => $sFieldName)
|
||||
{
|
||||
$oPage->add("<input type=\"hidden\" name=\"$sFieldName\" value=\"".htmlentities(Utils::ReadParam($sFieldName, ''))."\" />\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function GetObjectPicker(WebPage $oPage, $sTitle, $sFieldName, $sClass)
|
||||
{
|
||||
$sScript =
|
||||
<<<EOF
|
||||
function UpdateObjectList(sClass)
|
||||
{
|
||||
var sRelatedObjectIds = new String($('#related_object_ids').val());
|
||||
if (sRelatedObjectIds.length > 0)
|
||||
{
|
||||
aRelatedObjectIds = sRelatedObjectIds.split(' ');
|
||||
}
|
||||
else
|
||||
{
|
||||
aRelatedObjectIds = new Array();
|
||||
aRelatedObjectIds[0] = 0;
|
||||
}
|
||||
var sibusql = sClass+": pkey IN {" + aRelatedObjectIds.join(", ") + "}";
|
||||
$.get("ajax.render.php?filter=" + sibusql + "&style=list&encoding=sibusql",
|
||||
{ operation: "ajax" },
|
||||
function(data){
|
||||
$("#related_objects").empty();
|
||||
$("#related_objects").append(data);
|
||||
$("#related_objects").removeClass("loading");
|
||||
});
|
||||
}
|
||||
|
||||
function AddObject(sClass)
|
||||
{
|
||||
var sRelatedObjectIds = new String($('#related_object_ids').val());
|
||||
var sCurrentObjectId = new String($('#ac_current_object_id').val());
|
||||
if (sRelatedObjectIds.length > 0)
|
||||
{
|
||||
aRelatedObjectIds = sRelatedObjectIds.split(' ');
|
||||
}
|
||||
else
|
||||
{
|
||||
aRelatedObjectIds = new Array();
|
||||
}
|
||||
// To do: check if the ID is not already in the list...
|
||||
aRelatedObjectIds[aRelatedObjectIds.length] = sCurrentObjectId;
|
||||
// Update the form & reload the list
|
||||
$('#related_object_ids').val(aRelatedObjectIds.join(' '));
|
||||
UpdateObjectList(sClass);
|
||||
}
|
||||
|
||||
function ManageObjects(sTitle, sClass, sInputId)
|
||||
{
|
||||
$('#Manage_DlgTitle').text(sTitle);
|
||||
sObjList = new String($('#'+sInputId).val());
|
||||
if (sObjList == '')
|
||||
{
|
||||
sObjList = new String('0');
|
||||
}
|
||||
var aObjList = sObjList.split(' ');
|
||||
Manage_LoadSelect('selected_objects', sClass+': pkey IN {' + aObjList.join(', ') + '}');
|
||||
Manage_LoadSelect('available_objects', sClass);
|
||||
$('#ManageObjectsDlg').jqmShow();
|
||||
}
|
||||
|
||||
function Manage_LoadSelect(sSelectedId, sFilter)
|
||||
{
|
||||
$('#'+sSelectedId).addClass('loading');
|
||||
$.get('ajax.render.php?filter=' + sFilter,
|
||||
{ operation: 'combo_options' },
|
||||
function(data){
|
||||
$('#'+sSelectedId).empty();
|
||||
$('#'+sSelectedId).append(data);
|
||||
$('#'+sSelectedId).removeClass('loading');
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function Manage_SwapSelectedObjects(oSourceSelect, oDestinationSelect)
|
||||
{
|
||||
for (i=oSourceSelect.length-1;i>=0;i--) // Count down because we are removing the indexes from the combo
|
||||
{
|
||||
if (oSourceSelect.options[i].selected)
|
||||
{
|
||||
var newOption = document.createElement('option');
|
||||
newOption.text = oSourceSelect.options[i].text;
|
||||
newOption.value = oSourceSelect.options[i].value;
|
||||
oDestinationSelect.add(newOption, null);
|
||||
oSourceSelect.remove(i);
|
||||
}
|
||||
}
|
||||
Manage_UpdateButtons();
|
||||
}
|
||||
|
||||
function Manage_UpdateButtons()
|
||||
{
|
||||
var oSrc = document.getElementById('available_objects');
|
||||
var oAddBtn = document.getElementById('btn_add_objects')
|
||||
var oDst = document.getElementById('selected_objects');
|
||||
var oRemoveBtn = document.getElementById('btn_remove_objects')
|
||||
if (oSrc.selectedIndex == -1)
|
||||
{
|
||||
oAddBtn.disabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oAddBtn.disabled = false;
|
||||
}
|
||||
if (oDst.selectedIndex == -1)
|
||||
{
|
||||
oRemoveBtn.disabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
oRemoveBtn.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
function Manage_AddObjects()
|
||||
{
|
||||
var oSrc = document.getElementById('available_objects');
|
||||
var oDst = document.getElementById('selected_objects');
|
||||
Manage_SwapSelectedObjects(oSrc, oDst);
|
||||
}
|
||||
|
||||
function Manage_RemoveObjects()
|
||||
{
|
||||
var oSrc = document.getElementById('selected_objects');
|
||||
var oDst = document.getElementById('available_objects');
|
||||
Manage_SwapSelectedObjects(oSrc, oDst);
|
||||
}
|
||||
|
||||
function Manage_Ok(sClass)
|
||||
{
|
||||
var objectsToAdd = document.getElementById('selected_objects');
|
||||
var aSelectedObjects = new Array();
|
||||
for (i=0; i<objectsToAdd.length;i++)
|
||||
{
|
||||
aSelectedObjects[aSelectedObjects.length] = objectsToAdd.options[i].value;
|
||||
}
|
||||
$('#related_object_ids').val(aSelectedObjects.join(' '));
|
||||
UpdateObjectList(sClass);
|
||||
}
|
||||
|
||||
function FilterLeft($sClass)
|
||||
{
|
||||
alert('Not Yet Implemented');
|
||||
}
|
||||
|
||||
function FilterRight($sClass)
|
||||
{
|
||||
alert('Not Yet Implemented');
|
||||
}
|
||||
EOF;
|
||||
$sManageObjectsDlg = <<< EOF
|
||||
<div class="page_header"><h1 id="Manage_DlgTitle">Selected Objects</h1></div>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<p>Selected objects:</p>
|
||||
<button type="button" class="action" onClick="FilterLeft('$sClass');"><span> Filter... </span></button>
|
||||
<p><select id="selected_objects" size="10" multiple onChange="Manage_UpdateButtons()" style="width:300px;">
|
||||
</select></p>
|
||||
</td>
|
||||
<td style="text-align:center; valign:middle;">
|
||||
<p><button type="button" id="btn_add_objects" onClick="Manage_AddObjects();"> << Add </button></p>
|
||||
<p><button type="button" id="btn_remove_objects" onClick="Manage_RemoveObjects();"> Remove >> </button></p>
|
||||
</td>
|
||||
<td>
|
||||
<p>Available objects:</p>
|
||||
<button type="button" class="action" onClick="FilterRight('$sClass');"><span> Filter... </span></button>
|
||||
<p><select id="available_objects" size="10" multiple onChange="Manage_UpdateButtons()" style="width:300px;">
|
||||
</select></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<button type="button" class="jqmClose" onClick="Manage_Ok('$sClass')"> Ok </button> <button type="button" class="jqmClose"> Cancel</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
EOF;
|
||||
$sHTML = '<input type="text" name="" id="current_object_id" size="30"/>
|
||||
<input type="hidden" id="related_object_ids" name="'.$sFieldName.'" value="">
|
||||
<button type="button" class="action" onClick="return AddObject(\''.$sClass.'\');"><span> Add </span></button>
|
||||
<button type="button" class="action" onClick="return ManageObjects(\''.$sTitle.'\', \''.$sClass.'\', \'related_object_ids\');"><span> ... </span></button>';
|
||||
$sHTML .= '<input type="hidden" id="ac_current_object_id" name="" value="">';
|
||||
$sHTML .= '<div class="jqmWindow" id="ManageObjectsDlg">'.$sManageObjectsDlg.'</div>';
|
||||
$oPage->add_script($sScript);
|
||||
$oPage->add_ready_script("\$('#current_object_id').autocomplete('./ajax.render.php', { minChars:3, onItemSelect:selectItem, onFindValue:findValue, formatItem:formatItem, autoFill:true, keyHolder:'#ac_current_object_id', extraParams:{operation:'link', sclass:'$sClass', attCode:'name'}});");
|
||||
$oPage->add_ready_script("$('#ManageObjectsDlg').jqm({overlay:70, modal:true, toTop:true});"); // jqModal Window
|
||||
$oPage->add_ready_script("UpdateObjectList('$sClass');");
|
||||
return $sHTML;
|
||||
}
|
||||
|
||||
function DisplayObjectPickerList(WebPage $oPage, $sClass)
|
||||
{
|
||||
$oFilter = new CMDBSearchFilter($sClass);
|
||||
$oFilter->AddCondition('pkey', array(0), 'IN');
|
||||
//$oPage->p($oFilter->__DescribeHTML());
|
||||
$oBlock = new DisplayBlock($oFilter, 'list', true /* Asynchronous */);
|
||||
$oBlock->Display($oPage, 'related_objects');
|
||||
}
|
||||
}
|
||||
|
||||
class IncidentCreationWizard extends DialogWizard
|
||||
{
|
||||
public function __construct($sStep)
|
||||
{
|
||||
parent::__construct($sStep);
|
||||
$this->m_aSteps =
|
||||
array(
|
||||
'1' => array('title' => 'attr_title', 'customer_id' => 'attr_customer_id', 'initial_situation' => 'attr_initial_situation', 'severity' => 'attr_severity', 'impact' => 'attr_impact', 'workgroup_id' => 'attr_workgroup_id', 'action_log' => 'attr_action_log'),
|
||||
'2' => array('impacted_infra_ids' => 'impacted_infra_ids'),
|
||||
'3' => array('additional_impacted_object_ids' => 'additional_impacted_object_ids'),
|
||||
'4' => array('related_incident_ids' => 'related_incident_ids'),
|
||||
'5' => array('contact_ids' => 'contact_ids'),
|
||||
);
|
||||
}
|
||||
|
||||
protected function AddContextToForm($oPage)
|
||||
{
|
||||
parent::AddContextToForm($oPage);
|
||||
$oPage->add("<input type=\"hidden\" name=\"operation\" value=\"new\" />\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"step\" value=\"".$this->m_sNextStep."\" />\n");
|
||||
}
|
||||
|
||||
public function DisplayNewTicketForm(WebPage $oPage)
|
||||
{
|
||||
assert($this->m_sCurrentStep == '1');
|
||||
$this->m_sNextStep = '2';
|
||||
$aFields = $this->GetFields();
|
||||
|
||||
$oPage->add('<form method="get">');
|
||||
$aDetails = array();
|
||||
$aAttributesDef = MetaModel::ListAttributeDefs('bizIncidentTicket');
|
||||
foreach($aFields as $sAttCode => $sFieldName)
|
||||
{
|
||||
$oAttDef = $aAttributesDef[$sAttCode];
|
||||
$sHTMLValue = cmdbAbstractObject::GetFormElementForField($oPage, 'bizIncidentTicket', $sAttCode, $oAttDef);
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel().' <span class="hilite">*</span>', 'value' => $sHTMLValue);
|
||||
}
|
||||
$oPage->details($aDetails);
|
||||
$this->AddContextToForm($oPage);
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"goBack()\"><span>Cancel</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\"><span>Next >></span></button>\n");
|
||||
$oPage->add('</form>');
|
||||
}
|
||||
|
||||
public function DisplayImpactedInfraForm(WebPage $oPage)
|
||||
{
|
||||
assert($this->m_sCurrentStep == '2');
|
||||
$this->m_sNextStep = '3';
|
||||
$oPage->add('<form method="get">');
|
||||
$aDetails = array();
|
||||
$sHTML = $this->GetObjectPicker($oPage, 'Impacted Infrastructure', 'impacted_infra_ids', 'logInfra');
|
||||
$aDetails[] = array('label' => 'Impacted element:', 'value' => $sHTML);
|
||||
$oPage->details($aDetails);
|
||||
$this->DisplayObjectPickerList($oPage, 'logInfra');
|
||||
$this->AddContextToForm($oPage);
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"goBack()\"><span><< Back</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\"><span>Next >></span></button>\n");
|
||||
$oPage->add('</form>');
|
||||
}
|
||||
|
||||
public function DisplayAdditionalImpactedObjectForm(WebPage $oPage)
|
||||
{
|
||||
assert($this->m_sCurrentStep == '3');
|
||||
$this->m_sNextStep = '4';
|
||||
$sImpactedInfraIds = Utils::ReadParam('impacted_infra_ids');
|
||||
|
||||
$sImpactedInfraIds = Utils::ReadParam('impacted_infra_ids', '');
|
||||
if (!empty($sImpactedInfraIds))
|
||||
{
|
||||
$oPage->p('Impacted Infrastructure:');
|
||||
$oFilter = new CMDBSearchFilter('logRealObject');
|
||||
$oFilter->AddCondition('pkey', explode(' ', $sImpactedInfraIds), 'IN');
|
||||
$oBlock = new DisplayBlock($oFilter, 'list', false /* Synchronous */);
|
||||
$oBlock->Display($oPage, 'impacted_infra');
|
||||
}
|
||||
|
||||
$aImpactedInfraIds = explode(' ', $sImpactedInfraIds);
|
||||
$oInfraSet = CMDBObjectSet::FromScratch('logRealObject');
|
||||
foreach($aImpactedInfraIds as $id)
|
||||
{
|
||||
$oObj = MetaModel::GetObject('logRealObject', $id);
|
||||
$oInfraSet->AddObject($oObj);
|
||||
}
|
||||
$aImpactedObject = $oInfraSet->GetRelatedObjects('impacts');
|
||||
$aAdditionalIds = array();
|
||||
foreach($aImpactedObject as $sRootClass => $aObjects)
|
||||
{
|
||||
foreach($aObjects as $oObj)
|
||||
{
|
||||
$aAdditionalIds[] = $oObj->GetKey();
|
||||
}
|
||||
}
|
||||
$sAdditionalIds = implode(' ', $aAdditionalIds);
|
||||
$oPage->add_ready_script('$("#related_object_ids").val("'.$sAdditionalIds.'");');
|
||||
|
||||
$oPage->p('Additional Impact Computed:');
|
||||
$this->DisplayObjectPickerList($oPage, 'logRealObject');
|
||||
$oPage->add('<form method="get">');
|
||||
$aDetails = array();
|
||||
$sHTML = $this->GetObjectPicker($oPage, 'Additional Impacted Infrastructure', 'additional_impacted_object_ids', 'logRealObject');
|
||||
$aDetails[] = array('label' => 'Impacted element:', 'value' => $sHTML);
|
||||
$oPage->details($aDetails);
|
||||
$this->AddContextToForm($oPage);
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"goBack()\"><span><< Back</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\"><span>Next >></span></button>\n");
|
||||
$oPage->add('</form>');
|
||||
}
|
||||
|
||||
public function DisplayRelatedTicketsForm(WebPage $oPage)
|
||||
{
|
||||
assert($this->m_sCurrentStep == '4');
|
||||
$this->m_sNextStep = '5';
|
||||
$oRelatedTicketsFilter = new DBObjectSearch('bizIncidentTicket');
|
||||
$sImpactedInfraIds = Utils::ReadParam('impacted_infra_ids', '');
|
||||
$sAdditionalImpactedObjectIds = Utils::ReadParam('additional_impacted_object_ids', '');
|
||||
$sIds = trim($sImpactedInfraIds.' '.$sAdditionalImpactedObjectIds);
|
||||
$aTicketIds = array();
|
||||
if (!empty($sIds))
|
||||
{
|
||||
$aIds = explode(' ', $sIds);
|
||||
$sSibusQL = "bizIncidentTicket: PKEY IS ticket_id IN (lnkInfraTicket: infra_id IN (logRealObject: pkey IN {".implode(',', $aIds)."}))";
|
||||
$oTicketSearch = DBObjectSearch::FromSibusQL($sSibusQL);
|
||||
$oRelatedTicketSet = new DBObjectSet($oTicketSearch);
|
||||
while ($oTicket = $oRelatedTicketSet->Fetch())
|
||||
{
|
||||
$aTicketIds[] = $oTicket->GetKey();
|
||||
}
|
||||
}
|
||||
|
||||
$sTicketIds = implode(' ', $aTicketIds);
|
||||
$oPage->add_ready_script('$("#related_object_ids").val("'.$sTicketIds.'");');
|
||||
$oPage->p('Potentially related incidents:');
|
||||
$this->DisplayObjectPickerList($oPage, 'bizIncidentTicket');
|
||||
|
||||
$oPage->add('<form method="get">');
|
||||
$sHTML = $this->GetObjectPicker($oPage, 'Related Incidents', 'related_incident_ids', 'bizIncidentTicket');
|
||||
$aDetails[] = array('label' => 'Related Incident:', 'value' => $sHTML);
|
||||
$oPage->details($aDetails);
|
||||
$this->AddContextToForm($oPage);
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"goBack()\"><span><< Back</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\"><span>Next >></span></button>\n");
|
||||
$oPage->add('</form>');
|
||||
}
|
||||
|
||||
public function DisplayContactsToNotifyForm(WebPage $oPage)
|
||||
{
|
||||
assert($this->m_sCurrentStep == '5');
|
||||
$this->m_sNextStep = '6';
|
||||
$oPage->add('<form method="get">');
|
||||
$sHTML = $this->GetObjectPicker($oPage, 'Contacts to notify', 'contact_ids', 'bizContact');
|
||||
$aDetails[] = array('label' => 'Additional contact:', 'value' => $sHTML);
|
||||
$oPage->details($aDetails);
|
||||
$this->DisplayObjectPickerList($oPage, 'bizContact');
|
||||
$this->AddContextToForm($oPage);
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"goBack()\"><span><< Back</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\"><span>Next >></span></button>\n");
|
||||
$oPage->add('</form>');
|
||||
}
|
||||
|
||||
function DisplayFinalForm(WebPage $oPage)
|
||||
{
|
||||
$oAppContext = new ApplicationContext();
|
||||
assert($this->m_sCurrentStep == '6');
|
||||
$this->m_sNextStep = '7';
|
||||
|
||||
$aDetails = array();
|
||||
$aAttributesDef = MetaModel::ListAttributeDefs('bizIncidentTicket');
|
||||
$aFields = $this->GetFields('1');
|
||||
foreach($aFields as $sAttCode => $sFieldName)
|
||||
{
|
||||
$oAttDef = $aAttributesDef[$sAttCode];
|
||||
$sValue = Utils::ReadParam($sFieldName, '');
|
||||
if ($oAttDef->IsExternalKey() && isset($sValue) && ($sValue != 0))
|
||||
{
|
||||
$oTargetObj = MetaModel::GetObject($oAttDef->GetTargetClass(), $sValue);
|
||||
if (!is_object($oTargetObj))
|
||||
{
|
||||
trigger_error("Houston: could not find ".$oAttDef->GetTargetClass()."::$sValue");
|
||||
}
|
||||
$sPage = cmdbAbstractObject::ComputeUIPage($oAttDef->GetTargetClass());
|
||||
$sHint = htmlentities($oAttDef->GetTargetClass()."::".$sValue);
|
||||
$sHTMLValue = "<a href=\"$sPage?operation=details&class=".$oAttDef->GetTargetClass()."&id=$sValue&".$oAppContext->GetForLink()."\" title=\"$sHint\">".$oTargetObj->GetName()."</a>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sHTMLValue = $oAttDef->GetAsHTML($sValue);
|
||||
}
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sHTMLValue);
|
||||
}
|
||||
$oPage->details($aDetails);
|
||||
|
||||
$oPage->AddTabContainer('LinkedObjects');
|
||||
$oPage->SetCurrentTabContainer('LinkedObjects');
|
||||
|
||||
$sImpactedInfraIds = Utils::ReadParam('impacted_infra_ids', '');
|
||||
$sImpactedInfraIds .= ' '.Utils::ReadParam('additional_impacted_object_ids', '');
|
||||
$sImpactedInfraIds = trim($sImpactedInfraIds);
|
||||
$oPage->SetCurrentTab("Infrastructure impacted");
|
||||
if (!empty($sImpactedInfraIds))
|
||||
{
|
||||
$oFilter = new CMDBSearchFilter('logRealObject');
|
||||
$oFilter->AddCondition('pkey', explode(' ', $sImpactedInfraIds), 'IN');
|
||||
$oBlock = new DisplayBlock($oFilter, 'list', false /* Synchronous */);
|
||||
$oBlock->Display($oPage, 'related_objects');
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("There is no infrastructure impacted by this incident");
|
||||
}
|
||||
|
||||
$sRelatedIncidentIds = Utils::ReadParam('related_incident_ids', '');
|
||||
$oPage->SetCurrentTab("Related tickets");
|
||||
if (!empty($sRelatedIncidentIds))
|
||||
{
|
||||
$oFilter = new CMDBSearchFilter('bizIncidentTicket');
|
||||
$oFilter->AddCondition('pkey', explode(' ', $sRelatedIncidentIds), 'IN');
|
||||
$oBlock = new DisplayBlock($oFilter, 'list', false /* Synchronous */);
|
||||
$oBlock->Display($oPage, 'related_incidents');
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("There is no other incident related to this one");
|
||||
}
|
||||
|
||||
$oPage->SetCurrentTab("Contacts to notify");
|
||||
$sContactIds = Utils::ReadParam('contact_ids', '');
|
||||
if (!empty($sContactIds))
|
||||
{
|
||||
$oFilter = new CMDBSearchFilter('bizContact');
|
||||
$oFilter->AddCondition('pkey', explode(' ', $sContactIds), 'IN');
|
||||
$oBlock = new DisplayBlock($oFilter, 'list', false /* Synchronous */);
|
||||
$oBlock->Display($oPage, 'contacts');
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("There is no contact to notify");
|
||||
}
|
||||
$oPage->SetCurrentTab();
|
||||
|
||||
$oPage->add('<form method="post" action="incident.php">');
|
||||
$this->AddContextToForm($oPage);
|
||||
$oPage->add("<button type=\"button\" class=\"action\" onClick=\"goBack()\"><span><< Back</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\" value=\"create\"><span> Create Ticket</span></button> \n");
|
||||
$oPage->add("<button type=\"submit\" class=\"action\" value=\"create_notify\"><span> Create Ticket and Send Notifications</span></button>\n");
|
||||
$oPage->add('</form>');
|
||||
}
|
||||
|
||||
public function CreateIncident(WebPage $oPage)
|
||||
{
|
||||
$oAppContext = new ApplicationContext();
|
||||
assert($this->m_sCurrentStep == '7');
|
||||
$this->m_sNextStep = '1';
|
||||
|
||||
$oIncident = MetaModel::NewObject('bizIncidentTicket');
|
||||
$oPage->p("Creation of Incident Ticket.");
|
||||
|
||||
$aFields = $this->GetFields('1');
|
||||
foreach($aFields as $sAttCode => $sFieldName)
|
||||
{
|
||||
$sValue = Utils::ReadPostedParam($sFieldName, '');
|
||||
$oIncident->Set($sAttCode, $sValue);
|
||||
}
|
||||
$oIncident->Set('ticket_status', 'New');
|
||||
$oIncident->Set('start_date', time());
|
||||
$oIncident->Set('name', 'ID not set');
|
||||
|
||||
if ($oIncident->CheckToInsert())
|
||||
{
|
||||
// Create the ticket itself
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$oMyChange->Set("userinfo", "Administrator");
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oIncident->DBInsertTracked($oMyChange);
|
||||
|
||||
$sName = sprintf('I-%06d', $oIncident->GetKey());
|
||||
$oIncident->Set('name', $sName);
|
||||
$oIncident->DBUpdateTracked($oMyChange);
|
||||
$oPage->p("Incident $sName created.\n");
|
||||
|
||||
// Now link the objects to the Incident:
|
||||
// 1) the impacted infra
|
||||
$sImpactedInfraIds = Utils::ReadParam('impacted_infra_ids', '');
|
||||
$sImpactedInfraIds .= ' '.Utils::ReadParam('additional_impacted_object_ids', '');
|
||||
$sImpactedInfraIds = trim($sImpactedInfraIds);
|
||||
if (!empty($sImpactedInfraIds))
|
||||
{
|
||||
$aImpactedInfra = explode(' ', $sImpactedInfraIds);
|
||||
foreach($aImpactedInfra as $iInfraId)
|
||||
{
|
||||
$oLink = MetaModel::NewObject('lnkInfraTicket');
|
||||
$oLink->Set('infra_id', $iInfraId);
|
||||
$oLink->Set('ticket_id', $oIncident->GetKey());
|
||||
$oLink->Set('impact', 'automatic');
|
||||
$oLink->DBInsertTracked($oMyChange);
|
||||
}
|
||||
}
|
||||
// 2) the related incidents
|
||||
$sRelatedIncidentsIds = Utils::ReadPostedParam('related_incident_ids');
|
||||
if (!empty($sRelatedIncidentsIds))
|
||||
{
|
||||
$aRelatedIncidents = explode(' ', $sRelatedIncidentsIds);
|
||||
foreach($aRelatedIncidents as $iIncidentId)
|
||||
{
|
||||
$oLink = MetaModel::NewObject('lnkRelatedTicket');
|
||||
$oLink->Set('rel_ticket_id', $iIncidentId);
|
||||
$oLink->Set('ticket_id', $oIncident->GetKey());
|
||||
$oLink->Set('impact', 'automatic');
|
||||
$oLink->DBInsertTracked($oMyChange);
|
||||
}
|
||||
}
|
||||
// 3) the contacts to notify
|
||||
$sContactsIds = Utils::ReadPostedParam('contact_ids');
|
||||
if (!empty($sContactsIds))
|
||||
{
|
||||
$aContactsToNotify = explode(' ', $sContactsIds);
|
||||
foreach($aContactsToNotify as $iContactId)
|
||||
{
|
||||
$oLink = MetaModel::NewObject('lnkContactRealObject');
|
||||
$oLink->Set('contact_id', $iContactId);
|
||||
$oLink->Set('object_id', $oIncident->GetKey());
|
||||
$oLink->Set('role', 'notification');
|
||||
$oLink->DBInsertTracked($oMyChange);
|
||||
}
|
||||
}
|
||||
$oIncident->DisplayDetails($oPage, 'bizIncidentTicket', $oIncident->GetKey());
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("<strong>Error: object can not be created!</strong>\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$oContext = new UserContext();
|
||||
$oAppContext = new ApplicationContext();
|
||||
$currentOrganization = utils::ReadParam('org_id', '');
|
||||
$operation = utils::ReadParam('operation', '');
|
||||
$oP = new iTopWebPage("ITop - Incident Management", $currentOrganization);
|
||||
|
||||
switch($operation)
|
||||
{
|
||||
case 'details':
|
||||
$sClass = utils::ReadParam('class', '');
|
||||
$id = utils::ReadParam('id', '');
|
||||
if ( empty($sClass) || empty($id)) // TO DO: check that the class name is valid !
|
||||
{
|
||||
$oP->add("<p>'class' and 'id' parameters must be specifed for this operation.</p>\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oObj = $oContext->GetObject($sClass, $id);
|
||||
if ($oObj != null)
|
||||
{
|
||||
$oP->set_title("iTop - ".$oObj->GetName()." - $sClass details");
|
||||
$oObj->DisplayDetails($oP);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oP->set_title("iTop - Error");
|
||||
$oP->add("<p>Sorry this object does not exist (or you are not allowed to view it).</p>\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'new':
|
||||
$step = utils::ReadParam('step', '1');
|
||||
$aSteps = array(
|
||||
'Ticket Information',
|
||||
'Impacted Infrastructure',
|
||||
'Additional Impact',
|
||||
'Related Tickets',
|
||||
'Contacts to Notify',
|
||||
'Confirmation',
|
||||
'Ticket Creation'
|
||||
);
|
||||
$oWizard = new IncidentCreationWizard($step);
|
||||
$oP = new iTopWizardWebPage("ITop - Incident Management", $currentOrganization, $step, $aSteps);
|
||||
|
||||
switch($step)
|
||||
{
|
||||
case 1:
|
||||
default:
|
||||
//$oP->add('<div class="page_header"><h1><span class="hilite">New incident</span></h1></div>');
|
||||
$oWizard->DisplayNewTicketForm($oP);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
//$oP->add('<div class="page_header"><h1>New ticket: <span class="hilite">Select the Impacted Infrastructure</span></h1></div>');
|
||||
$oWizard->DisplayImpactedInfraForm($oP);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//$oP->add('<div class="page_header"><h1>New ticket: <span class="hilite">Additional Impacted Objects</span></h1></div>');
|
||||
$oWizard->DisplayAdditionalImpactedObjectForm($oP);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
//$oP->add('<div class="page_header"><h1>New ticket: <span class="hilite">Select Related Incidents</span></h1></div>');
|
||||
$oWizard->DisplayRelatedTicketsForm($oP);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
//$oP->add('<div class="page_header"><h1>New ticket: <span class="hilite">Select the Contacts to Notify</span></h1></div>');
|
||||
$oWizard->DisplayContactsToNotifyForm($oP);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
//$oP->add('<div class="page_header"><h1>New ticket: <span class="hilite">Confirm and Create the Ticket</span></h1></div>');
|
||||
$oWizard->DisplayFinalForm($oP);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
$oWizard->CreateIncident($oP);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'modify':
|
||||
$oP->add_linked_script("../js/json.js");
|
||||
$oP->add_linked_script("../js/forms-json-utils.js");
|
||||
$oP->add_linked_script("../js/wizardhelper.js");
|
||||
$oP->add_linked_script("../js/wizard.utils.js");
|
||||
$oP->add_linked_script("../js/linkswidget.js");
|
||||
$oP->add_linked_script("../js/jquery.blockUI.js");
|
||||
$sClass = utils::ReadParam('class', '');
|
||||
$id = utils::ReadParam('id', '');
|
||||
if ( empty($sClass) || empty($id)) // TO DO: check that the class name is valid !
|
||||
{
|
||||
$oP->add("<p>'class' and 'id' parameters must be specifed for this operation.</p>\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oObj = $oContext->GetObject($sClass, $id);
|
||||
if ($oObj != null)
|
||||
{
|
||||
$oP->set_title("iTop - ".$oObj->GetName()." - $sClass modification");
|
||||
$oP->add("<h1>".$oObj->GetName()." - $sClass modification</h1>\n");
|
||||
$oObj->DisplayModifyForm($oP);
|
||||
}
|
||||
else
|
||||
{
|
||||
$oP->set_title("iTop - Error");
|
||||
$oP->add("<p>Sorry this object does not exist (or you are not allowed to view it).</p>\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'apply_modify':
|
||||
$sClass = utils::ReadPostedParam('class', '');
|
||||
$id = utils::ReadPostedParam('id', '');
|
||||
$sTransactionId = utils::ReadPostedParam('transaction_id', '');
|
||||
if ( empty($sClass) || empty($id)) // TO DO: check that the class name is valid !
|
||||
{
|
||||
$oP->add("<p>'class' and 'id' parameters must be specifed for this operation.</p>\n");
|
||||
}
|
||||
else if (!utils::IsTransactionValid($sTransactionId))
|
||||
{
|
||||
$oP->p("<strong>Error: object has already be updated!</strong>\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oObj = $oContext->GetObject($sClass, $id);
|
||||
if ($oObj != null)
|
||||
{
|
||||
$oP->set_title("iTop - ".$oObj->GetName()." - $sClass modification");
|
||||
$oP->add("<h1>".$oObj->GetName()." - $sClass modification</h1>\n");
|
||||
$bObjectModified = false;
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($oObj)) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
$iFlags = $oObj->GetAttributeFlags($sAttCode);
|
||||
if ($iFlags & (OPT_ATT_HIDDEN | OPT_ATT_READONLY))
|
||||
{
|
||||
// Non-visible, or read-only attribute, do nothing
|
||||
}
|
||||
else if ($sAttCode == 'finalclass')
|
||||
{
|
||||
// This very specific field is read-only
|
||||
}
|
||||
else if (!$oAttDef->IsExternalField())
|
||||
{
|
||||
$aAttributes[$sAttCode] = trim(utils::ReadPostedParam("attr_$sAttCode", null));
|
||||
$previousValue = $oObj->Get($sAttCode);
|
||||
if (!is_null($aAttributes[$sAttCode]) && ($previousValue != $aAttributes[$sAttCode]))
|
||||
{
|
||||
$oObj->Set($sAttCode, $aAttributes[$sAttCode]);
|
||||
$bObjectModified = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$bObjectModified)
|
||||
{
|
||||
$oP->p("No modification detected. ".get_class($oObj)." has <strong>not</strong> been updated.\n");
|
||||
}
|
||||
else if ($oObj->CheckToUpdate())
|
||||
{
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$oMyChange->Set("userinfo", "Made by somebody"); // TO DO put the correct user info here
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oObj->DBUpdateTracked($oMyChange);
|
||||
|
||||
$oP->p(get_class($oObj)." updated.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oP->p("<strong>Error: object can not be updated!</strong>\n");
|
||||
//$oObj->Reload(); // restore default values!
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$oP->set_title("iTop - Error");
|
||||
$oP->add("<p>Sorry this object does not exist (or you are not allowed to edit it).</p>\n");
|
||||
}
|
||||
}
|
||||
$oP->add("<p>Alors ça roule ?</p>");
|
||||
$oObj->DisplayDetails($oP);
|
||||
break;
|
||||
}
|
||||
$oP->output();
|
||||
?>
|
||||
667
pages/index.php
667
pages/index.php
@@ -1,667 +0,0 @@
|
||||
<?php
|
||||
require_once('../application/application.inc.php');
|
||||
require_once('../application/nicewebpage.class.inc.php');
|
||||
require_once('../application/dialogstack.class.inc.php');
|
||||
|
||||
require_once('../application/startup.inc.php');
|
||||
|
||||
$oPage = new NiceWebPage("The very first iTop page");
|
||||
$oPage->no_cache();
|
||||
|
||||
|
||||
|
||||
MetaModel::CheckDefinitions();
|
||||
// new API - MetaModel::DBCheckFormat();
|
||||
// not necessary, and time consuming!
|
||||
// MetaModel::DBCheckIntegrity();
|
||||
|
||||
|
||||
// Comment by Rom: MetaModel::GetSubclasses("logRealObject") retourne la totale
|
||||
// utiliser IsRootClass pour savoir si une classe obtenue est une classe feuille ou non
|
||||
$aTopLevelClasses = array('bizService', 'bizLocation', 'bizContact', 'logInfra', 'bizDocument', 'bizObject');
|
||||
|
||||
function ReadParam($sName, $defaultValue = "")
|
||||
{
|
||||
return isset($_REQUEST[$sName]) ? $_REQUEST[$sName] : $defaultValue;
|
||||
}
|
||||
|
||||
function DisplaySelectOrg($oPage, $sCurrentOrganization, $iContext)
|
||||
{
|
||||
global $oContext;
|
||||
|
||||
//$oSearchFilter = new CMDBSearchFilter("bizOrganization");
|
||||
$oSearchFilter = $oContext->NewFilter("bizOrganization");
|
||||
$oPage->p($oSearchFilter->serialize());
|
||||
$oSet = new CMDBObjectSet($oSearchFilter);
|
||||
if ($oSet->Count() == 0)
|
||||
{
|
||||
$oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
|
||||
$oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0;text-align:center\">\n");
|
||||
$oPage->p("No organization found.\n");
|
||||
$oPage->p($oSearchFilter->__DescribeHTML());
|
||||
$oPage->add("</div>\n");
|
||||
$oPage->add("</div>\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oCurrentOrganization = null;
|
||||
$oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
|
||||
$oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0;text-align:center\">\n");
|
||||
$oPage->add("<form method=\"get\"\">\n");
|
||||
$oPage->add("Select the context:\n");
|
||||
$oPage->add("<select name=\"ctx\">\n");
|
||||
$oPage->add("<option value=\"1\"".($iContext == 1 ? "selected" : "").">See everything (no context)</option>\n");
|
||||
$oPage->add("<option value=\"2\"".($iContext == 2 ? "selected" : "").">See only the iTop organization</option>\n");
|
||||
$oPage->add("<option value=\"3\"".($iContext == 3 ? "selected" : "").">See only organizations which name contains 'o', and contact in France (tel. contains +33)</option>\n");
|
||||
$oPage->add("</select>\n");
|
||||
$oPage->p("");
|
||||
$oPage->add("Select an organization: \n");
|
||||
$oPage->add("<select name=\"org\"\">\n");
|
||||
while($oOrg = $oSet->Fetch())
|
||||
{
|
||||
if ($sCurrentOrganization == $oOrg->GetKey())
|
||||
{
|
||||
$oCurrentOrganization = $oOrg;
|
||||
$sSelected = " selected";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sSelected = "";
|
||||
}
|
||||
$oPage->add("<option value=\"".$oOrg->GetKey()."\"$sSelected>".$oOrg->Get('name')."</option>\n");
|
||||
}
|
||||
$oPage->add("</select>\n");
|
||||
$oPage->add("<input type=\"submit\" value=\" Search \">\n");
|
||||
$oPage->add("</form>\n");
|
||||
if ($oCurrentOrganization != null)
|
||||
{
|
||||
$oCurrentOrganization->DisplayDetails($oPage);
|
||||
}
|
||||
$oPage->add("</div>\n");
|
||||
$oPage->add("</div>\n");
|
||||
}
|
||||
}
|
||||
|
||||
function DisplayDetails(WebPage $oPage, $sClassName, $sKey)
|
||||
{
|
||||
global $oContext;
|
||||
//$oObj = MetaModel::GetObject($sClassName, $sKey);
|
||||
$oObj = $oContext->GetObject($sClassName, $sKey);
|
||||
$oPage->p("Details of ".MetaModel::GetName($sClassName)." - $sKey");
|
||||
|
||||
$oObj->DisplayDetails($oPage);
|
||||
|
||||
// Modified by rom
|
||||
$aLinks = array();
|
||||
$aLinks[] = "<a href=\"?operation=changeslog&class=$sClassName&key=$sKey\">View changes log</a>";
|
||||
$aLinks[] = "<a href=\"?operation=edit&class=$sClassName&key=$sKey\">Edit this object</a>";
|
||||
$aLinks[] = "<a href=\"?operation=delete&class=$sClassName&key=$sKey\">Delete this object (no confirmation!)</a>";
|
||||
// By rom
|
||||
foreach (MetaModel::EnumLinkingClasses($sClassName) as $sLinkClass => $aRemoteClasses)
|
||||
{
|
||||
foreach($aRemoteClasses as $sExtKeyAttCode => $sRemoteClass)
|
||||
{
|
||||
// #@# quick and dirty: guess the extkey attcode from link to current class
|
||||
// later, this information should be part of the biz model
|
||||
$sExtKeyToMe = "";
|
||||
foreach(MetaModel::ListAttributeDefs($sLinkClass) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if ($oAttDef->IsExternalKey() && $oAttDef->GetTargetClass() == $sClassName)
|
||||
{
|
||||
$sExtKeyToMe = $sAttCode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (empty($sExtKeyToMe))
|
||||
{
|
||||
$oPage->p("Houston... could not find the external key for $sClassName in $sLinkClass");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oFilter = new CMDBSearchFilter($sRemoteClass); // just a dummy empty one for edition
|
||||
|
||||
$sButton = "<div>\n";
|
||||
$sButton .= "<form action=\"./advanced_search.php\" method=\"post\">\n";
|
||||
$aOnOKArgs = array("operation"=>"addlinks", "linkclass"=>$sLinkClass, "extkeytome"=>$sExtKeyToMe, "extkeytopartner"=>$sExtKeyAttCode);
|
||||
$sButton .= dialogstack::RenderEditableField("Add links with $sRemoteClass", "filter", $oFilter->serialize(), true, "", $aOnOKArgs);
|
||||
$sButton .= "</form>\n";
|
||||
$sButton .= "</div>\n";
|
||||
$aLinks[] = $sButton;
|
||||
}
|
||||
}
|
||||
}
|
||||
$sLinks = implode(" / ", $aLinks);
|
||||
$oPage->p($sLinks);
|
||||
}
|
||||
|
||||
// By Rom
|
||||
function DisplayChangesLog(WebPage $oPage, $sClassName, $sKey)
|
||||
{
|
||||
global $oContext;
|
||||
//$oObj = MetaModel::GetObject($sClassName, $sKey);
|
||||
$oObj = $oContext->GetObject($sClassName, $sKey);
|
||||
$oPage->p("Changes log for ".MetaModel::GetName($sClassName)." - $sKey");
|
||||
|
||||
$oObj->DisplayChangesLog($oPage);
|
||||
|
||||
$oPage->p("<a href=\"?operation=details&class=$sClassName&key=$sKey\">View details</a>");
|
||||
$oPage->p("<a href=\"?operation=edit&class=$sClassName&key=$sKey\">Edit this object</a>");
|
||||
$oPage->p("<a href=\"?operation=delete&class=$sClassName&key=$sKey\">Delete this object (no confirmation!)</a>");
|
||||
}
|
||||
|
||||
function DumpObjects(WebPage $oPage, $sClassName, CMDBSearchFilter $oSearchFilter = null)
|
||||
{
|
||||
global $oContext;
|
||||
|
||||
if ($oSearchFilter == null)
|
||||
{
|
||||
//$oSearchFilter = new CMDBSearchFilter($sClassName);
|
||||
$oSearchFilter = $oContext->NewFilter($sClassName);
|
||||
}
|
||||
$aAttribs = array();
|
||||
foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
$aAttribs['key'] = array('label' => 'key', 'description' => 'Primary Key');
|
||||
$aAttribs[$sAttCode] = array('label' => $oAttDef->GetLabel(), 'description' => $oAttDef->GetDescription());
|
||||
}
|
||||
$oObjectSet = new CMDBObjectSet($oSearchFilter);
|
||||
|
||||
$aValues = array();
|
||||
while ($oObj = $oObjectSet->Fetch())
|
||||
{
|
||||
$aRow['key'] = "<a href=\"./index.php?operation=details&class=$sClassName&key=".$oObj->GetKey()."\">".$oObj->GetKey()."</a>";
|
||||
foreach($oObj->GetAttributesList($sClassName) as $sAttCode)
|
||||
{
|
||||
$aRow[$sAttCode] = $oObj->GetAsHTML($sAttCode);
|
||||
}
|
||||
$aValues[] = $aRow;
|
||||
}
|
||||
$oPage->table($aAttribs, $aValues);
|
||||
}
|
||||
|
||||
function DisplayEditForm(WebPage $oPage, $sClassName, $sKey)
|
||||
{
|
||||
global $oContext;
|
||||
//$oObj = MetaModel::GetObject($sClassName, $sKey);
|
||||
$oObj = $oContext->GetObject($sClassName, $sKey);
|
||||
if ($oObj == null)
|
||||
{
|
||||
$oPage->p("You are not allowed to edit this object.");
|
||||
return;
|
||||
}
|
||||
$oPage->p("Edition of ".MetaModel::GetName($sClassName)." - $sKey\n");
|
||||
|
||||
$aDetails = array();
|
||||
$oPage->add("<form method=\"post\">\n");
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($oObj)) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if (!$oAttDef->IsExternalField())
|
||||
{
|
||||
if ($oAttDef->IsExternalKey())
|
||||
{
|
||||
//External key, display a combo
|
||||
$sTargetClass = $oAttDef->GetTargetClass();
|
||||
//$oFilter = new CMDBSearchFilter($sTargetClass);
|
||||
$oFilter = $oContext->NewFilter($sTargetClass);
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
$sValue = "<select name=\"attr[$sAttCode]\">\n";
|
||||
while($oTargetObj = $oSet->Fetch())
|
||||
{
|
||||
if ($oObj->Get($sAttCode) == $oTargetObj->GetKey())
|
||||
{
|
||||
$sSelected = " selected";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sSelected = "";
|
||||
}
|
||||
$sValue .= "<option value=\"".$oTargetObj->GetKey()."\"$sSelected>".$oTargetObj->Get('name')."</option>\n";
|
||||
}
|
||||
$sValue .= "</select>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sValue = "<input size=\"50\" name=\"attr[$sAttCode]\" value=\"".($oObj->Get($sAttCode))."\">";
|
||||
}
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sValue);
|
||||
}
|
||||
}
|
||||
$oPage->details($aDetails);
|
||||
$oPage->add("<input type=\"hidden\" name=\"key\" value=\"$sKey\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"class\" value=\"$sClassName\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"operation\" value=\"update\">\n");
|
||||
$oPage->add("<input type=\"submit\" value=\" Update \">\n");
|
||||
$oPage->add("<form method=\"post\">\n");
|
||||
}
|
||||
|
||||
function DisplayCreationForm(WebPage $oPage, $sClassName)
|
||||
{
|
||||
global $oContext;
|
||||
$oPage->p("New $sClassName\n");
|
||||
|
||||
$aDetails = array();
|
||||
$oPage->add("<form method=\"post\">\n");
|
||||
foreach(MetaModel::ListAttributeDefs($sClassName) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if (!$oAttDef->IsExternalField())
|
||||
{
|
||||
if ($oAttDef->IsExternalKey())
|
||||
{
|
||||
//External key, display a combo
|
||||
$sTargetClass = $oAttDef->GetTargetClass();
|
||||
//$oFilter = new CMDBSearchFilter($sTargetClass);
|
||||
$oFilter = $oContext->NewFilter($sTargetClass);
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
$sValue = "<select name=\"attr[$sAttCode]\">\n";
|
||||
while($oTargetObj = $oSet->Fetch())
|
||||
{
|
||||
$sValue .= "<option value=\"".$oTargetObj->GetKey()."\">".$oTargetObj->Get('name')."</option>\n";
|
||||
}
|
||||
$sValue .= "</select>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sValue = "<input size=\"50\" name=\"attr[$sAttCode]\" value=\"".$oAttDef->GetDefaultValue()."\">";
|
||||
}
|
||||
$aDetails[] = array('label' => $oAttDef->GetLabel(), 'value' => $sValue);
|
||||
}
|
||||
}
|
||||
$oPage->details($aDetails);
|
||||
$oPage->add("<input type=\"hidden\" name=\"class\" value=\"$sClassName\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"operation\" value=\"create\">\n");
|
||||
$oPage->add("<input type=\"submit\" value=\" Create \">\n");
|
||||
$oPage->add("<form method=\"post\">\n");
|
||||
}
|
||||
|
||||
function UpdateObject(WebPage $oPage, $sClassName, $sKey, $aAttributes)
|
||||
{
|
||||
global $oContext;
|
||||
//$oObj = MetaModel::GetObject($sClassName, $sKey);
|
||||
$oObj = $oContext->GetObject($sClassName, $sKey);
|
||||
if ($oObj == null)
|
||||
{
|
||||
$oPage->p("You are not allowed to edit this object.");
|
||||
return;
|
||||
}
|
||||
$oPage->p("Update of $sClassName - $sKey");
|
||||
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($oObj)) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if (isset($aAttributes[$sAttCode]))
|
||||
{
|
||||
$oObj->Set($sAttCode, $aAttributes[$sAttCode]);
|
||||
}
|
||||
}
|
||||
if ($oObj->CheckToUpdate())
|
||||
{
|
||||
// By rom
|
||||
// $oObj->DBUpdate();
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$oMyChange->Set("userinfo", "Made by somebody");
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oObj->DBUpdateTracked($oMyChange);
|
||||
|
||||
$oPage->p(MetaModel::GetName($sClassName)." updated\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("<strong>Error: object can not be updated!</strong>\n");
|
||||
$oObj->DBRevert(); // restore default values!
|
||||
}
|
||||
// By Rom
|
||||
// $oObj->DisplayDetails($oPage);
|
||||
// replaced by...
|
||||
DisplayDetails($oPage, $sClassName, $sKey);
|
||||
$oPage->p("<a href=\"\">Return to main page</a>");
|
||||
}
|
||||
|
||||
function DeleteObject(WebPage $oPage, $sClassName, $sKey)
|
||||
{
|
||||
global $oContext;
|
||||
$sClassLabel = MetaModel::GetName($sClassName);
|
||||
//$oObj = MetaModel::GetObject($sClassName, $sKey);
|
||||
$oObj = $oContext->GetObject($sClassName, $sKey);
|
||||
if ($oObj == null)
|
||||
{
|
||||
$oPage->p("You are not allowed to delete this object.");
|
||||
return;
|
||||
}
|
||||
$oPage->p("Deletion of $sClassLabel - $sKey");
|
||||
|
||||
if ($oObj->CheckToDelete())
|
||||
{
|
||||
// By Rom
|
||||
//$oObj->DBDelete();
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$oMyChange->Set("userinfo", "Made by somebody");
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oObj->DBDeleteTracked($oMyChange);
|
||||
|
||||
$oPage->p("$sClassLabel deleted\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("<strong>Error: object can not be deleted!</strong>\n");
|
||||
// By Rom
|
||||
DisplayDetails($oPage, $sClassName, $sKey);
|
||||
}
|
||||
$oPage->p("<a href=\"\">Return to main page</a>");
|
||||
}
|
||||
|
||||
function CreateObject(WebPage $oPage, $sClassName, $aAttributes)
|
||||
{
|
||||
$oObj = MetaModel::NewObject($sClassName);
|
||||
$sClassLabel = MetaModel::GetName(get_class($oObj));
|
||||
$oPage->p("Creation of $sClassLabel object.");
|
||||
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($oObj)) as $sAttCode=>$oAttDef)
|
||||
{
|
||||
if (isset($aAttributes[$sAttCode]))
|
||||
{
|
||||
$oObj->Set($sAttCode, $aAttributes[$sAttCode]);
|
||||
}
|
||||
}
|
||||
list($bRes, $aIssues) = $oObj->CheckToInsert();
|
||||
if ($bRes)
|
||||
{
|
||||
// By rom
|
||||
// $oObj->DBInsert();
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$oMyChange->Set("userinfo", "Made by somebody");
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oObj->DBInsertTracked($oMyChange);
|
||||
|
||||
$oPage->p($sClassLabel." created\n");
|
||||
|
||||
// By Rom
|
||||
// $oObj->DisplayDetails($oPage);
|
||||
// replaced by...
|
||||
DisplayDetails($oPage, get_class($oObj), $oObj->GetKey());
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("<strong>Error: object can not be created!</strong>\n");
|
||||
$oPage->add("<ul>Issues:");
|
||||
foreach($aIssues as $sErrorMsg)
|
||||
{
|
||||
$oPage->add("<li>$sErrorMsg</li>");
|
||||
}
|
||||
$oPage->add("</ul>");
|
||||
}
|
||||
$oPage->p("<a href=\"\">Return to main page</a>");
|
||||
}
|
||||
|
||||
// By Rom
|
||||
function AddLinks($oPage, $sClassName, $sKey, $sLinkClass, $sExtKeyToMe, $sExtKeyToPartner, $sFilter)
|
||||
{
|
||||
global $oContext;
|
||||
$sClassLabel = MetaModel::GetName($sClassName);
|
||||
//$oObj = MetaModel::GetObject($sClassName, $sKey);
|
||||
$oObj = $oContext->GetObject($sClassName, $sKey);
|
||||
if ($oObj == null)
|
||||
{
|
||||
$oPage->p("You are not allowed to modify (create links on) this object.");
|
||||
return;
|
||||
}
|
||||
$oPage->p("Creating links for $sClassLabel - $sKey");
|
||||
|
||||
$oFilter = CMDBSearchFilter::unserialize($sFilter);
|
||||
$oPage->p("Linking to ".$oFilter->__DescribeHTML());
|
||||
|
||||
$oObjSet = new CMDBObjectSet($oFilter);
|
||||
if ($oObjSet->Count() != 0)
|
||||
{
|
||||
while($oPartnerObj = $oObjSet->Fetch())
|
||||
{
|
||||
$oNewLink = MetaModel::NewObject($sLinkClass);
|
||||
$oNewLink->Set($sExtKeyToMe, $sKey);
|
||||
$oNewLink->Set($sExtKeyToPartner, $oPartnerObj->GetKey());
|
||||
list($bRes, $aIssues) = $oNewLink->CheckToInsert();
|
||||
if ($bRes)
|
||||
{
|
||||
$oMyChange = MetaModel::NewObject("CMDBChange");
|
||||
$oMyChange->Set("date", time());
|
||||
$oMyChange->Set("userinfo", "Made by somebody");
|
||||
$iChangeId = $oMyChange->DBInsert();
|
||||
$oNewLink->DBInsertTracked($oMyChange);
|
||||
|
||||
$oPage->p(MetaModel::GetName($sLinkClass)." created\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("<strong>Error: link can not be created!</strong>\n");
|
||||
$oPage->add("<ul>Issues:");
|
||||
foreach($aIssues as $sErrorMsg)
|
||||
{
|
||||
$oPage->add("<li>$sErrorMsg</li>");
|
||||
}
|
||||
$oPage->add("</ul>");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// M a i n P r o g r a m
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$operation = ReadParam('operation', '');
|
||||
$iContext = ReadParam('ctx', 1);
|
||||
|
||||
$oContext = new UserContext();
|
||||
|
||||
switch($iContext)
|
||||
{
|
||||
case 2: // See only the organization 'ITOP'
|
||||
$oContext->AddCondition('bizOrganization', 'pkey', 'ITOP', '=');
|
||||
$oContext->AddCondition('logRealObject', 'organization', 'ITOP', '=');
|
||||
break;
|
||||
|
||||
case 3: // See only the organization containing 'o' and contacts containing +33
|
||||
$oContext->AddCondition('Organization', 'name', 'o', 'Contains');
|
||||
//$oContext->AddCondition('Object', 'orgname', 'o', 'Contains');
|
||||
$oContext->AddCondition('Contact', 'phone', '+33', 'Contains');
|
||||
break;
|
||||
|
||||
case 1: // No limitation
|
||||
default:
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
dialogstack::DeclareCaller("Main navigation menu");
|
||||
|
||||
switch($operation)
|
||||
{
|
||||
case 'details':
|
||||
$sClass = ReadParam('class');
|
||||
$sKey = ReadParam('key');
|
||||
DisplayDetails($oPage, $sClass, $sKey);
|
||||
break;
|
||||
|
||||
// By rom
|
||||
case 'changeslog':
|
||||
$sClass = ReadParam('class');
|
||||
$sKey = ReadParam('key');
|
||||
DisplayChangesLog($oPage, $sClass, $sKey);
|
||||
break;
|
||||
|
||||
case 'edit':
|
||||
$sClass = ReadParam('class');
|
||||
$sKey = ReadParam('key');
|
||||
DisplayEditForm($oPage, $sClass, $sKey);
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
$sClass = ReadParam('class');
|
||||
$sKey = ReadParam('key');
|
||||
$aAttributes = ReadParam('attr', array());
|
||||
UpdateObject($oPage, $sClass, $sKey, $aAttributes);
|
||||
break;
|
||||
|
||||
case 'new':
|
||||
$sClass = ReadParam('class');
|
||||
DisplayCreationForm($oPage, $sClass);
|
||||
break;
|
||||
|
||||
case 'create':
|
||||
$sClass = ReadParam('class');
|
||||
$aAttributes = ReadParam('attr', array());
|
||||
CreateObject($oPage, $sClass, $aAttributes);
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
$sClass = ReadParam('class');
|
||||
$sKey = ReadParam('key');
|
||||
DeleteObject($oPage, $sClass, $sKey);
|
||||
break;
|
||||
|
||||
case 'addlinks':
|
||||
$sClass = ReadParam('class');
|
||||
$sKey = ReadParam('key');
|
||||
$sLinkClass = ReadParam('linkclass');
|
||||
$sExtKeyToMe = ReadParam('extkeytome');
|
||||
$sExtKeyToPartner = ReadParam('extkeytopartner');
|
||||
$sFilter = ReadParam('filter');
|
||||
AddLinks($oPage, $sClass, $sKey, $sLinkClass, $sExtKeyToMe, $sExtKeyToPartner, $sFilter);
|
||||
break;
|
||||
|
||||
default:
|
||||
$sCurrentOrganization = ReadParam('org', '');
|
||||
$sActiveTab = ReadParam('classname', '');
|
||||
DisplaySelectOrg($oPage, $sCurrentOrganization, $iContext);
|
||||
if ($sCurrentOrganization != "")
|
||||
{
|
||||
$oPage->add("<div id=\"classesTabs\" class=\"light\">\n");
|
||||
$oPage->add("<ul>\n");
|
||||
$index = 1;
|
||||
$iActiveTabIndex = 1; // By default the first tab is the active one
|
||||
foreach( $aTopLevelClasses as $sClassName)
|
||||
{
|
||||
if ($sClassName == $sActiveTab)
|
||||
{
|
||||
$iActiveTabIndex = $index;
|
||||
}
|
||||
$oPage->add("\t<li><a href=\"#tab_$sClassName\">$sClassName</a></li>\n");
|
||||
$index++;
|
||||
}
|
||||
$oPage->add("</ul>\n");
|
||||
foreach( $aTopLevelClasses as $sClassName)
|
||||
{
|
||||
$sClassLabel = MetaModel::GetName($sClassName);
|
||||
$oPage->add("<div id=\"tab_$sClassName\">");
|
||||
if (count(MetaModel::GetSubclasses($sClassName)) > 0)
|
||||
{
|
||||
$sActiveSubclass = ReadParam('subclassname', '');
|
||||
foreach(MetaModel::GetSubclasses($sClassName) as $sSubclassName)
|
||||
{
|
||||
$sSubclassLabel = MetaModel::GetName($sSubclassName);
|
||||
//$oSearchFilter = new CMDBSearchFilter($sSubclassName);
|
||||
$oSearchFilter = $oContext->NewFilter($sSubclassName);
|
||||
$oSearchFilter ->AddCondition('org_id', $sCurrentOrganization, '=');
|
||||
|
||||
$oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
|
||||
$oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0\">\n");
|
||||
$oPage->p("<strong>$sSubclassLabel</strong> - ".MetaModel::GetClassDescription($sSubclassName));
|
||||
$oPage->add("<form method=\"get\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"classname\" value=\"$sClassName\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"subclassname\" value=\"$sSubclassName\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"ctx\" value=\"$iContext\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"org\" value=\"$sCurrentOrganization\">\n");
|
||||
foreach( MetaModel::GetClassFilterDefs($sSubclassName) as $sFilterCode=>$oFilterDef)
|
||||
{
|
||||
$sFilterValue = "";
|
||||
if (($sActiveTab == $sClassName) && ($sActiveSubclass == $sSubclassName))
|
||||
{
|
||||
$sFilterValue = ReadParam($sFilterCode, '');
|
||||
if (!empty($sFilterValue))
|
||||
{
|
||||
$oSearchFilter->AddCondition($sFilterCode, $sFilterValue, 'Contains');
|
||||
}
|
||||
}
|
||||
$oPage->add($oFilterDef->GetLabel().": <input name=\"$sFilterCode\" value=\"$sFilterValue\"/> \n");
|
||||
}
|
||||
$oPage->add("<input type=\"submit\" value=\"Search\">\n");
|
||||
$oPage->add("</form>\n");
|
||||
$oPage->add("</div>\n");
|
||||
|
||||
$oSet = new CMDBObjectSet($oSearchFilter);
|
||||
$iMatchesCount = $oSet->Count();
|
||||
if ($iMatchesCount == 0)
|
||||
{
|
||||
$oPage->p("No $sSubclassLabel matches these criteria.");
|
||||
$oPage->small_p("(".$oSearchFilter->__DescribeHTML().")");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("$iMatchesCount item(s) found.");
|
||||
cmdbAbstractObject::DisplaySet($oPage, $oSet);
|
||||
}
|
||||
$oPage->p("<a href=\"?operation=new&class=$sSubclassName\">Create a new $sSubclassLabel</a>\n");
|
||||
$oPage->add("</div>\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// No subclasses, list the form directly
|
||||
//$oSearchFilter = new CMDBSearchFilter($sClassName);
|
||||
$oSearchFilter = $oContext->NewFilter($sClassName);
|
||||
$oSearchFilter ->AddCondition('org_id', $sCurrentOrganization, '=');
|
||||
|
||||
$oPage->add("<div style=\"border:1px solid #97a5b0; margin-top:0.5em;\">\n");
|
||||
$oPage->add("<div style=\"padding:0.25em;background-color:#f0f0f0\">\n");
|
||||
$oPage->p("<strong>$sClassLabel</strong> - ".MetaModel::GetClassDescription($sClassName));
|
||||
$oPage->add("<form method=\"get\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"classname\" value=\"$sClassName\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"org\" value=\"$sCurrentOrganization\">\n");
|
||||
$oPage->add("<input type=\"hidden\" name=\"ctx\" value=\"$iContext\">\n");
|
||||
foreach( MetaModel::GetClassFilterDefs($sClassName) as $sFilterCode=>$oFilterDef)
|
||||
{
|
||||
$sFilterValue = "";
|
||||
if ($sActiveTab == $sClassName)
|
||||
{
|
||||
$sFilterValue = ReadParam($sFilterCode, '');
|
||||
if (!empty($sFilterValue))
|
||||
{
|
||||
$oSearchFilter->AddCondition($sFilterCode, $sFilterValue, 'Contains');
|
||||
}
|
||||
}
|
||||
$oPage->add($oFilterDef->GetLabel().": <input name=\"$sFilterCode\" value=\"$sFilterValue\"/> \n");
|
||||
}
|
||||
$oPage->add("<input type=\"submit\" value=\"Search\">\n");
|
||||
$oPage->add("</form>\n");
|
||||
$oPage->add("</div>\n");
|
||||
$oPage->add("<div style=\"padding:0.25em;background-color:#fff\">\n");
|
||||
$oSet = new CMDBObjectSet($oSearchFilter);
|
||||
$iMatchesCount = $oSet->Count();
|
||||
if ($iMatchesCount == 0)
|
||||
{
|
||||
$oPage->p("No $sClassLabel matches these criteria.");
|
||||
$oPage->small_p("(".$oSearchFilter->__DescribeHTML().")");
|
||||
}
|
||||
else
|
||||
{
|
||||
$oPage->p("$iMatchesCount item(s) found.");
|
||||
cmdbAbstractObject::DisplaySet($oPage, $oSet);
|
||||
$oPage->small_p("(".$oSearchFilter->__DescribeHTML().")");
|
||||
}
|
||||
$oPage->p("<a href=\"?operation=new&ctx=$iContext&class=$sClassName\">Create a new $sClassLabel</a>\n");
|
||||
$oPage->add("</div>\n");
|
||||
$oPage->add("</div>\n");
|
||||
}
|
||||
$oPage->add("</div>\n");
|
||||
}
|
||||
$oPage->add("</div>\n");
|
||||
$oPage->add_script('$(function() {$("#classesTabs > ul").tabs( '.$iActiveTabIndex.', { fxFade: true, fxSpeed: \'fast\' } );});');
|
||||
}
|
||||
}
|
||||
$oPage->output();
|
||||
?>
|
||||
@@ -446,7 +446,7 @@ function DisplayRelationDetails($oPage, $sRelCode)
|
||||
$bPropagate = $aQuery['bPropagate'] ? "Propagate" : "Do not propagate";
|
||||
$iDistance = $aQuery['iDistance'];
|
||||
|
||||
$oPage->add("<li>$sRelKey: $bPropagate ($iDistance) ".DBObjectSearch::SibuSQLAsHtml($sQuery)."</li>\n");
|
||||
$oPage->add("<li>$sRelKey: $bPropagate ($iDistance) ".$sQuery."</li>\n");
|
||||
}
|
||||
$oPage->add("</ul>\n");
|
||||
$oPage->add("</li>\n");
|
||||
|
||||
@@ -537,35 +537,17 @@ class TestMyBizModel extends TestBizModel
|
||||
|
||||
}
|
||||
|
||||
function test_SibuSQL()
|
||||
{
|
||||
echo "<h4>Simple But Structured Query Language</h4>";
|
||||
|
||||
$oMyFilter = new DBObjectSearch("cmdbContact");
|
||||
echo "Tous les contacts: ".$oMyFilter->ToSibuSQL()."<br/>\n";
|
||||
$oNewFilter = DBObjectSearch::FromSibuSQL($oMyFilter->ToSibuSQL());
|
||||
echo "En passant par un filtre, ca revient en : ".$oNewFilter->ToSibuSQL()."</br>\n";
|
||||
$this->search_and_show_list($oNewFilter);
|
||||
|
||||
$sFilterDesc = "cmdbContact: name Begins with '$[debutnom:as:debut du nom]' AND ownername NotLike $[ddd::]";
|
||||
echo "Construction d'un filtre a partir de sa description en SibuSQL: $sFilterDesc<br/>\n";
|
||||
|
||||
MyHelpers::var_dump_html(DBObjectSearch::ListSibusQLParams($sFilterDesc));
|
||||
$oNewFilter = DBObjectSearch::FromSibuSQL($sFilterDesc, array('ddd'=>123));
|
||||
echo "Ca revient en: ".$oNewFilter->ToSibuSQL();
|
||||
}
|
||||
|
||||
function test_pkey()
|
||||
{
|
||||
echo "<h4>Test search on pkey</h4>";
|
||||
$sExpr1 = "cmdbContact: pkey IN {40, 42}";
|
||||
$sExpr2 = "cmdbContact: pkey NOTIN {40, 42}";
|
||||
$this->search_and_show_list_from_sibusql($sExpr1);
|
||||
$this->search_and_show_list_from_sibusql($sExpr2);
|
||||
$sExpr1 = "SELECT cmdbContact WHERE id IN (40, 42)";
|
||||
$sExpr2 = "SELECT cmdbContact WHERE IN NOT IN (40, 42)";
|
||||
$this->search_and_show_list_from_oql($sExpr1);
|
||||
$this->search_and_show_list_from_oql($sExpr2);
|
||||
|
||||
echo "Et maintenant, on fusionne....</br>\n";
|
||||
$oSet1 = new CMDBObjectSet(DBObjectSearch::FromSibuSQL($sExpr1));
|
||||
$oSet2 = new CMDBObjectSet(DBObjectSearch::FromSibuSQL($sExpr2));
|
||||
$oSet1 = new CMDBObjectSet(DBObjectSearch::FromOQL($sExpr1));
|
||||
$oSet2 = new CMDBObjectSet(DBObjectSearch::FromOQL($sExpr2));
|
||||
$oIntersect = $oSet1->CreateIntersect($oSet2);
|
||||
$oDelta = $oSet1->CreateDelta($oSet2);
|
||||
|
||||
@@ -601,8 +583,8 @@ class TestMyBizModel extends TestBizModel
|
||||
$this->show_list($oObjectSet);
|
||||
}
|
||||
|
||||
echo "<h4>Test relations - same results, by the mean of a SibuSQL</h4>";
|
||||
$this->search_and_show_list_from_sibusql("cmdbContact: RELATED (Potes, $iMaxDepth) TO (cmdbContact: pkey = 18)");
|
||||
echo "<h4>Test relations - same results, by the mean of a OQL</h4>";
|
||||
$this->search_and_show_list_from_oql("cmdbContact: RELATED (Potes, $iMaxDepth) TO (cmdbContact: pkey = 18)");
|
||||
|
||||
}
|
||||
|
||||
@@ -670,7 +652,7 @@ class TestMyBizModel extends TestBizModel
|
||||
|
||||
protected function DoExecute()
|
||||
{
|
||||
// $this->ReportError("Found two different SibuSQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
// $this->ReportError("Found two different OQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
// $this->ReportSuccess('Found '.$oSet->Count()." objects of class $sClassName");
|
||||
//$this->test_linksinfo();
|
||||
//$this->test_list_attributes();
|
||||
@@ -682,7 +664,7 @@ class TestMyBizModel extends TestBizModel
|
||||
//$this->test_error();
|
||||
//$this->test_changetracking();
|
||||
$this->test_zlist();
|
||||
$this->test_SibuSQL();
|
||||
$this->test_OQL();
|
||||
//$this->test_pkey();
|
||||
$this->test_relations();
|
||||
$this->test_linkedset();
|
||||
@@ -848,7 +830,7 @@ class TestQueriesOnFarm extends MyFarm
|
||||
|
||||
protected function DoExecute()
|
||||
{
|
||||
// $this->ReportError("Found two different SibuSQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
// $this->ReportError("Found two different OQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
// $this->ReportSuccess('Found '.$oSet->Count()." objects of class $sClassName");
|
||||
echo "<h3>Create protagonists...</h3>";
|
||||
|
||||
@@ -917,7 +899,6 @@ class TestQueriesOnFarm extends MyFarm
|
||||
'SELECT Animal AS A JOIN Group AS G ON FooClass.leader = A.id' => false,
|
||||
'SELECT Animal AS A JOIN Group AS G ON G.leader = FooClass.id' => false,
|
||||
'SELECT Animal AS A JOIN Group AS G ON G.masterchief = A.id' => false,
|
||||
'SELECT Animal AS A JOIN Group AS G ON G.leader = A.pkey' => false,
|
||||
'SELECT Animal AS A JOIN Group AS G ON A.id = G.leader' => false,
|
||||
'SELECT Animal AS A JOIN Group AS G ON G.leader = A.id WHERE A.sex=\'male\' OR G.qwerty = 123' => false,
|
||||
'SELECT Animal AS A JOIN Group AS G ON G.leader = A.id WHERE A.sex=\'male\' OR G.name LIKE "a%"' => true,
|
||||
@@ -990,7 +971,7 @@ class TestBulkChangeOnFarm extends TestBizModel
|
||||
|
||||
protected function DoExecute()
|
||||
{
|
||||
// $this->ReportError("Found two different SibuSQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
// $this->ReportError("Found two different OQL expression out of the (same?) filter: <em>$sExpr1</em> != <em>$sExpr2</em>");
|
||||
// $this->ReportSuccess('Found '.$oSet->Count()." objects of class $sClassName");
|
||||
|
||||
$oParser = new CSVParser("denomination,hauteur,age
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Set>
|
||||
<bizInfraGroup id="326">
|
||||
<name>Monitroing Nagios server1</name>
|
||||
<name>Monitoring Nagios server1</name>
|
||||
<status>production</status>
|
||||
<org_id>2</org_id>
|
||||
<severity>low</severity>
|
||||
@@ -9,4 +9,4 @@
|
||||
<description>regroupe les CI monitorer par nagios</description>
|
||||
<parent_group_id>0</parent_group_id>
|
||||
</bizInfraGroup>
|
||||
</Set>
|
||||
</Set>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,6 @@
|
||||
<AuditCategory id="1">
|
||||
<name>Devices in production</name>
|
||||
<description>Checking all devices in production</description>
|
||||
<definition_set>bizDevice: status = 'production'</definition_set>
|
||||
<definition_set>SELECT bizDevice AS d WHERE d.status = 'production'</definition_set>
|
||||
</AuditCategory>
|
||||
</Set>
|
||||
</Set>
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
<AuditRule id="1">
|
||||
<name>Devices in production on a Location not in production</name>
|
||||
<description></description>
|
||||
<query>bizDevice: location_id IN (bizLocation: status != 'production')</query>
|
||||
<query>SELECT bizDevice AS d JOIN bizLocation AS l ON d.location_id = l.id WHERE l.status != 'production'</query>
|
||||
<valid_flag>false</valid_flag>
|
||||
<category_id>1</category_id>
|
||||
</AuditRule>
|
||||
<AuditRule id="2">
|
||||
<name>Devices not attached to a monitoring group</name>
|
||||
<description></description>
|
||||
<query>bizDevice: PKEY IS infra_id IN (lnkInfraGrouping: infra_group_id IN (bizInfraGroup: type = 'Monitoring'))</query>
|
||||
<query>SELECT bizDevice AS d JOIN lnkInfraGrouping AS l ON l.infra_id = d.id JOIN bizInfraGroup AS g ON l.infra_group_id = g.id WHERE g.type = 'Monitoring'</query>
|
||||
<valid_flag>true</valid_flag>
|
||||
<category_id>1</category_id>
|
||||
</AuditRule>
|
||||
</Set>
|
||||
</Set>
|
||||
|
||||
@@ -123,7 +123,7 @@ try
|
||||
$aDisplayConfig["__STATUS__"] = array("label"=>"Status", "description"=>"");
|
||||
if (isset($iPKeyId))
|
||||
{
|
||||
$aDisplayConfig["col$iPKeyId"] = array("label"=>"<strong>pkey</strong>", "description"=>"");
|
||||
$aDisplayConfig["col$iPKeyId"] = array("label"=>"<strong>id</strong>", "description"=>"");
|
||||
}
|
||||
foreach($aReconcilKeys as $iCol => $sAttCode)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user