}
$xil_objs =& $xil_handler->getObjects($criteria, false, '', false, $join);
$items = array();
include XOOPS_ROOT_PATH . '/header.php';
foreach ($xil_objs as $xil_obj) {
    $iid = $xil_obj->get('item_id');
    $xid = $xil_obj->get('index_id');
    if (!isset($items[$iid])) {
        $itemlib_handler =& XooNIpsItemLibraryHandler::getInstance();
        $itemlib_obj =& $itemlib_handler->get($iid);
        if (!is_object($itemlib_obj)) {
            continue;
        }
        $items[$iid] = array('item_id' => $iid, 'indexes' => array(), 'item_body' => $itemlib_obj->getItemListBlock());
    }
    $items[$iid]['indexes'][] = array('id' => $xid, 'path' => xnpGetIndexPathString($xnpsid, $xid));
}
$xoopsOption['template_main'] = 'xoonips_certify.html';
if (isset($menu_id)) {
    $xoopsTpl->assign('menu_id', $menu_id);
}
$xoopsTpl->assign('pankuzu', $pankuzu);
$xoopsTpl->assign('certify_button_label', _MD_XOONIPS_ITEM_CERTIFY_BUTTON_LABEL);
$xoopsTpl->assign('uncertify_button_label', _MD_XOONIPS_ITEM_UNCERTIFY_BUTTON_LABEL);
$xoopsTpl->assign('item_label', _MD_XOONIPS_ITEM_ITEM_LABEL);
$xoopsTpl->assign('index_label', _MD_XOONIPS_ITEM_INDEX_LABEL);
if (count($items) > 0) {
    $xoopsTpl->assign('items', $items);
}
$xoopsTpl->assign('xoonips_editprofile_url', XOOPS_URL . '/modules/xoonips/edituser.php?uid=' . $uid);
// token ticket
}
$dirArray = xoonipsGetPathArray($xnpsid, $xid);
// get Children
// -> childIndexes
$childIndexes = array();
$index_compo_handler =& xoonips_getormcompohandler('xoonips', 'index');
$join = new XooNIpsJoinCriteria('xoonips_index', 'item_id', 'index_id');
$criteria2 =& new Criteria('parent_index_id', $xid);
$criteria2->setSort('sort_number');
foreach ($index_compo_handler->getObjects($criteria2, true, '', false, $join) as $index_id => $childindex) {
    $item_lock_handler =& xoonips_getormhandler('xoonips', 'item_lock');
    $index_group_index_link_handler =& xoonips_getormhandler('xoonips', 'index_group_index_link');
    $titles =& $childindex->getVar('titles');
    $childIndexes[$index_id] = array('isLocked' => $item_lock_handler->isLocked($index_id), 'titles' => array($titles[0]->getVar('title', 's')), 'item_id' => $index_id, 'lockTypeString' => $textutil->html_special_chars(get_lock_type_string($index_id)), 'write_permission' => $index_handler->getPerm($index_id, @$_SESSION['xoopsUserId'], 'write'), 'public_index_string' => '', 'public_index_pending_string' => '');
    foreach ($index_group_index_link_handler->getByGroupIndexId($index_id, @$_SESSION['xoopsUserId']) as $link) {
        $childIndexes[$index_id]['public_index_string'] .= xnpGetIndexPathString($xnpsid, $link->get('index_id')) . "<br />";
        $childIndexes[$index_id]['public_index_pending_string'] .= _MD_XOONIPS_ITEM_PENDING_NOW . "<br />";
    }
}
// prev_idnex_id, next_index_id are set
reset($childIndexes);
function get_lock_type_string($index_id)
{
    $item_lock_handler =& xoonips_getormhandler('xoonips', 'item_lock');
    if ($item_lock_handler->isLocked($index_id)) {
        return sprintf(_MD_XOONIPS_WARNING_CANNOT_EDIT_LOCKED_INDEX, xoonips_get_lock_type_string($item_lock_handler->getLockType($index_id)));
    }
    return '';
}
// generate list about 'moveto'
require_once 'include/gentree.php';
/**
 * add item to index, set certify_state and lock item and indexes
 * 
 * @param $index_id integer id of index item is registerd to
 * @param $uid integer user id of executor
 * @param $old_selected_item_ids array id of all of already registerd items to the index($index_id)
 * @param $new_selected_item_ids array id of all of items to be registered to the index($index_id)
 * 
 */
