mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
257 lines
7.7 KiB
XML
Executable File
257 lines
7.7 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8"?>
|
|
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.7">
|
|
<classes>
|
|
<class id="Attachment" _delta="define">
|
|
<parent>DBObject</parent>
|
|
<properties>
|
|
<comment><![CDATA[/**
|
|
* Module attachments
|
|
*
|
|
* A quick and easy way to upload and attach files to *any* (see Configuration below) object in the CMBD in one click
|
|
*
|
|
* Configuration: the list of classes for which the "Attachments" tab is visible is defined via the module's 'allowed_classes'
|
|
* configuration parameter. By default the tab is active for all kind of Tickets.
|
|
*
|
|
* @copyright Copyright (C) 2010-2012 Combodo SARL
|
|
* @license http://opensource.org/licenses/AGPL-3.0
|
|
*/]]></comment>
|
|
<category>addon,bizmodel</category>
|
|
<abstract>false</abstract>
|
|
<key_type>autoincrement</key_type>
|
|
<db_table>attachment</db_table>
|
|
<db_key_field>id</db_key_field>
|
|
<db_final_class_field/>
|
|
<naming>
|
|
<attributes>
|
|
<attribute id="item_class"/>
|
|
<attribute id="temp_id"/>
|
|
</attributes>
|
|
</naming>
|
|
<icon/>
|
|
<reconciliation>
|
|
<attributes>
|
|
<attribute id=""/>
|
|
</attributes>
|
|
</reconciliation>
|
|
<indexes>
|
|
<index id="1">
|
|
<attributes>
|
|
<attribute id="temp_id"/>
|
|
</attributes>
|
|
</index>
|
|
<index id="2">
|
|
<attributes>
|
|
<attribute id="item_class"/>
|
|
<attribute id="item_id"/>
|
|
</attributes>
|
|
</index>
|
|
<index id="3">
|
|
<attributes>
|
|
<attribute id="item_org_id"/>
|
|
</attributes>
|
|
</index>
|
|
</indexes>
|
|
</properties>
|
|
<fields>
|
|
<field id="expire" xsi:type="AttributeDateTime">
|
|
<sql>expire</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="temp_id" xsi:type="AttributeString">
|
|
<sql>temp_id</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="item_class" xsi:type="AttributeString">
|
|
<sql>item_class</sql>
|
|
<default_value/>
|
|
<is_null_allowed>false</is_null_allowed>
|
|
</field>
|
|
<field id="item_id" xsi:type="AttributeObjectKey">
|
|
<sql>item_id</sql>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
<class_attcode>item_class</class_attcode>
|
|
</field>
|
|
<field id="item_org_id" xsi:type="AttributeInteger">
|
|
<sql>item_org_id</sql>
|
|
<default_value>0</default_value>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="contents" xsi:type="AttributeBlob"/>
|
|
<field id="creation_date" xsi:type="AttributeDateTime">
|
|
<sql>creation_date</sql>
|
|
<default_value/>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
</field>
|
|
<field id="user_id" xsi:type="AttributeExternalKey">
|
|
<sql>user_id</sql>
|
|
<is_null_allowed>true</is_null_allowed>
|
|
<on_target_delete>DEL_MANUAL</on_target_delete>
|
|
<target_class>User</target_class>
|
|
<allow_target_creation>false</allow_target_creation>
|
|
</field>
|
|
<field id="contact_id" xsi:type="AttributeExternalField">
|
|
<extkey_attcode>user_id</extkey_attcode>
|
|
<target_attcode>contactid</target_attcode>
|
|
<dependencies>
|
|
<attribute id="user_id"></attribute>
|
|
</dependencies>
|
|
</field>
|
|
</fields>
|
|
<methods>
|
|
<method id="MapContextParam">
|
|
<comment><![CDATA[/**
|
|
* Maps the given context parameter name to the appropriate filter/search code for this class
|
|
* @param string $sContextParam Name of the context parameter, e.g. 'org_id'
|
|
* @return string Filter code, e.g. 'customer_id'
|
|
*/]]></comment>
|
|
<static>true</static>
|
|
<access>public</access>
|
|
<type>Overload-ExNihilo</type>
|
|
<code><![CDATA[ public static function MapContextParam($sContextParam)
|
|
{
|
|
if ($sContextParam == 'org_id')
|
|
{
|
|
return 'item_org_id';
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}]]></code>
|
|
</method>
|
|
<method id="SetItem">
|
|
<comment><![CDATA[/**
|
|
* Set/Update all of the '_item' fields
|
|
* @param object $oItem Container item
|
|
* @return void
|
|
*/]]></comment>
|
|
<static>false</static>
|
|
<access>public</access>
|
|
<type>Overload-ExNihilo</type>
|
|
<code><![CDATA[ public function SetItem($oItem, $bUpdateOnChange = false)
|
|
{
|
|
$sClass = get_class($oItem);
|
|
$iItemId = $oItem->GetKey();
|
|
|
|
$this->Set('item_class', $sClass);
|
|
$this->Set('item_id', $iItemId);
|
|
|
|
$aCallSpec = array($sClass, 'MapContextParam');
|
|
if (is_callable($aCallSpec))
|
|
{
|
|
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
|
if (MetaModel::IsValidAttCode($sClass, $sAttCode))
|
|
{
|
|
$iOrgId = $oItem->Get($sAttCode);
|
|
if ($iOrgId > 0)
|
|
{
|
|
if ($iOrgId != $this->Get('item_org_id'))
|
|
{
|
|
$this->Set('item_org_id', $iOrgId);
|
|
if ($bUpdateOnChange)
|
|
{
|
|
$this->DBUpdate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}]]></code>
|
|
</method>
|
|
<method id="SetDefaultOrgId">
|
|
<comment>/**
|
|
* Give a default value for item_org_id (if relevant...)
|
|
* @return void
|
|
*/</comment>
|
|
<static>false</static>
|
|
<access>public</access>
|
|
<type>Overload-ExNihilo</type>
|
|
<code><![CDATA[ public function SetDefaultOrgId()
|
|
{
|
|
// First check that the organization CAN be fetched from the target class
|
|
//
|
|
$sClass = $this->Get('item_class');
|
|
$aCallSpec = array($sClass, 'MapContextParam');
|
|
if (is_callable($aCallSpec))
|
|
{
|
|
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
|
if (MetaModel::IsValidAttCode($sClass, $sAttCode))
|
|
{
|
|
// Second: check that the organization CAN be fetched from the current user
|
|
//
|
|
if (MetaModel::IsValidClass('Person'))
|
|
{
|
|
$aCallSpec = array($sClass, 'MapContextParam');
|
|
if (is_callable($aCallSpec))
|
|
{
|
|
$sAttCode = call_user_func($aCallSpec, 'org_id'); // Returns null when there is no mapping for this parameter
|
|
if (MetaModel::IsValidAttCode($sClass, $sAttCode))
|
|
{
|
|
// OK - try it
|
|
//
|
|
$oCurrentPerson = MetaModel::GetObject('Person', UserRights::GetContactId(), false);
|
|
if ($oCurrentPerson)
|
|
{
|
|
$this->Set('item_org_id', $oCurrentPerson->Get($sAttCode));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}]]></code>
|
|
</method>
|
|
</methods>
|
|
<presentation>
|
|
<details>
|
|
<items>
|
|
<item id="temp_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="item_class">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="item_id">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="item_org_id">
|
|
<rank>40</rank>
|
|
</item>
|
|
</items>
|
|
</details>
|
|
<search>
|
|
<items>
|
|
<item id="temp_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="item_class">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="item_id">
|
|
<rank>30</rank>
|
|
</item>
|
|
</items>
|
|
</search>
|
|
<list>
|
|
<items>
|
|
<item id="temp_id">
|
|
<rank>10</rank>
|
|
</item>
|
|
<item id="item_class">
|
|
<rank>20</rank>
|
|
</item>
|
|
<item id="item_id">
|
|
<rank>30</rank>
|
|
</item>
|
|
<item id="creation_date">
|
|
<rank>40</rank>
|
|
</item>
|
|
</items>
|
|
</list>
|
|
</presentation>
|
|
</class>
|
|
</classes>
|
|
</itop_design>
|