$iteminfo['files']['preview'] = null;
// null if preview is not used
$iteminfo['files']['others'] = array();
//
// define compo
$iteminfo['ormcompo']['module'] = 'xnpbook';
$iteminfo['ormcompo']['name'] = 'item';
$iteminfo['ormcompo']['primary_orm'] = 'basic';
$iteminfo['ormcompo']['primary_key'] = 'item_id';
//
// define orm of compo
$author_order_criteria = new Criteria(1, 1);
$author_order_criteria->setSort('author_order');
$iteminfo['orm'][] = array('module' => 'xnpbook', 'name' => 'item_detail', 'field' => 'detail', 'foreign_key' => 'book_id', 'multiple' => false, 'required' => true);
$iteminfo['orm'][] = array('module' => 'xnpbook', 'name' => 'author', 'field' => 'author', 'foreign_key' => 'book_id', 'multiple' => true, 'criteria' => $author_order_criteria);
$iteminfo['orm'][] = array('module' => 'xoonips', 'name' => 'file', 'field' => 'book_pdf', 'foreign_key' => 'item_id', 'criteria' => iteminfo_file_criteria('book_pdf'), 'multiple' => false);
//
// define database table information
$iteminfo['ormfield']['detail'] = array(array('name' => 'editor', 'type' => 'string', 'required' => false), array('name' => 'publisher', 'type' => 'string', 'required' => true), array('name' => 'isbn', 'type' => 'string', 'required' => false), array('name' => 'url', 'type' => 'string', 'required' => false), array('name' => 'attachment_dl_limit', 'type' => 'int', 'required' => false), array('name' => 'attachment_dl_notify', 'type' => 'int', 'required' => false));
$iteminfo['ormfield']['author'] = array(array('name' => 'author', 'type' => 'string', 'required' => true), array('name' => 'order', 'type' => 'int', 'required' => true));
//
// publication_year(creation_date in XML-RPC) is required
foreach ($iteminfo['io']['xmlrpc']['item'] as $key => $val) {
    if ($val['xmlrpc']['field'][0] == 'creation_year') {
        $iteminfo['io']['xmlrpc']['item'][$key]['xmlrpc']['required'] = true;
        $iteminfo['io']['xmlrpc']['item'][$key]['xmlrpc']['display_name'] = '_MD_XNPBOOK_XMLRPC_DISPLAY_NAME_CREATION_YEAR';
    } else {
        if ($val['xmlrpc']['field'][0] == 'creation_month') {
            $iteminfo['io']['xmlrpc']['item'][$key]['xmlrpc']['display_name'] = '_MD_XNPBOOK_XMLRPC_DISPLAY_NAME_CREATION_MONTH';
        } else {
            if ($val['xmlrpc']['field'][0] == 'creation_mday') {
$iteminfo['files']['preview'] = 'preview';
$iteminfo['files']['others'] = array();
//
// define compo
$iteminfo['ormcompo']['module'] = 'xnpmodel';
$iteminfo['ormcompo']['name'] = 'item';
$iteminfo['ormcompo']['primary_orm'] = 'basic';
$iteminfo['ormcompo']['primary_key'] = 'item_id';
//
// define orm of compo
$creator_order_criteria = new Criteria(1, 1);
$creator_order_criteria->setSort('creator_order');
$iteminfo['orm'][] = array('module' => 'xnpmodel', 'name' => 'item_detail', 'field' => 'detail', 'foreign_key' => 'model_id', 'multiple' => false, 'required' => true);
$iteminfo['orm'][] = array('module' => 'xnpmodel', 'name' => 'creator', 'field' => 'creator', 'foreign_key' => 'model_id', 'multiple' => true, 'criteria' => $creator_order_criteria);
$iteminfo['orm'][] = array('module' => 'xoonips', 'name' => 'file', 'field' => 'model_data', 'foreign_key' => 'item_id', 'criteria' => iteminfo_file_criteria('model_data'), 'multiple' => false);
$iteminfo['orm'][] = array('module' => 'xoonips', 'name' => 'file', 'field' => 'preview', 'foreign_key' => 'item_id', 'criteria' => iteminfo_file_criteria('preview'), 'multiple' => true);
//
// define database table information
$iteminfo['ormfield']['detail'] = array(array('name' => 'model_id', 'type' => 'int', 'required' => ' false'), array('name' => 'model_type', 'type' => 'string', 'required' => ' true'), array('name' => 'readme', 'type' => 'string', 'required' => ' false'), array('name' => 'rights', 'type' => 'string', 'required' => ' false'), array('name' => 'use_cc', 'type' => 'int', 'required' => ' false'), array('name' => 'cc_commercial_use', 'type' => 'int', 'required' => ' false'), array('name' => 'cc_modification', 'type' => 'int', 'required' => ' false'), array('name' => 'attachment_dl_limit', 'type' => 'int', 'required' => ' false'), array('name' => 'attachment_dl_notify', 'type' => 'int', 'required' => ' false'));
$iteminfo['ormfield']['creator'] = array(array('name' => 'creator', 'type' => 'string', 'required' => true), array('name' => 'creator_order', 'type' => 'int', 'required' => true));
//
// detail information (modify below for each item types)
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'model_id'))), 'xmlrpc' => array('field' => array('detail_field', 'model_id'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_ID', 'type' => 'string', 'multiple' => false, 'readonly' => true));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'model_type'))), 'xmlrpc' => array('field' => array('detail_field', 'model_type'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE', 'type' => 'string', 'options' => array(array('option' => 'matlab', 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE_MATLAB'), array('option' => 'neuron', 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE_NEURON'), array('option' => 'original_program', 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE_ORIGINAL_PROGRAM'), array('option' => 'satellite', 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE_SATELLITE'), array('option' => 'genesis', 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE_GENESIS'), array('option' => 'a_cell', 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE_A_CELL'), array('option' => 'other', 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_MODEL_TYPE_OTHER')), 'multiple' => false, 'required' => true));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'creator', 'field' => 'creator'))), 'xmlrpc' => array('field' => array('detail_field', 'creator'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_CREATOR', 'type' => 'string', 'multiple' => true, 'required' => true));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'readme'))), 'xmlrpc' => array('field' => array('detail_field', 'readme'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_README', 'type' => 'string', 'multiple' => false));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'rights'))), 'xmlrpc' => array('field' => array('detail_field', 'rights'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_RIGHTS', 'type' => 'string', 'multiple' => false));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'use_cc'))), 'xmlrpc' => array('field' => array('detail_field', 'use_cc'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_USE_CC', 'type' => 'string', 'multiple' => false));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'cc_commercial_use'))), 'xmlrpc' => array('field' => array('detail_field', 'cc_commercial_use'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_CC_COMMERCIAL_USE', 'type' => 'string', 'multiple' => false));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'cc_modification'))), 'xmlrpc' => array('field' => array('detail_field', 'cc_modification'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_CC_MODIFICATION', 'type' => 'string', 'multiple' => false));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'attachment_dl_limit'))), 'xmlrpc' => array('field' => array('detail_field', 'attachment_dl_limit'), 'display_name' => '_MD_XNPMODEL_XMLRPC_DISPLAY_NAME_ATTACHMENT_DL_LIMIT', 'type' => 'string', 'multiple' => false));
$iteminfo['files']['others'] = array('conference_paper');
//
//
// define compo
$iteminfo['ormcompo']['module'] = 'xnpconference';
$iteminfo['ormcompo']['name'] = 'item';
$iteminfo['ormcompo']['primary_orm'] = 'basic';
$iteminfo['ormcompo']['primary_key'] = 'item_id';
//
// define orm of compo
$author_order_criteria = new Criteria(1, 1);
$author_order_criteria->setSort('author_order');
$iteminfo['orm'][] = array('module' => 'xnpconference', 'name' => 'item_detail', 'field' => 'detail', 'foreign_key' => 'conference_id', 'multiple' => false, 'required' => true);
$iteminfo['orm'][] = array('module' => 'xnpconference', 'name' => 'author', 'field' => 'author', 'foreign_key' => 'conference_id', 'multiple' => true, 'criteria' => $author_order_criteria);
$iteminfo['orm'][] = array('module' => 'xoonips', 'name' => 'file', 'field' => 'conference_file', 'foreign_key' => 'item_id', 'criteria' => iteminfo_file_criteria('conference_file'), 'multiple' => false);
$iteminfo['orm'][] = array('module' => 'xoonips', 'name' => 'file', 'field' => 'conference_paper', 'foreign_key' => 'item_id', 'criteria' => iteminfo_file_criteria('conference_paper'), 'multiple' => false);
//
// define database table information
$iteminfo['ormfield']['detail'] = array(array('name' => 'conference_id', 'type' => 'int', 'required' => false), array('name' => 'presentation_type', 'type' => 'string', 'required' => false), array('name' => 'conference_title', 'type' => 'string', 'required' => false), array('name' => 'place', 'type' => 'string', 'required' => false), array('name' => 'abstract', 'type' => 'string', 'required' => false), array('name' => 'conference_from_year', 'type' => 'int', 'required' => false), array('name' => 'conference_from_month', 'type' => 'int', 'required' => false), array('name' => 'conference_from_mday', 'type' => 'int', 'required' => false), array('name' => 'conference_to_year', 'type' => 'int', 'required' => false), array('name' => 'conference_to_month', 'type' => 'int', 'required' => false), array('name' => 'conference_to_mday', 'type' => 'int', 'required' => false), array('name' => 'attachment_dl_limit', 'type' => 'int', 'required' => false), array('name' => 'attachment_dl_notify', 'type' => 'int', 'required' => false));
$iteminfo['ormfield']['author'] = array(array('name' => 'author', 'type' => 'string', 'required' => true), array('name' => 'author_order', 'type' => 'int', 'required' => true));
//
// publication_year(creation_date in XML-RPC) is required
foreach ($iteminfo['io']['xmlrpc']['item'] as $key => $val) {
    if ($val['xmlrpc']['field'][0] == 'titles') {
        $iteminfo['io']['xmlrpc']['item'][$key]['xmlrpc']['display_name'] = '_MD_XNPCONFERENCE_XMLRPC_DISPLAY_NAME_TITLES';
    }
}
//
// detail information (modify below for each item types)
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'conference_id'))), 'xmlrpc' => array('field' => array('detail_field', 'conference_id'), 'display_name' => '_MD_XNPCONFERENCE_XMLRPC_DISPLAY_NAME_CONFERENCE_ID', 'type' => 'string', 'readonly' => true));
$iteminfo['io']['xmlrpc']['item'][] = array('orm' => array('field' => array(array('orm' => 'detail', 'field' => 'presentation_type'))), 'xmlrpc' => array('field' => array('detail_field', 'presentation_type'), 'display_name' => '_MD_XNPCONFERENCE_XMLRPC_DISPLAY_NAME_PRESENTATION_TYPE', 'type' => 'string', 'required' => true, 'options' => array(array('option' => 'powerpoint', 'display_name' => '_MD_XNPCONFERENCE_XMLRPC_DISPLAY_NAME_PRESENTATION_TYPE_POWERPOINT'), array('option' => 'pdf', 'display_name' => '_MD_XNPCONFERENCE_XMLRPC_DISPLAY_NAME_PRESENTATION_TYPE_PDF'), array('option' => 'illustrator', 'display_name' => '_MD_XNPCONFERENCE_XMLRPC_DISPLAY_NAME_PRESENTATION_TYPE_ILLUSTRATOR'), array('option' => 'other', 'display_name' => '_MD_XNPCONFERENCE_XMLRPC_DISPLAY_NAME_PRESENTATION_TYPE_OTHER'))));