function xnpbookInsertItem(&$item_id)
{
    // set fixed value for month and day
    $_POST['publicationDateMonth'] = 1;
    $_POST['publicationDateDay'] = 1;
    // register BasicInformation, Index, Attachment
    $item_id = 0;
    $result = xnpInsertBasicInformation($item_id);
    if ($result) {
        $result = xnpUpdateIndex($item_id);
        if ($result) {
            $result = xnpUpdateAttachment($item_id, 'book_pdf');
        }
        if (!$result) {
            xnpDeleteBasicInformation($_SESSION['XNPSID'], $item_id);
        }
    }
    if (!$result) {
        return false;
    }
    // limit length
    $ar = _xnpbook_get_detail_request();
    xnpTrimColumn($ar, 'xnpbook_item_detail', array_keys($ar), _CHARSET);
    $hItemDetail =& xoonips_getormhandler('xnpbook', 'item_detail');
    $oItemDetail =& $hItemDetail->create();
    $oItemDetail->setVar('book_id', $item_id, true);
    // not gpc
    $oItemDetail->setVars($ar, true);
    // not gpc
    if (!$hItemDetail->insert($oItemDetail)) {
        error_log('xnpbook: cannot insert item_detail - ' . implode(', ', $oItemDetail->getErrors()));
        return false;
    }
    // insert author
    $formdata =& xoonips_getutility('formdata');
    $author_handler =& xoonips_getormhandler('xnpbook', 'author');
    $author_objs =& $formdata->getObjectArray('post', $author_handler->getTableName(), $author_handler, false);
    if (!$author_handler->updateAllObjectsByForeignKey('book_id', $item_id, $author_objs)) {
        return false;
    }
    return true;
}
function xnpconferenceInsertItem(&$item_id)
{
    global $xoopsDB;
    $formdata =& xoonips_getutility('formdata');
    $xnpsid = $_SESSION['XNPSID'];
    // register BasicInformation, Index, Attachment
    $item_id = 0;
    $_POST['publicationDateYear'] = addslashes($formdata->getValue('post', 'conferenceFromYear', 'i', false));
    $_POST['publicationDateMonth'] = addslashes($formdata->getValue('post', 'conferenceFromMonth', 'i', false));
    $_POST['publicationDateDay'] = addslashes($formdata->getValue('post', 'conferenceFromDay', 'i', false));
    $result = xnpInsertBasicInformation($item_id);
    if ($result) {
        $result = xnpUpdateIndex($item_id);
        if ($result) {
            $result = xnpUpdatePreview($item_id);
            if ($result) {
                $result = xnpUpdateAttachment($item_id, 'conference_file');
                if ($result) {
                    $result = xnpUpdateAttachment($item_id, 'conference_paper');
                    if ($result) {
                    }
                }
            }
        }
        if (!$result) {
            xnpDeleteBasicInformation($xnpsid, $item_id);
        }
    }
    if (!$result) {
        return false;
    }
    $keys = implode(',', array('attachment_dl_limit', 'attachment_dl_notify', 'presentation_type', 'conference_title', 'place', 'abstract', 'conference_from_year', 'conference_from_month', 'conference_from_mday', 'conference_to_year', 'conference_to_month', 'conference_to_mday'));
    // trim strings
    $ar = array('presentation_type' => $formdata->getValue('post', 'presentation_type', 's', false), 'conference_title' => $formdata->getValue('post', 'conference_title', 's', false), 'place' => $formdata->getValue('post', 'place', 's', false), 'abstract' => $formdata->getValue('post', 'abstract', 's', false));
    xnpTrimColumn($ar, 'xnpconference_item_detail', array_keys($ar), _CHARSET);
    $attachment_dl_limit = $formdata->getValue('post', 'attachment_dl_limit', 'i', false);
    $attachment_dl_notify = $formdata->getValue('post', 'attachment_dl_notify', 'i', false);
    $vals = implode('\',\'', array($attachment_dl_limit, $attachment_dl_limit ? $attachment_dl_notify : 0, addslashes($ar['presentation_type']), addslashes($ar['conference_title']), addslashes($ar['place']), addslashes($ar['abstract']), addslashes($formdata->getValue('post', 'conferenceFromYear', 'i', false)), addslashes($formdata->getValue('post', 'conferenceFromMonth', 'i', false)), addslashes($formdata->getValue('post', 'conferenceFromDay', 'i', false)), addslashes($formdata->getValue('post', 'conferenceToYear', 'i', false)), addslashes($formdata->getValue('post', 'conferenceToMonth', 'i', false)), addslashes($formdata->getValue('post', 'conferenceToDay', 'i', false))));
    // register DetailInformation
    $sql = 'insert into ' . $xoopsDB->prefix('xnpconference_item_detail') . " ( conference_id, {$keys} ) values ( {$item_id}, '{$vals}' ) ";
    $result = $xoopsDB->queryF($sql);
    if ($result == false) {
        echo 'cannot insert item_detail';
        return false;
    }
    // insert author
    $author_handler =& xoonips_getormhandler('xnpconference', 'author');
    $author_objs =& $formdata->getObjectArray('post', $author_handler->getTableName(), $author_handler, false);
    if (!$author_handler->updateAllObjectsByForeignKey('conference_id', $item_id, $author_objs)) {
        return false;
    }
    return true;
}
function xnppresentationInsertItem(&$item_id)
{
    global $xoopsDB;
    $xnpsid = $_SESSION['XNPSID'];
    $formdata =& xoonips_getutility('formdata');
    // retister BasicInformation, Index and Attachment
    $item_id = 0;
    $result = xnpInsertBasicInformation($item_id);
    if ($result) {
        $result = xnpUpdateIndex($item_id);
        if ($result) {
            $result = xnpUpdatePreview($item_id);
            if ($result) {
                $result = xnpUpdateAttachment($item_id, 'presentation_file');
                if ($result) {
                }
            }
        }
        if (!$result) {
            xnpDeleteBasicInformation($xnpsid, $item_id);
        }
    }
    if (!$result) {
        return false;
    }
    // register detail information
    list($rights, $use_cc, $cc_commercial_use, $cc_modification) = xnpGetRights();
    $myts =& MyTextSanitizer::getInstance();
    // it makes string with constant length
    $ar = array('presentation_type' => $formdata->getValue('post', 'presentation_type', 's', true), 'readme' => xnpGetTextFile('readme'), 'rights' => $rights);
    xnpTrimColumn($ar, 'xnppresentation_item_detail', array_keys($ar), _CHARSET);
    $myts =& MyTextSanitizer::getInstance();
    $keys = implode(',', array('attachment_dl_limit', 'attachment_dl_notify', 'presentation_type', 'readme', 'rights', 'use_cc', 'cc_commercial_use', 'cc_modification'));
    $attachment_dl_limit = $formdata->getValue('post', 'attachment_dl_limit', 'i', true);
    $attachment_dl_notify = $formdata->getValue('post', 'attachment_dl_notify', 'i', true);
    $vals = implode('\',\'', array($attachment_dl_limit, $attachment_dl_limit ? $attachment_dl_notify : 0, addslashes($ar['presentation_type']), addslashes($ar['readme']), addslashes($ar['rights']), $use_cc, $cc_commercial_use, $cc_modification));
    $sql = 'insert into ' . $xoopsDB->prefix('xnppresentation_item_detail') . " ( presentation_id, {$keys} ) values ( {$item_id}, '{$vals}' ) ";
    $result = $xoopsDB->queryF($sql);
    if ($result == false) {
        echo 'cannot insert item_detail';
        return false;
    }
    // insert creator
    $creator_handler =& xoonips_getormhandler('xnppresentation', 'creator');
    $creator_objs =& $formdata->getObjectArray('post', $creator_handler->getTableName(), $creator_handler, false);
    if (!$creator_handler->updateAllObjectsByForeignKey('presentation_id', $item_id, $creator_objs)) {
        return false;
    }
    return true;
}
function xnpfilesInsertItem(&$item_id)
{
    global $xoopsDB;
    $formdata =& xoonips_getutility('formdata');
    $xnpsid = $_SESSION['XNPSID'];
    // register BasicInformation, Index, Attachment
    $item_id = 0;
    $result = xnpInsertBasicInformation($item_id);
    if ($result) {
        $result = xnpUpdateIndex($item_id);
        if ($result) {
            $result = xnpUpdatePreview($item_id);
            if ($result) {
                $result = xnpUpdateAttachment($item_id, 'files_file');
                if ($result) {
                }
            }
        }
        if (!$result) {
            xnpDeleteBasicInformation($xnpsid, $item_id);
        }
    }
    if (!$result) {
        return false;
    }
    // register Detail Information
    $file_id = $formdata->getValue('post', 'files_fileFileID', 'i', false);
    $file_handler =& xoonips_getormhandler('xoonips', 'file');
    $file_obj =& $file_handler->get($file_id);
    $file_name = $file_obj->get('original_file_name');
    $file_mimetype = $file_obj->get('mime_type');
    $file_pathinfo = pathinfo($file_name);
    $file_type = $file_pathinfo['extension'];
    $detail_handler =& xoonips_getormhandler('xnpfiles', 'item_detail');
    $detail_obj =& $detail_handler->create();
    $detail_obj->set('files_id', $item_id);
    $detail_obj->set('data_file_name', $file_name);
    $detail_obj->set('data_file_mimetype', $file_mimetype);
    $detail_obj->set('data_file_filetype', $file_type);
    if (!$detail_handler->insert($detail_obj)) {
        echo 'cannot insert item_detail';
        return false;
    }
    return true;
}
function xnppaperInsertItem(&$item_id)
{
    global $xoopsDB;
    $formdata =& xoonips_getutility('formdata');
    $xnpsid = $_SESSION['XNPSID'];
    // register BasicInformation, Index, Attachment
    $item_id = 0;
    $result = xnpInsertBasicInformation($item_id);
    if ($result) {
        $result = xnpUpdateIndex($item_id);
        if ($result) {
            $result = xnpUpdateAttachment($item_id, 'paper_pdf_reprint');
            if ($result) {
            }
        }
        if (!$result) {
            xnpDeleteBasicInformation($xnpsid, $item_id);
        }
    }
    if (!$result) {
        return false;
    }
    // limit length
    $journal = $formdata->getValue('post', 'journal', 's', false);
    $volume = $formdata->getValue('post', 'volume', 's', false);
    $number = $formdata->getValue('post', 'number', 's', false);
    $page = $formdata->getValue('post', 'page', 's', false);
    $abstract = $formdata->getValue('post', 'abstract', 's', false);
    $pubmed_id = $formdata->getValue('post', 'pubmed_id', 's', false);
    $ar = array('journal' => $journal, 'page' => $page, 'abstract' => $abstract, 'pubmed_id' => $pubmed_id);
    xnpTrimColumn($ar, 'xnppaper_item_detail', array_keys($ar), _CHARSET);
    $keys = implode(',', array('journal', 'volume', 'number', 'page', 'abstract', 'pubmed_id'));
    $vals = implode(',', array('\'' . addslashes($ar['journal']) . '\'', strlen($volume) == 0 ? 'null' : (int) $volume, strlen($number) == 0 ? 'null' : (int) $number, strlen($page) == 0 ? 'null' : '\'' . addslashes($ar['page']) . '\'', strlen($abstract) == 0 ? 'null' : '\'' . addslashes($ar['abstract']) . '\'', strlen($pubmed_id) == 0 ? 'null' : '\'' . addslashes($ar['pubmed_id']) . '\''));
    // register detail information
    $sql = 'insert into ' . $xoopsDB->prefix('xnppaper_item_detail') . " ( paper_id, {$keys} ) values ( {$item_id}, {$vals} ) ";
    $result = $xoopsDB->queryF($sql);
    if ($result == false) {
        return false;
    }
    // insert author
    $author_handler =& xoonips_getormhandler('xnppaper', 'author');
    $author_objs =& $formdata->getObjectArray('post', $author_handler->getTableName(), $author_handler, false);
    if (!$author_handler->updateAllObjectsByForeignKey('paper_id', $item_id, $author_objs)) {
        return false;
    }
    return true;
}
function xnpmemoInsertItem(&$item_id)
{
    global $xoopsDB;
    $formdata =& xoonips_getutility('formdata');
    $xnpsid = $_SESSION['XNPSID'];
    // register BasicInformation, Index, Attachment
    $item_id = 0;
    $result = xnpInsertBasicInformation($item_id);
    if ($result) {
        $result = xnpUpdateIndex($item_id);
        if ($result) {
            $result = xnpUpdateAttachment($item_id, 'memo_file');
            if ($result) {
            }
        }
        if (!$result) {
            xnpDeleteBasicInformation($xnpsid, $item_id);
        }
    }
    if (!$result) {
        return false;
    }
    $ar = array('item_link' => preg_replace('/javascript:/i', '', preg_replace('/[\\x00-\\x20\\x22\\x27]/', '', $formdata->getValue('post', 'item_link', 's', false))));
    xnpTrimColumn($ar, 'xnpmemo_item_detail', array_keys($ar), _CHARSET);
    $escval = addslashes($ar['item_link']);
    // register DetailInformation
    $sql = 'insert into ' . $xoopsDB->prefix('xnpmemo_item_detail') . " ( memo_id, item_link ) values ( {$item_id}, '{$escval}' ) ";
    $result = $xoopsDB->queryF($sql);
    if ($result == false) {
        echo 'cannot insert item_detail';
        return false;
    }
    return true;
}
function xnpurlInsertItem(&$item_id)
{
    $formdata =& xoonips_getutility('formdata');
    global $xoopsDB;
    $xnpsid = $_SESSION['XNPSID'];
    // retister BasicInformation, Index and Attachment
    $item_id = 0;
    $result = xnpInsertBasicInformation($item_id);
    if ($result) {
        $result = xnpUpdateIndex($item_id);
        if ($result) {
            $result = xnpUpdateAttachment($item_id, 'url_banner_file');
            if ($result) {
            }
        }
        if (!$result) {
            xnpDeleteBasicInformation($xnpsid, $item_id);
        }
    }
    if (!$result) {
        return false;
    }
    // limit num of chracters
    $ar = array('url' => preg_replace('/javascript:/i', '', preg_replace('/[\\x00-\\x20\\x22\\x27]/', '', $formdata->getValue('post', 'url', 's', false))));
    xnpTrimColumn($ar, 'xnpurl_item_detail', array_keys($ar), _CHARSET);
    // register detail information
    $sql = 'insert into ' . $xoopsDB->prefix('xnpurl_item_detail') . " ( url_id, url ) values ( {$item_id}, '" . addslashes($ar['url']) . '\' ) ';
    $result = $xoopsDB->queryF($sql);
    if ($result == false) {
        echo 'cannot insert item_detail';
        return false;
    }
    return true;
}
function xnpbinderInsertItem(&$binder_id)
{
    global $xoopsDB;
    // Insert BasicInformation, Index, Preview, Attachment
    $binder_id = 0;
    $result = xnpInsertBasicInformation($binder_id);
    if ($result) {
        $result = xnpUpdateIndex($binder_id);
        if (!$result) {
            xnpDeleteBasicInformation($_SESSION['XNPSID'], $binder_id);
        }
    }
    if (!$result) {
        return false;
    }
    // Insert DetailInformation
    $detail_handler =& xoonips_getormhandler('xnpbinder', 'item_detail');
    $detail =& $detail_handler->create();
    $detail->setVar('binder_id', $binder_id, true);
    if (!$detail_handler->insert($detail)) {
        echo 'cannot insert item_detail';
        return false;
    }
    $xoonips_item_id = xnpbinder_get_xoonips_item_id();
    foreach ($xoonips_item_id as $iid) {
        $result = $xoopsDB->queryF('insert into ' . $xoopsDB->prefix('xnpbinder_binder_item_link') . " ( binder_id, item_id ) values ( {$binder_id}, {$iid} )");
        if ($result == false) {
            echo 'cannot insert item_detail';
            return false;
        }
    }
    return true;
}