<?xml version="1.0" encoding="UTF-8"?>
<itop_design
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
  <constants>
  </constants>
  <classes>
    <class id="MailInboxOAuth" _delta="define">
      <parent>MailInboxStandard</parent>
      <properties>
        <comment/>
        <category>grant_by_profile,application</category>
        <abstract>false</abstract>
        <key_type>autoincrement</key_type>
        <db_table>mailinbox_oauth</db_table>
        <db_key_field>id</db_key_field>
        <db_final_class_field>realclass</db_final_class_field>
        <naming>
          <format>%1$s</format>
          <attributes>
            <attribute id="login" />
          </attributes>
        </naming>
        <display_template />
        <icon></icon>
        <reconciliation>
          <attributes>
            <attribute id="server" />
            <attribute id="login" />
            <attribute id="protocol" />
            <attribute id="mailbox" />
            <attribute id="port" />
          </attributes>
        </reconciliation>
      </properties>
      <fields>
        <field id="oauth_client_id" xsi:type="AttributeExternalKey">
          <filter/>
          <dependencies/>
          <sql>oauth_client_id</sql>
          <target_class>OAuthClient</target_class>
          <is_null_allowed>false</is_null_allowed>
          <on_target_delete>DEL_AUTO</on_target_delete>
          <allow_target_creation>false</allow_target_creation>
        </field>
        <field id="oauth_provider" xsi:type="AttributeExternalField">
          <extkey_attcode>oauth_client_id</extkey_attcode>
          <target_attcode>provider</target_attcode>
        </field>
        <field id="client_id" xsi:type="AttributeExternalField">
          <extkey_attcode>oauth_client_id</extkey_attcode>
          <target_attcode>client_id</target_attcode>
        </field>
        <field id="client_secret" xsi:type="AttributeExternalField">
          <extkey_attcode>oauth_client_id</extkey_attcode>
          <target_attcode>client_secret</target_attcode>
        </field>
        <field id="access_token" xsi:type="AttributeExternalField">
          <extkey_attcode>oauth_client_id</extkey_attcode>
          <target_attcode>token</target_attcode>
        </field>
        <field id="refresh_token" xsi:type="AttributeExternalField">
          <extkey_attcode>oauth_client_id</extkey_attcode>
          <target_attcode>refresh_token</target_attcode>
        </field>
      </fields>
      <presentation>
        <details>
          <items>
            <item id="col:col0">
              <rank>10</rank>
              <items>
                <item id="fieldset:MailInbox:Server">
                  <rank>10</rank>
                  <items>
                    <item id="server">
                      <rank>10</rank>
                    </item>
                    <item id="login">
                      <rank>20</rank>
                    </item>
                    <item id="oauth_client_id">
                      <rank>30</rank>
                    </item>
                    <item id="protocol">
                      <rank>40</rank>
                    </item>
                    <item id="port">
                      <rank>50</rank>
                    </item>
                    <item id="mailbox">
                      <rank>70</rank>
                    </item>
                    <item id="active">
                      <rank>80</rank>
                    </item>
                    <item id="trace">
                      <rank>90</rank>
                    </item>
                  </items>
                </item>
                <item id="fieldset:MailInbox:Errors">
                  <rank>20</rank>
                  <items>
                    <item id="error_behavior">
                      <rank>10</rank>
                    </item>
                    <item id="notify_errors_to">
                      <rank>20</rank>
                    </item>
                    <item id="notify_errors_from">
                      <rank>30</rank>
                    </item>
                  </items>
                </item>
              </items>
            </item>
            <item id="col:col1">
              <rank>20</rank>
              <items>
                <item id="fieldset:MailInbox:Behavior">
                  <rank>10</rank>
                  <items>
                    <item id="behavior">
                      <rank>10</rank>
                    </item>
                    <item id="email_storage">
                      <rank>20</rank>
                    </item>
                    <item id="target_folder">
                      <rank>25</rank>
                    </item>
                    <item id="target_class">
                      <rank>30</rank>
                    </item>
                    <item id="ticket_default_values">
                      <rank>40</rank>
                    </item>
                    <item id="ticket_default_title">
                      <rank>50</rank>
                    </item>
                    <item id="title_pattern">
                      <rank>60</rank>
                    </item>
                    <item id="stimuli">
                      <rank>70</rank>
                    </item>
                  </items>
                </item>
                <item id="fieldset:MailInbox:Caller">
                  <rank>20</rank>
                  <items>
                    <item id="unknown_caller_behavior">
                      <rank>10</rank>
                    </item>
                    <item id="unknown_caller_rejection_reply">
                      <rank>15</rank>
                    </item>
                    <item id="caller_default_values">
                      <rank>20</rank>
                    </item>
                  </items>
                </item>
                <item id="fieldset:MailInbox:OtherContacts">
                  <rank>30</rank>
                  <items>
                    <item id="import_additional_contacts">
                      <rank>10</rank>
                    </item>
                  </items>
                </item>
              </items>
            </item>
          </items>
        </details>
        <search>
          <items>
            <item id="server">
              <rank>10</rank>
            </item>
            <item id="login">
              <rank>20</rank>
            </item>
            <item id="mailbox">
              <rank>30</rank>
            </item>
            <item id="protocol">
              <rank>40</rank>
            </item>
            <item id="active">
              <rank>50</rank>
            </item>
            <item id="oauth_client_id">
              <rank>60</rank>
            </item>
          </items>
        </search>
        <list>
          <items>
            <item id="server">
              <rank>10</rank>
            </item>
            <item id="mailbox">
              <rank>20</rank>
            </item>
            <item id="oauth_client_id">
              <rank>30</rank>
            </item>
            <item id="protocol">
              <rank>40</rank>
            </item>
            <item id="active">
              <rank>50</rank>
            </item>
          </items>
        </list>
      </presentation>
      <methods>
        <method id="GetEmailSource">
          <comment>/**
            * Get an EmailSource instance initialized according to the MailInbox configuration
            * @throws Exception
            * @return EmailSource The initialized EmailSource or an exception if the conneciton fails
            */</comment>
          <static>false</static>
          <access>public</access>
          <type>Overload-DBObject</type>
          <code><![CDATA[	public function GetEmailSource()
	{
		  $oSource = new Combodo\iTop\Extension\Service\IMAPOAuthEmailSource($this);
		  return $oSource;
	}]]></code>
        </method>
        <method id="GetAttributeFlags">
          <static>false</static>
          <type>Overload-DBObject</type>
          <code><![CDATA[
	public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
	{
		if ($sAttCode == 'protocol') {
			return OPT_ATT_READONLY;
		}

		return parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
	}
          ]]></code>
        </method>
        <method id="GetInitialStateAttributeFlags">
          <static>false</static>
          <type>Overload-DBObject</type>
          <code><![CDATA[
	public function GetInitialStateAttributeFlags($sAttCode, &$aReasons = array())
	{
		if ($sAttCode == 'protocol') {
			return OPT_ATT_READONLY;
		}

		return parent:: GetInitialStateAttributeFlags($sAttCode, $aReasons);
	}
          ]]></code>
        </method>
        <method id="PrefillCreationForm">
          <static>false</static>
          <type>Overload-DBObject</type>
          <code><![CDATA[
	public function PrefillCreationForm(&$aContextParam)
	{
		$this->Set('protocol', 'imap');

		parent::PrefillCreationForm($aContextParam);
	}
          ]]></code>
        </method>
        <method id="ComputeValues">
          <static>false</static>
          <type>Overload-DBObject</type>
          <code><![CDATA[
	public function ComputeValues()
	{
		parent::ComputeValues();
		$this->Set('protocol', 'imap');
	}
          ]]></code>
        </method>
      </methods>
    </class>
  </classes>
  <menus>
  </menus>
  <user_rights>
    <groups>
    </groups>
    <profiles>
    </profiles>
  </user_rights>
</itop_design>