mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-26 12:08:47 +02:00
153 lines
5.2 KiB
XML
153 lines
5.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<classes>
|
|
<class name="Attachment" category="addon,bizmodel" parent="DBObject" abstract="false" key_type="autoincrement" db_table="attachment" db_key_field="id" db_final_class_field="">
|
|
<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.
|
|
*
|
|
* @author Erwan Taloc <erwan.taloc@combodo.com>
|
|
* @author Romain Quetiez <romain.quetiez@combodo.com>
|
|
* @author Denis Flaven <denis.flaven@combodo.com>
|
|
* @license http://www.opensource.org/licenses/gpl-3.0.html LGPL
|
|
*/]]></comment>
|
|
<naming format="%1$s %2$s">
|
|
<attributes>
|
|
<attribute name="item_class"/>
|
|
<attribute name="temp_id"/>
|
|
</attributes>
|
|
</naming>
|
|
<display_template></display_template>
|
|
<icon></icon>
|
|
<reconciliation>
|
|
<attributes>
|
|
<attribute name=""/>
|
|
</attributes>
|
|
</reconciliation>
|
|
</properties>
|
|
<fields>
|
|
<field name="expire" type="DateTime" sql="expire" default_value="" is_null_allowed="false"/>
|
|
<field name="temp_id" type="String" sql="temp_id" default_value="" is_null_allowed="true"/>
|
|
<field name="item_class" type="String" sql="item_class" default_value="" is_null_allowed="false"/>
|
|
<field name="item_id" type="String" sql="item_id" default_value="" is_null_allowed="true"/>
|
|
<field name="item_org_id" type="Integer" sql="item_org_id" default_value="0" is_null_allowed="true"/>
|
|
<field name="contents" type="Blob"/>
|
|
</fields>
|
|
<methods>
|
|
<method name="MapContextParam" static="true" access="public" type="Overload-ExNihilo"><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><![CDATA[ public static function MapContextParam($sContextParam)
|
|
{
|
|
if ($sContextParam == 'org_id')
|
|
{
|
|
return 'item_org_id';
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}]]></method>
|
|
<method name="SetItem" static="false" access="public" type="Overload-ExNihilo"><comment><![CDATA[/**
|
|
* Set/Update all of the '_item' fields
|
|
* @param object $oItem Container item
|
|
* @return void
|
|
*/]]></comment><![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();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}]]></method>
|
|
<method name="SetDefaultOrgId" static="false" access="public" type="Overload-ExNihilo"><comment><![CDATA[/**
|
|
* Give a default value for item_org_id (if relevant...)
|
|
* @return void
|
|
*/]]></comment><![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));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}]]></method>
|
|
</methods>
|
|
<presentation>
|
|
<details>
|
|
<items>
|
|
<item>temp_id</item>
|
|
<item>item_class</item>
|
|
<item>item_id</item>
|
|
<item>item_org_id</item>
|
|
</items>
|
|
</details>
|
|
<search>
|
|
<items>
|
|
<item>temp_id</item>
|
|
<item>item_class</item>
|
|
<item>item_id</item>
|
|
</items>
|
|
</search>
|
|
<list>
|
|
<items>
|
|
<item>temp_id</item>
|
|
<item>item_class</item>
|
|
<item>item_id</item>
|
|
</items>
|
|
</list>
|
|
</presentation>
|
|
</class>
|
|
</classes>
|