123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?xml version="1.0" encoding="UTF-8"?>
- <itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <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.
- *
- * @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>
- <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></db_final_class_field>
- <naming>
- <format>%1$s %2$s</format>
- <attributes>
- <attribute id="item_class"/>
- <attribute id="temp_id"/>
- </attributes>
- </naming>
- <display_template></display_template>
- <icon></icon>
- <reconciliation>
- <attributes>
- <attribute id=""/>
- </attributes>
- </reconciliation>
- </properties>
- <fields>
- <field id="expire" xsi:type="AttributeDateTime">
- <sql>expire</sql>
- <default_value></default_value>
- <is_null_allowed>false</is_null_allowed>
- </field>
- <field id="temp_id" xsi:type="AttributeString">
- <sql>temp_id</sql>
- <default_value></default_value>
- <is_null_allowed>true</is_null_allowed>
- </field>
- <field id="item_class" xsi:type="AttributeString">
- <sql>item_class</sql>
- <default_value></default_value>
- <is_null_allowed>false</is_null_allowed>
- </field>
- <field id="item_id" xsi:type="AttributeString">
- <sql>item_id</sql>
- <default_value></default_value>
- <is_null_allowed>true</is_null_allowed>
- </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"/>
- </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>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>
- </itop_design>
|