<?xml version="1.0" encoding="ISO-8859-1" ?>
<construct>
    <!-- define the module name -->
    <module>product</module>
    <!-- define the module table name -->
    <table>product</table>
    <!-- define the module dependancy(s) -->
    <dependancy/>
    <!-- define the DB cache in seconds -->
    <cache>0</cache>
    <!-- define the default order_by field for SQL queries -->
    <order_by>sku</order_by>
    <!-- define the methods -->
    <limit>25</limit>
    <!-- define database indexes -->
    <index>
        <sku>sku</sku>
        <active>active</active>
    </index>    
    <!-- define the fields -->
    <field>
        <id>
            <type>I4</type>
            <unique>1</unique>
            <index>1</index>
        </id>
        <site_id>
            <type>I4</type>
            <index>1</index>
        </site_id>
        <date_orig>
            <type>I8</type>
            <convert>date-time</convert>
        </date_orig>
        <date_last>
            <type>I8</type>
            <convert>date-now</convert>
        </date_last>
        <sku>
            <type>C(32)</type>
            <unique>1</unique>
            <min_len>1</min_len>
            <max_len>32</max_len>
            <validate>alphanumeric</validate>
        </sku>
        <taxable>
            <type>L</type>
        </taxable>
        <active>
            <type>L</type>
        </active>
        <position>
            <type>I4</type>
        </position>
        <cart_multiple>
        	<type>L</type>
        </cart_multiple>
        <group_avail>
            <type>X2</type>        
            <validate>any</validate>
            <convert>array</convert>
            <arr_force>1</arr_force>
        </group_avail>                
        <avail_category_id>
            <type>C(255)</type> 
            <validate>any</validate>
            <convert>array</convert>
            <arr_force>1</arr_force>
        </avail_category_id>
        <host>
            <type>L</type>
        </host>
        <host_server_id>
            <type>I4</type>
        </host_server_id>
        <host_provision_plugin_data>
            <type>X2</type>
            <convert>array</convert>
        </host_provision_plugin_data>
        <host_allow_domain>
            <type>L</type>
        </host_allow_domain>
        <host_allow_host_only>
            <type>L</type>
        </host_allow_host_only>
        <host_discount_tld>
            <type>X2</type>
            <convert>array</convert>
        </host_discount_tld>
        <host_discount_tld_amt>
            <type>F</type>
        </host_discount_tld_amt>
        <discount>
            <type>L</type>
        </discount>
        <discount_amount>
            <type>F</type>
        </discount_amount>
        <price_type>
            <type>I4</type>
        </price_type>
        <price_base>
            <type>F</type>
            <min_len>1</min_len>
            <max_len>32</max_len>
            <validate>float</validate>
        </price_base>
        <price_setup>
            <type>F</type>
        </price_setup>
        <price_group>
            <type>X2</type>
            <convert>array</convert>
        </price_group>
        <price_recurr_default>
            <type>I4</type>
        </price_recurr_default>
        <price_recurr_type>
            <type>L</type>
        </price_recurr_type>
        <price_recurr_weekday>
            <type>I4</type>
        </price_recurr_weekday>
        <price_recurr_week>
            <type>I4</type>
        </price_recurr_week>
        <price_recurr_schedule>
            <type>L</type>
        </price_recurr_schedule>
        <price_recurr_cancel>
            <type>L</type>
        </price_recurr_cancel>
        <price_trial_length_type>
            <type>I4</type>
        </price_trial_length_type>
        <price_trial_length>
            <type>I4</type>
        </price_trial_length>
        <price_trial_prod>
            <type>I4</type>
            <asso_table>product</asso_table>
            <asso_field>sku</asso_field>
        </price_trial_prod>
        <assoc_req_prod>
            <type>X2</type>
            <asso_table>product</asso_table>
            <asso_field>sku</asso_field>
            <convert>array</convert>
        </assoc_req_prod>
        <assoc_req_prod_type>
            <type>I4</type>
        </assoc_req_prod_type>
        <assoc_grant_prod>
            <type>X2</type>
            <asso_table>product</asso_table>
            <asso_field>sku</asso_field>
            <convert>array</convert>
            <arr_force>1</arr_force>
        </assoc_grant_prod>
        <assoc_grant_group>
            <type>X2</type>
            <convert>array</convert>
        </assoc_grant_group>
        <assoc_grant_group_type>
            <type>I4</type>
        </assoc_grant_group_type>
        <assoc_grant_group_days>
            <type>I4</type>
        </assoc_grant_group_days>
        <thumbnail>
            <type>C(128)</type>
        </thumbnail>
        <prod_plugin>
            <type>L</type>
        </prod_plugin>
        <prod_plugin_file>
            <type>C(128)</type>
        </prod_plugin_file>
        <prod_plugin_data>
            <type>X2</type>
            <convert>array</convert>
        </prod_plugin_data>
        <price_recurr_modify>
        	<type>L</type>
        </price_recurr_modify>
        <modify_waive_setup>
        	<type>L</type>
        </modify_waive_setup>
        <modify_product_arr>
            <type>X2</type>
            <convert>array</convert>
        </modify_product_arr>        
    </field>
    <!-- define all the methods for this class, and the fields they have access to, if applicable. -->
    <method>
        <add>id,site_id,date_orig,date_last,sku,taxable,active,group_avail,position,cart_multiple,avail_category_id,discount,discount_amount,price_type,price_base,price_setup,price_group,price_recurr_type,price_recurr_weekday,price_recurr_week,price_recurr_schedule,price_recurr_cancel,price_trial_length_type,price_trial_length,price_trial_prod,assoc_req_prod,assoc_req_prod_type,assoc_grant_prod,assoc_grant_group,assoc_grant_group_type,assoc_grant_group_days,thumbnail,price_recurr_default,price_recurr_modify,modify_waive_setup,modify_product_arr</add>
        <update>id,site_id,date_orig,date_last,sku,taxable,active,group_avail,position,cart_multiple,avail_category_id,discount,discount_amount,price_type,price_base,price_setup,price_group,price_recurr_type,price_recurr_weekday,price_recurr_week,price_recurr_schedule,price_recurr_cancel,price_trial_length_type,price_trial_length,price_trial_prod,assoc_req_prod,assoc_req_prod_type,assoc_grant_prod,assoc_grant_group,assoc_grant_group_type,assoc_grant_group_days,thumbnail,price_recurr_default,host,host_server_id,host_provision_plugin_data,host_allow_domain,host_allow_host_only,host_discount_tld,host_discount_tld_amt,prod_plugin,prod_plugin_file,prod_plugin_data,price_recurr_modify,modify_waive_setup,modify_product_arr</update>
        <delete>id,site_id</delete>
        <view>id,site_id,date_orig,date_last,sku,taxable,active,group_avail,position,cart_multiple,avail_category_id,discount,discount_amount,price_type,price_base,price_setup,price_group,price_recurr_type,price_recurr_weekday,price_recurr_week,price_recurr_schedule,price_recurr_cancel,price_trial_length_type,price_trial_length,price_trial_prod,assoc_req_prod,assoc_req_prod_type,assoc_grant_prod,assoc_grant_group,assoc_grant_group_type,assoc_grant_group_days,thumbnail,price_recurr_default,host,host_server_id,host_provision_plugin_data,host_allow_domain,host_allow_host_only,host_discount_tld,host_discount_tld_amt,prod_plugin,prod_plugin_file,prod_plugin_data,price_recurr_modify,modify_waive_setup,modify_product_arr</view>
        <search>id,site_id,date_orig,date_last,sku,taxable,active,group_avail,position,cart_multiple,avail_category_id,price_type,price_recurr_schedule,price_recurr_cancel,price_base,price_setup</search>
    </method>
    <!-- define the method triggers -->
    <trigger>0</trigger>
</construct>