function xoonips_add_selected_item($index_id, $uid, $old_selected_item_ids, $new_selected_item_ids)
{
    global $xoopsDB;
    $uid_list = array();
    // uid(s) who receive notification.
    $add_item_ids = array_diff($new_selected_item_ids, $old_selected_item_ids);
    $del_item_ids = array_diff($old_selected_item_ids, $new_selected_item_ids);
    $index_handler =& xoonips_getormhandler('xoonips', 'index');
    $index = $index_handler->get($index_id);
    switch ($index->get('open_level')) {
        case OL_GROUP_ONLY:
            // get uid list of group admins
            $xgroup_handler =& xoonips_gethandler('xoonips', 'group');
            $uid_list = $xgroup_handler->getUserIds($index->get('gid'), true);
            break;
        case OL_PUBLIC:
            // get uid list of moderators
            $xoonips_users_handler =& xoonips_getormhandler('xoonips', 'users');
            $xoonips_config_handler =& xoonips_getormhandler('xoonips', 'config');
            $moderator_gid = $xoonips_config_handler->getValue('moderator_gid');
            $member_handler =& xoops_gethandler('member');
            $users = $member_handler->getUsersByGroup($moderator_gid, true);
            foreach ($users as $u) {
                if ($xoonips_users_handler->get($u->getVar('uid'))) {
                    $uid_list[] = $u->getVar('uid');
                }
            }
            break;
    }
    $xoonips_config_handler =& xoonips_getormhandler('xoonips', 'config');
    $index_item_link_handler =& xoonips_getormhandler('xoonips', 'index_item_link');
    // add selected item into index
    foreach ($add_item_ids as $item_id) {
        // can't add items when the item is certified already or is in pending state.
        $criteria = new CriteriaCompo(new Criteria('index_id', $index_id));
        $criteria = $criteria->add(new Criteria('item_id', $item_id));
        $index_item_link =& $index_item_link_handler->getObjects($criteria);
        if (isset($index_item_link[0]) && $index_item_link[0]->get('certify_state') == CERTIFY_REQUIRED || isset($index_item_link[0]) && $index_item_link[0]->get('certify_state') == CERTIFIED) {
            continue;
        }
        // add
        $certify_item = $xoonips_config_handler->getValue(XNP_CONFIG_CERTIFY_ITEM_KEY);
        $index_item_link = $index_item_link_handler->create();
        $index_item_link->set('index_id', $index_id);
        $index_item_link->set('item_id', $item_id);
        $index_item_link->set('certify_state', $certify_item == 'auto' ? CERTIFIED : CERTIFY_REQUIRED);
        if (!$index_item_link_handler->insert($index_item_link)) {
            redirect_header(XOOPS_URL . '/', 3, "ERROR can't create index_item_link");
            exit;
        }
        $changelogs_handler =& xoonips_getormhandler('xoonips', 'changelog');
        $change_log = $changelogs_handler->create();
        $change_log->set('uid', $uid);
        $change_log->set('item_id', $item_id);
        $change_log->set('log_date', time());
        $change_log->set('log', sprintf(_MD_XOONIPS_ITEM_CHANGE_LOG_AUTOFILL_TEXT, implode(_MD_XOONIPS_ITEM_CHANGE_LOG_AUTOFILL_DELIMITER, array(_MD_XOONIPS_ITEM_INDEX_LABEL))));
        $item_handler =& xoonips_getormcompohandler('xoonips', 'item');
        $item = $item_handler->get($item_id);
        $item_basic = $item->getVar('basic');
        $change_logs = $item->getVar('changelogs');
        $item_basic->set('last_update_date', time());
        $change_logs[] = $change_log;
        $item->setVar('changelogs', $change_logs);
        $item->setVar('basic', $item_basic);
        if (!$item_handler->insert($item)) {
            redirect_header(XOOPS_URL . '/', 3, "ERROR in updating item");
        }
        trigger_error("TODO lock item and indexes");
        // lock if imported items are registered to public/group index and certify required
        $item_basic_handler =& xoonips_getormhandler('xoonips', 'item_basic');
        $index_item_links =& $item->getVar('indexes');
        $index_handler =& xoonips_getormhandler('xoonips', 'index');
        foreach ($index_item_links as $index_item_link) {
            if ($index_item_link->get('certify_state') == CERTIFY_REQUIRED) {
                $index = $index_handler->get($index_item_link->get('index_id'));
                if ($index->get('open_level') == OL_PUBLIC || $index->get('open_level') == OL_GROUP_ONLY) {
                    $basic =& $item->getVar('basic');
                    $item_basic_handler->lockItemAndIndexes($basic->get('item_id'), $index_item_link->get('index_id'));
                }
            }
        }
        // record events(update item)
        $eventlog_handler =& xoonips_getormhandler('xoonips', 'event_log');
        $eventlog_handler->recordUpdateItemEvent($item_id);
        if (OL_PUBLIC == $index->get('open_level') || OL_GROUP_ONLY == $index->get('open_level')) {
            $certify_item = $xoonips_config_handler->getValue(XNP_CONFIG_CERTIFY_ITEM_KEY);
            switch ($certify_item) {
                case 'auto':
                    // record events(certify item)
                    $eventlog_handler->recordCertifyItemEvent($item_id, $index_id);
                    break;
                case 'on':
                    global $xoopsModule;
                    $notification_handler =& xoops_gethandler('notification');
                    //define tags here for notification message
                    $tags = array();
                    $tags['ITEM_URL'] = XOOPS_URL . '/modules/' . $xoopsModule->dirname() . "/detail.php?item_id={$item_id}";
                    $tags['CERTIFY_URL'] = XOOPS_URL . '/modules/' . $xoopsModule->dirname() . "/certify.php";
                    $tags['INDEX'] = xnpGetIndexPathString($_SESSION['XNPSID'], $index_id);
                    $notification_handler =& xoops_gethandler('notification');
                    $result = $notification_handler->triggerEvent('administrator', 0, 'item_certify_request', $tags, $uid_list);
                    break;
            }
        }
    }
}
        if ($size != false) {
            header("Content-Length: {$size}");
        }
        readfile($zipFile . ".zip");
        foreach ($removeFiles as $f) {
            unlink($f);
        }
        @rmdir($export_dir . "/files");
        //remove files/ folder(xnpExportFile makes this dir. see also imexport.php.)
        rmdir($export_dir);
        exit;
    } while (false);
} else {
    if ($op == 'list') {
        if ($export_type == 'index') {
            $indexpath = xnpGetIndexPathString($_SESSION['XNPSID'], $index_id);
            $export_index = _MD_XOONIPS_ITEM_INDEX_LABEL;
            $yesno = $recursive_index == 1 ? _YES : _NO;
            $export_recursive = _MD_XOONIPS_EXPORT_RECURSIVE;
            $submit = _MD_XOONIPS_EXPORT_LICENSE_AGREEMENT_SUBMIT;
            $pankuzu = _MD_XOONIPS_EXPORT_PANKUZU_EXPORT . _MI_XOONIPS_ACCOUNT_PANKUZU_SEPARATOR . _MD_XOONIPS_EXPORT_PANKUZU_EXPORT_INDEX;
            $message = _MD_XOONIPS_EXPORT_EXPORT_INDEX;
            include XOOPS_ROOT_PATH . '/header.php';
            echo <<<EOT
            <p>
            {$pankuzu}
            </p>
            <p>
            {$message}
            </p>
            <form id='export_list' action='export.php' method='post'>
function xnpGetIndexRegisterBlock()
{
    $xnpsid = $_SESSION['XNPSID'];
    $indexes = array();
    $formdata =& xoonips_getutility('formdata');
    $xoonipsCheckedXID = $formdata->getValue('post', 'xoonipsCheckedXID', 's', false);
    if (isset($xoonipsCheckedXID)) {
        $index_ids = explode(',', $xoonipsCheckedXID);
        $index_handler =& xoonips_getormhandler('xoonips', 'index');
        foreach ($index_ids as $xid) {
            if ($xid > 0) {
                if (!$index_handler->getPerm($xid, $_SESSION['xoopsUserId'], 'read')) {
                    continue;
                }
                $str = xnpGetIndexPathString($xnpsid, $xid);
                $indexes[$xid] = "{$str}";
            }
        }
    }
    if (count($indexes) == 0) {
        return array('name' => _MD_XOONIPS_ITEM_INDEX_LABEL . _MD_XOONIPS_ITEM_REQUIRED_MARK);
    } else {
        return array('name' => _MD_XOONIPS_ITEM_INDEX_LABEL . _MD_XOONIPS_ITEM_REQUIRED_MARK, 'value' => implode('<br />', array_values($indexes)));
    }
}