mirror of
https://github.com/Combodo/iTop.git
synced 2026-09-29 21:09:10 +02:00
Continuing the integration of the new data model...
SVN:trunk[539]
This commit is contained in:
@@ -87,7 +87,7 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
// AND make the name be a mandatory field
|
||||
//
|
||||
$sObject = MetaModel::GetObject($sObjClass, $sObjKey);
|
||||
$sLabel = $sObject->GetDisplayName();
|
||||
$sLabel = $sObject->GetName();
|
||||
}
|
||||
// Safety net
|
||||
//
|
||||
@@ -110,7 +110,7 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
$oBlock = new MenuBlock($oSingletonFilter, 'popup', false);
|
||||
$oBlock->Display($oPage, -1);
|
||||
$oPage->add("<div class=\"page_header\"><h1><img src=\"".$this->GetIcon()."\" style=\"margin-right:10px;margin-top: -16px;vertical-align:middle;\">\n");
|
||||
$oPage->add(MetaModel::GetName(get_class($this)).": <span class=\"hilite\">".$this->GetDisplayName()."</span></h1>\n");
|
||||
$oPage->add(MetaModel::GetName(get_class($this)).": <span class=\"hilite\">".$this->GetName()."</span></h1>\n");
|
||||
$oPage->add("</div>\n");
|
||||
}
|
||||
|
||||
@@ -131,9 +131,13 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
|
||||
function DisplayBareRelations(WebPage $oPage)
|
||||
{
|
||||
// Related objects
|
||||
foreach(MetaModel::ListAttributeDefs(get_class($this)) as $sAttCode=>$oAttDef)
|
||||
// Related objects: display all the linkset attributes, each as a separate tab
|
||||
// First in the order described by the 'display' ZList, then the remaining ones
|
||||
$aList = $this->FlattenZList(MetaModel::GetZListItems(get_class($this), 'details'));
|
||||
$aList = array_unique(array_merge($aList, array_keys(MetaModel::ListAttributeDefs(get_class($this)))));
|
||||
foreach($aList as $sAttCode)
|
||||
{
|
||||
$oAttDef = MetaModel::GetAttributeDef(get_class($this), $sAttCode);
|
||||
if ($oAttDef->IsLinkset())
|
||||
{
|
||||
$oPage->SetCurrentTab($oAttDef->GetLabel());
|
||||
@@ -172,16 +176,6 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
$oPage->SetCurrentTab('');
|
||||
}
|
||||
|
||||
function GetDisplayName()
|
||||
{
|
||||
$sDisplayName = '';
|
||||
if (MetaModel::GetNameAttributeCode(get_class($this)) != '')
|
||||
{
|
||||
$sDisplayName = $this->GetAsHTML(MetaModel::GetNameAttributeCode(get_class($this)));
|
||||
}
|
||||
return $sDisplayName;
|
||||
}
|
||||
|
||||
function GetBareProperties(WebPage $oPage)
|
||||
{
|
||||
$sHtml = '';
|
||||
@@ -190,8 +184,6 @@ abstract class cmdbAbstractObject extends CMDBObject
|
||||
$aDetails = array();
|
||||
$sClass = get_class($this);
|
||||
$aDetailsList = MetaModel::GetZListItems($sClass, 'details');
|
||||
$aFullList = MetaModel::ListAttributeDefs($sClass);
|
||||
$aList = $aDetailsList;
|
||||
$aDetailsStruct = self::ProcessZlist($aDetailsList, array('UI:PropertiesTab' => array()), 'UI:PropertiesTab', 'col1', '');
|
||||
// Compute the list of properties to display, first the attributes in the 'details' list, then
|
||||
// all the remaining attributes that are not external fields
|
||||
@@ -1384,6 +1376,24 @@ EOF
|
||||
}
|
||||
return $aDetails;
|
||||
}
|
||||
|
||||
protected function FlattenZList($aList)
|
||||
{
|
||||
$aResult = array();
|
||||
foreach($aList as $value)
|
||||
{
|
||||
if (!is_array($value))
|
||||
{
|
||||
$aResult[] = $value;
|
||||
}
|
||||
else
|
||||
{
|
||||
$aResult = array_merge($aResult, $this->FlattenZList($value));
|
||||
}
|
||||
}
|
||||
return $aResult;
|
||||
}
|
||||
|
||||
protected function GetFieldAsHtml($sClass, $sAttCode, $sStateAttCode)
|
||||
{
|
||||
$retVal = null;
|
||||
|
||||
@@ -573,14 +573,15 @@ class DatabaseInstance extends FunctionalCI
|
||||
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("application_id", array("targetclass"=>"ApplicationInstance", "jointype"=>null, "allowed_values"=>null, "sql"=>"application_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("application_name", array("allowed_values"=>null, "extkey_attcode"=>"application_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("application_version", array("allowed_values"=>null, "extkey_attcode"=>"application_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributePassword("admin_login", array("allowed_values"=>null, "sql"=>"admin_login", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributePassword("admin_password", array("allowed_values"=>null, "sql"=>"admin_password", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'application_id', 'admin_login', 'admin_password', 'description'));
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'application_id', 'application_version', 'admin_login', 'admin_password', 'description'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'application_id', 'description'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'application_id', 'description'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'application_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'application_id', 'application_version'));
|
||||
}
|
||||
}
|
||||
class ApplicationSolution extends FunctionalCI
|
||||
|
||||
60
modules/itop-config-mgmt-1.0.0/data.sample.application.xml
Normal file
60
modules/itop-config-mgmt-1.0.0/data.sample.application.xml
Normal file
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Set>
|
||||
<Application alias="Application" id="2">
|
||||
<name>Apache Web Server</name>
|
||||
<description></description>
|
||||
</Application>
|
||||
<DBServer alias="Application" id="1">
|
||||
<name>MySQL 5</name>
|
||||
<description>MySQL Server version 5</description>
|
||||
</DBServer>
|
||||
<ApplicationInstance alias="ApplicationInstance" id="5">
|
||||
<name>Apache Web Server</name>
|
||||
<status>production</status>
|
||||
<owner_id>2</owner_id>
|
||||
<importance>medium</importance>
|
||||
<device_id>4</device_id>
|
||||
<licence_id>0</licence_id>
|
||||
<application_id>2</application_id>
|
||||
<version>2.2</version>
|
||||
<description>Apache 2.2 with PHP 5.3.4</description>
|
||||
</ApplicationInstance>
|
||||
<ApplicationInstance alias="ApplicationInstance" id="2">
|
||||
<name>MySQL 5 prod</name>
|
||||
<status>production</status>
|
||||
<owner_id>2</owner_id>
|
||||
<importance>medium</importance>
|
||||
<device_id>1</device_id>
|
||||
<licence_id>0</licence_id>
|
||||
<application_id>1</application_id>
|
||||
<version>5.0.27</version>
|
||||
<description></description>
|
||||
</ApplicationInstance>
|
||||
<DatabaseInstance alias="DatabaseInstance" id="3">
|
||||
<name>itop_beta</name>
|
||||
<status>implementation</status>
|
||||
<owner_id>2</owner_id>
|
||||
<importance>medium</importance>
|
||||
<db_server_instance_id>2</db_server_instance_id>
|
||||
<admin_login>root</admin_login>
|
||||
<admin_password></admin_password>
|
||||
<description>iTop beta test instance</description>
|
||||
</DatabaseInstance>
|
||||
<ApplicationSolution alias="ApplicationSolution" id="6">
|
||||
<name>iTop demo</name>
|
||||
<status>production</status>
|
||||
<owner_id>2</owner_id>
|
||||
<importance>high</importance>
|
||||
<description>Demo instance of iTop</description>
|
||||
</ApplicationSolution>
|
||||
<lnkSolutionToCI alias="lnkSolutionToCI" id="1">
|
||||
<solution_id>6</solution_id>
|
||||
<ci_id>5</ci_id>
|
||||
<utility>itop beta instance</utility>
|
||||
</lnkSolutionToCI>
|
||||
<lnkSolutionToCI alias="lnkSolutionToCI" id="2">
|
||||
<solution_id>6</solution_id>
|
||||
<ci_id>3</ci_id>
|
||||
<utility>itop beta instance</utility>
|
||||
</lnkSolutionToCI>
|
||||
</Set>
|
||||
30
modules/itop-config-mgmt-1.0.0/data.sample.business.xml
Normal file
30
modules/itop-config-mgmt-1.0.0/data.sample.business.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Set>
|
||||
<BusinessProcess alias="BusinessProcess" id="7">
|
||||
<name>iTop demonstration</name>
|
||||
<status>production</status>
|
||||
<owner_id>2</owner_id>
|
||||
<importance>medium</importance>
|
||||
<description>Demonstrating iTop on line</description>
|
||||
</BusinessProcess>
|
||||
<lnkProcessToSolution alias="lnkProcessToSolution" id="2">
|
||||
<solution_id>6</solution_id>
|
||||
<process_id>7</process_id>
|
||||
<reason>On demand demo of iTop</reason>
|
||||
</lnkProcessToSolution>
|
||||
<lnkCIToContact alias="lnkCIToContact" id="1">
|
||||
<ci_id>7</ci_id>
|
||||
<contact_id>3</contact_id>
|
||||
<role>Operations Manager</role>
|
||||
</lnkCIToContact>
|
||||
<lnkCIToContact alias="lnkCIToContact" id="2">
|
||||
<ci_id>7</ci_id>
|
||||
<contact_id>4</contact_id>
|
||||
<role>Support Specialist</role>
|
||||
</lnkCIToContact>
|
||||
<lnkCIToContact alias="lnkCIToContact" id="3">
|
||||
<ci_id>8</ci_id>
|
||||
<contact_id>6</contact_id>
|
||||
<role>Datacenter Network Engineer</role>
|
||||
</lnkCIToContact>
|
||||
</Set>
|
||||
51
modules/itop-config-mgmt-1.0.0/data.sample.contact.xml
Normal file
51
modules/itop-config-mgmt-1.0.0/data.sample.contact.xml
Normal file
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Set>
|
||||
<Person alias="Contact" id="4">
|
||||
<name>Dumas</name>
|
||||
<status>active</status>
|
||||
<org_id>2</org_id>
|
||||
<email>alexandre.dumas@demo-noemail.net</email>
|
||||
<phone></phone>
|
||||
<location_id>1</location_id>
|
||||
<first_name>Alexandre</first_name>
|
||||
<employee_id>20100002</employee_id>
|
||||
</Person>
|
||||
<Person alias="Contact" id="3">
|
||||
<name>Hugo</name>
|
||||
<status>active</status>
|
||||
<org_id>2</org_id>
|
||||
<email>victor.hugo@demo-noemail.net</email>
|
||||
<phone></phone>
|
||||
<location_id>1</location_id>
|
||||
<first_name>Victor</first_name>
|
||||
<employee_id>20100001</employee_id>
|
||||
</Person>
|
||||
<Person alias="Contact" id="1">
|
||||
<name>My last name</name>
|
||||
<status>active</status>
|
||||
<org_id>1</org_id>
|
||||
<email>my.email@foo.org</email>
|
||||
<phone></phone>
|
||||
<location_id>0</location_id>
|
||||
<first_name></first_name>
|
||||
<employee_id></employee_id>
|
||||
</Person>
|
||||
<Person alias="Contact" id="5">
|
||||
<name>Verne</name>
|
||||
<status>active</status>
|
||||
<org_id>2</org_id>
|
||||
<email>jules.verne@demo-noemail.net</email>
|
||||
<phone></phone>
|
||||
<location_id>1</location_id>
|
||||
<first_name>Jules</first_name>
|
||||
<employee_id>20100003</employee_id>
|
||||
</Person>
|
||||
<lnkTeamToContact alias="lnkTeamToContact" id="1">
|
||||
<team_id>2</team_id>
|
||||
<contact_id>4</contact_id>
|
||||
</lnkTeamToContact>
|
||||
<lnkTeamToContact alias="lnkTeamToContact" id="2">
|
||||
<team_id>2</team_id>
|
||||
<contact_id>5</contact_id>
|
||||
</lnkTeamToContact>
|
||||
</Set>
|
||||
@@ -3,9 +3,11 @@
|
||||
<Location alias="Location" id="1">
|
||||
<name>Headquarters</name>
|
||||
<status>active</status>
|
||||
<org_id>1</org_id>
|
||||
<address></address>
|
||||
<country></country>
|
||||
<org_id>2</org_id>
|
||||
<address>1, rue de la Paix</address>
|
||||
<postal_code>75000</postal_code>
|
||||
<city>Paris</city>
|
||||
<country>France</country>
|
||||
<parent_id>0</parent_id>
|
||||
</Location>
|
||||
</Set>
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Set>
|
||||
<Organization alias="Organization" id="1">
|
||||
<Organization alias="Organization" id="2">
|
||||
<name>Demo company</name>
|
||||
<code></code>
|
||||
<code>DEMO</code>
|
||||
<status>active</status>
|
||||
<parent_id>0</parent_id>
|
||||
</Organization>
|
||||
|
||||
43
modules/itop-config-mgmt-1.0.0/data.sample.server.xml
Normal file
43
modules/itop-config-mgmt-1.0.0/data.sample.server.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Set>
|
||||
<Server alias="Server" id="1">
|
||||
<name>dbserver1.demo.net</name>
|
||||
<status>implementation</status>
|
||||
<owner_id>2</owner_id>
|
||||
<importance>medium</importance>
|
||||
<brand>Hewlett-Packard</brand>
|
||||
<model>Proliant DL380 G5</model>
|
||||
<serial_number>US0123421</serial_number>
|
||||
<asset_ref>DEMO-2314</asset_ref>
|
||||
<description>Dedicated database server running MySQL</description>
|
||||
<location_id>1</location_id>
|
||||
<location_details>Bottom of Rack 1 in DC</location_details>
|
||||
<management_ip>192.168.10.49</management_ip>
|
||||
<default_gateway>192.168.10.254</default_gateway>
|
||||
<cpu>4 x 3GHz</cpu>
|
||||
<ram>8 GB</ram>
|
||||
<hdd>5 x 72 GB RAID 5</hdd>
|
||||
<os_family>Linux</os_family>
|
||||
<os_version>Debian 5 (Lenny)</os_version>
|
||||
</Server>
|
||||
<Server alias="Server" id="4">
|
||||
<name>itop.demo.net</name>
|
||||
<status>production</status>
|
||||
<owner_id>2</owner_id>
|
||||
<importance>high</importance>
|
||||
<brand>Hewlet-Packard</brand>
|
||||
<model>Proliant DL380 G5</model>
|
||||
<serial_number>US4123423</serial_number>
|
||||
<asset_ref>DEMO-2321</asset_ref>
|
||||
<description>Web server for running the iTop demo</description>
|
||||
<location_id>1</location_id>
|
||||
<location_details></location_details>
|
||||
<management_ip>192.168.10.50</management_ip>
|
||||
<default_gateway>192.168.10.254</default_gateway>
|
||||
<cpu>4 x 3GHz</cpu>
|
||||
<ram>8 GB</ram>
|
||||
<hdd>5 x 72 GB RAID 5</hdd>
|
||||
<os_family>Linux</os_family>
|
||||
<os_version>Debian 5 (Lenny)</os_version>
|
||||
</Server>
|
||||
</Set>
|
||||
@@ -1,11 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Set>
|
||||
<Team alias="Team" id="1">
|
||||
<name>My team</name>
|
||||
<Team alias="Team" id="2">
|
||||
<name>Hardware Support Team</name>
|
||||
<status>active</status>
|
||||
<org_id>1</org_id>
|
||||
<email>myteam@combodo.com</email>
|
||||
<org_id>2</org_id>
|
||||
<email>pcsupport@demo-noemail.net</email>
|
||||
<phone></phone>
|
||||
<location_id>1</location_id>
|
||||
</Team>
|
||||
</Set>
|
||||
</Set>
|
||||
@@ -113,6 +113,10 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:Location/Attribute:org_name+' => '',
|
||||
'Class:Location/Attribute:address' => 'Address',
|
||||
'Class:Location/Attribute:address+' => 'Postal address',
|
||||
'Class:Location/Attribute:postal_code' => 'Postal code',
|
||||
'Class:Location/Attribute:postal_code+' => 'ZIP/Postal code',
|
||||
'Class:Location/Attribute:city' => 'City',
|
||||
'Class:Location/Attribute:city+' => '',
|
||||
'Class:Location/Attribute:country' => 'Country',
|
||||
'Class:Location/Attribute:country+' => '',
|
||||
'Class:Location/Attribute:parent_id' => 'Parent location',
|
||||
@@ -182,6 +186,25 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:Team/Attribute:member_list+' => 'Contacts that are part of the team',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: lnkTeamToContact
|
||||
//
|
||||
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:lnkTeamToContact' => 'Team Members',
|
||||
'Class:lnkTeamToContact+' => 'Members of a team',
|
||||
'Class:lnkTeamToContact/Attribute:team_id' => 'Team',
|
||||
'Class:lnkTeamToContact/Attribute:team_id+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_id' => 'Member',
|
||||
'Class:lnkTeamToContact/Attribute:contact_id+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_location_id' => 'Location',
|
||||
'Class:lnkTeamToContact/Attribute:contact_location_id+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_email' => 'eMail',
|
||||
'Class:lnkTeamToContact/Attribute:contact_email+' => '',
|
||||
'Class:lnkTeamToContact/Attribute:contact_phone' => 'Phone',
|
||||
'Class:lnkTeamToContact/Attribute:contact_phone+' => '',
|
||||
));
|
||||
|
||||
//
|
||||
// Class: Document
|
||||
//
|
||||
@@ -445,8 +468,10 @@ Dict::Add('EN US', 'English', 'English', array(
|
||||
Dict::Add('EN US', 'English', 'English', array(
|
||||
'Class:DatabaseInstance' => 'Database instance',
|
||||
'Class:DatabaseInstance+' => '',
|
||||
'Class:DatabaseInstance/Attribute:application_id' => 'Database software',
|
||||
'Class:DatabaseInstance/Attribute:application_id+' => '',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_id' => 'Database software',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_id+' => '',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_version' => 'Database version',
|
||||
'Class:DatabaseInstance/Attribute:db_server_instance_version+' => '',
|
||||
'Class:DatabaseInstance/Attribute:application_name' => 'Database software',
|
||||
'Class:DatabaseInstance/Attribute:application_name+' => '',
|
||||
'Class:DatabaseInstance/Attribute:admin_login' => 'Admin login',
|
||||
|
||||
@@ -83,14 +83,16 @@ class Location extends cmdbAbstractObject
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("org_id", array("targetclass"=>"Organization", "jointype"=>null, "allowed_values"=>null, "sql"=>"org_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeText("address", array("allowed_values"=>null, "sql"=>"address", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("postal_code", array("allowed_values"=>null, "sql"=>"postal_code", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("city", array("allowed_values"=>null, "sql"=>"city", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("country", array("allowed_values"=>null, "sql"=>"country", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("parent_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>null, "sql"=>"parent_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("parent_name", array("allowed_values"=>null, "extkey_attcode"=>"parent_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'address', 'country', 'parent_id'));
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'address', 'postal_code', 'city', 'country', 'parent_id'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'country'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'country'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'country'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'city', 'country'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'city', 'country'));
|
||||
}
|
||||
}
|
||||
abstract class Contact extends cmdbAbstractObject
|
||||
@@ -119,7 +121,7 @@ abstract class Contact extends cmdbAbstractObject
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("org_name", array("allowed_values"=>null, "extkey_attcode"=>"org_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeEmailAddress("email", array("allowed_values"=>null, "sql"=>"email", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("phone", array("allowed_values"=>null, "sql"=>"phone", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("location_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>null, "sql"=>"location_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("location_id", array("targetclass"=>"Location", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT Location AS L WHERE L.org_id = :this->org_id'), "sql"=>"location_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array('org_id'))));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("location_name", array("allowed_values"=>null, "extkey_attcode"=>"location_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("contract_list", array("linked_class"=>"lnkContractToContact", "ext_key_to_me"=>"contact_id", "ext_key_to_remote"=>"contract_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("ticket_list", array("linked_class"=>"lnkTicketToContact", "ext_key_to_me"=>"contact_id", "ext_key_to_remote"=>"ticket_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
|
||||
@@ -155,10 +157,15 @@ class Person extends Contact
|
||||
MetaModel::Init_AddAttribute(new AttributeString("first_name", array("allowed_values"=>null, "sql"=>"first_name", "default_value"=>"", "is_null_allowed"=>false, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeString("employee_id", array("allowed_values"=>null, "sql"=>"employee_id", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'contract_list', 'ticket_list', 'ci_list', 'first_name', 'employee_id'));
|
||||
MetaModel::Init_SetZListItems('details', array('first_name', 'name', 'org_id', 'status', 'location_id', 'email', 'phone', 'employee_id', 'contract_list', 'ticket_list', 'ci_list'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id', 'first_name', 'employee_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id', 'employee_id'));
|
||||
}
|
||||
|
||||
public function GetName()
|
||||
{
|
||||
return $this->Get('first_name').' '.$this->Get('name');
|
||||
}
|
||||
}
|
||||
class Team extends Contact
|
||||
@@ -183,7 +190,7 @@ class Team extends Contact
|
||||
|
||||
MetaModel::Init_AddAttribute(new AttributeLinkedSetIndirect("member_list", array("linked_class"=>"lnkTeamToContact", "ext_key_to_me"=>"team_id", "ext_key_to_remote"=>"contact_id", "allowed_values"=>null, "count_min"=>0, "count_max"=>0, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'email', 'phone', 'location_id', 'contract_list', 'ticket_list', 'ci_list', 'member_list'));
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'org_id', 'location_id', 'email', 'phone', 'member_list','contract_list', 'ticket_list', 'ci_list'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'org_id', 'email', 'phone', 'location_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'org_id', 'email', 'phone', 'location_id'));
|
||||
@@ -213,11 +220,15 @@ class lnkTeamToContact extends cmdbAbstractObject
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("team_name", array("allowed_values"=>null, "extkey_attcode"=>"team_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("contact_id", array("targetclass"=>"Contact", "jointype"=>null, "allowed_values"=>null, "sql"=>"contact_id", "is_null_allowed"=>false, "on_target_delete"=>DEL_AUTO, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("contact_name", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("contact_location_id", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"location_id", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("contact_location_name", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"location_name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("contact_email", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"email", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("contact_phone", array("allowed_values"=>null, "extkey_attcode"=>"contact_id", "target_attcode"=>"phone", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('team_id', 'contact_id'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('team_id', 'contact_id'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('team_id', 'contact_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('team_id', 'contact_id'));
|
||||
MetaModel::Init_SetZListItems('list', array('team_id', 'contact_id', 'contact_location_id', 'contact_email', 'contact_phone'));
|
||||
}
|
||||
}
|
||||
abstract class Document extends cmdbAbstractObject
|
||||
@@ -550,8 +561,6 @@ class DBServer extends Application
|
||||
MetaModel::Init_Params($aParams);
|
||||
MetaModel::Init_InheritAttributes();
|
||||
|
||||
MetaModel::Init_OverloadAttributeParams("instance_list", array("linked_class"=>"DatabaseInstance"));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'description', 'instance_list'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'description'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'description'));
|
||||
@@ -707,16 +716,17 @@ class DatabaseInstance extends FunctionalCI
|
||||
MetaModel::Init_Params($aParams);
|
||||
MetaModel::Init_InheritAttributes();
|
||||
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("application_id", array("targetclass"=>"DBServer", "jointype"=>null, "allowed_values"=>null, "sql"=>"application_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("application_name", array("allowed_values"=>null, "extkey_attcode"=>"application_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalKey("db_server_instance_id", array("targetclass"=>"ApplicationInstance", "jointype"=>null, "allowed_values"=>new ValueSetObjects('SELECT ApplicationInstance AS DBSrvInstance JOIN DBServer AS DBServerSW ON DBSrvInstance.application_id = DBServerSW.id WHERE DBServerSW.finalclass=\'DBServer\''), "sql"=>"db_server_instance_id", "is_null_allowed"=>true, "on_target_delete"=>DEL_MANUAL, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("db_server_instance_name", array("allowed_values"=>null, "extkey_attcode"=>"db_server_instance_id", "target_attcode"=>"name", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeExternalField("db_server_instance_version", array("allowed_values"=>null, "extkey_attcode"=>"db_server_instance_id", "target_attcode"=>"version", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributePassword("admin_login", array("allowed_values"=>null, "sql"=>"admin_login", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributePassword("admin_password", array("allowed_values"=>null, "sql"=>"admin_password", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
MetaModel::Init_AddAttribute(new AttributeWikiText("description", array("allowed_values"=>null, "sql"=>"description", "default_value"=>"", "is_null_allowed"=>true, "depends_on"=>array())));
|
||||
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'application_id', 'admin_login', 'admin_password', 'description'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'application_id', 'description'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'application_id', 'description'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'application_id'));
|
||||
MetaModel::Init_SetZListItems('details', array('name', 'status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'admin_login', 'admin_password', 'description'));
|
||||
MetaModel::Init_SetZListItems('advanced_search', array('name', 'status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'description'));
|
||||
MetaModel::Init_SetZListItems('standard_search', array('name', 'status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version', 'description'));
|
||||
MetaModel::Init_SetZListItems('list', array('status', 'owner_id', 'importance', 'db_server_instance_id', 'db_server_instance_version'));
|
||||
}
|
||||
}
|
||||
class ApplicationSolution extends FunctionalCI
|
||||
|
||||
@@ -32,6 +32,10 @@ SetupWebPage::AddModule(
|
||||
'data.sample.organization.xml',
|
||||
'data.sample.location.xml',
|
||||
'data.sample.team.xml',
|
||||
'data.sample.contact.xml',
|
||||
'data.sample.server.xml',
|
||||
'data.sample.application.xml',
|
||||
'data.sample.business.xml',
|
||||
),
|
||||
|
||||
// Documentation
|
||||
|
||||
@@ -14,7 +14,7 @@ SetupWebPage::AddModule(
|
||||
'dependencies' => array(
|
||||
),
|
||||
'mandatory' => true,
|
||||
'visible' => false,
|
||||
'visible' => true,
|
||||
|
||||
// Components
|
||||
//
|
||||
|
||||
@@ -439,7 +439,7 @@ try
|
||||
$oObj = $oContext->GetObject($sClass, $id);
|
||||
if ($oObj != null)
|
||||
{
|
||||
$oP->set_title(Dict::Format('UI:DetailsPageTitle', $oObj->GetDisplayName(), $sClassLabel));
|
||||
$oP->set_title(Dict::Format('UI:DetailsPageTitle', $oObj->GetName(), $sClassLabel));
|
||||
$oObj->DisplayDetails($oP);
|
||||
}
|
||||
else
|
||||
@@ -783,6 +783,7 @@ try
|
||||
$oP->add('<p>'.Dict::Format('UI:SelectTheTypeOf_Class_ToCreate', $sClassLabel));
|
||||
$aDefaults = utils::ReadParam('default', array());
|
||||
$oP->add($oAppContext->GetForForm());
|
||||
$oP->add("<input type=\"hidden\" name=\"checkSubclass\" value=\"0\">\n");
|
||||
$oP->add("<input type=\"hidden\" name=\"state\" value=\"$sStateCode\">\n");
|
||||
$oP->add("<input type=\"hidden\" name=\"operation\" value=\"new\">\n");
|
||||
foreach($aDefaults as $key => $value)
|
||||
|
||||
@@ -301,7 +301,7 @@ switch($operation)
|
||||
$oSet = new CMDBObjectSet($oFilter);
|
||||
while( $oObj = $oSet->fetch())
|
||||
{
|
||||
$oPage->add('<option title="Here is more information..." value="'.$oObj->GetKey().'">'.$oObj->GetDisplayName().'</option>');
|
||||
$oPage->add('<option title="Here is more information..." value="'.$oObj->GetKey().'">'.$oObj->GetName().'</option>');
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -233,20 +233,53 @@ class XMLDataLoader
|
||||
* Store an object in the database and remember the mapping
|
||||
* between its original ID and the newly created ID in the database
|
||||
*/
|
||||
protected function StoreObject($sClass, $oTargetObj, $iSrcId)
|
||||
protected function StoreObject($sClass, $oTargetObj, $iSrcId, $bSearch = false)
|
||||
{
|
||||
$iObjId = 0;
|
||||
try
|
||||
{
|
||||
if (is_subclass_of($oTargetObj, 'CMDBObject'))
|
||||
if ($bSearch)
|
||||
{
|
||||
$iObjId = $oTargetObj->DBInsertTrackedNoReload($this->m_oChange);
|
||||
}
|
||||
else
|
||||
// Check if the object does not already exist, based on its usual reconciliation keys...
|
||||
$aReconciliationKeys = MetaModel::GetReconcKeys($sClass);
|
||||
if (count($aReconciliationKeys) > 0)
|
||||
{
|
||||
// Some reconciliation keys have been defined, use them to search for the object
|
||||
$oSearch = new DBObjectSearch($sClass);
|
||||
$iConditionsCount = 0;
|
||||
foreach($aReconciliationKeys as $sAttCode)
|
||||
{
|
||||
if ($oTargetObj->Get($sAttCode) != '')
|
||||
{
|
||||
$oSearch->AddCondition($sAttCode, $oTargetObj->Get($sAttCode));
|
||||
$iConditionsCount++;
|
||||
}
|
||||
}
|
||||
if ($iConditionsCount > 0) // Search only if there are some valid conditions...
|
||||
{
|
||||
$oSet = new DBObjectSet($oSearch);
|
||||
if ($oSet->count() == 1)
|
||||
{
|
||||
// The object already exists, reuse it
|
||||
$oExistingObject = $oSet->Fetch();
|
||||
$iObjId = $oExistingObject->GetKey();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($iObjId == 0)
|
||||
{
|
||||
$iObjId = $oTargetObj->DBInsertNoReload();
|
||||
}
|
||||
|
||||
// No similar object found for sure, let's create it
|
||||
if (is_subclass_of($oTargetObj, 'CMDBObject'))
|
||||
{
|
||||
$iObjId = $oTargetObj->DBInsertTrackedNoReload($this->m_oChange);
|
||||
}
|
||||
else
|
||||
{
|
||||
$iObjId = $oTargetObj->DBInsertNoReload();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user