예제 #1
0
function xnpbook_get_list_block_array($item_id)
{
    $item_basic_handler =& xoonips_getormhandler('xoonips', 'item_basic');
    $item_basic = $item_basic_handler->get($item_id);
    $item_title_handler =& xoonips_getormhandler('xoonips', 'title');
    $criteria = new Criteria('item_id', $item_id);
    $criteria->setSort('title_id');
    $item_titles =& $item_title_handler->getObjects($criteria);
    $titles = array();
    foreach ($item_titles as $t) {
        $titles[] = $t->getVarArray('n');
    }
    $item_detail_handler =& xoonips_getormhandler('xnpbook', 'item_detail');
    $item_detail = $item_detail_handler->get($item_id);
    return array('basic' => $item_basic->getVarArray('n'), 'titles' => $titles, 'detail' => $item_detail->getVarArray('n'), 'pending' => xnpIsPending($item_id) ? true : false);
}
 /**
  * return template variables of item basic part
  * 
  * @param string $type defined symbol 
  *  XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_DETAIL
  *  , XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_LISTL
  *  , XOONIPS_TEMPLATE_TYPE_ITEM_DETAIL
  * or XOONIPS_TEMPLATE_TYPE_ITEM_LIST
  * @param object $item item compo object
  * @param int $uid
  * @return array variables
  */
 function getBasicTemplateVar($type, &$item, $uid)
 {
     if (!in_array($type, array(XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_DETAIL, XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_LIST, XOONIPS_TEMPLATE_TYPE_ITEM_DETAIL, XOONIPS_TEMPLATE_TYPE_ITEM_LIST))) {
         return array();
     }
     $textutil =& xoonips_getutility('text');
     $item_type_handler =& xoonips_getormhandler('xoonips', 'item_type');
     $basic =& $item->getVar('basic');
     $item_id = $basic->get('item_id');
     $result = array('basic' => array('item_id' => $basic->getVar('item_id', 's'), 'description' => $basic->getVar('description', 's'), 'doi' => $basic->getVar('doi', 's'), 'creation_date' => $basic->getVar('creation_date', 's'), 'last_update_date' => $basic->getVar('last_update_date', 's'), 'publication_year' => $this->get_year_template_var($basic->get('publication_year'), $basic->get('publication_month'), $basic->get('publication_mday')), 'publication_month' => $this->get_month_template_var($basic->get('publication_year'), $basic->get('publication_month'), $basic->get('publication_mday')), 'publication_mday' => $this->get_mday_template_var($basic->get('publication_year'), $basic->get('publication_month'), $basic->get('publication_mday')), 'lang' => $this->get_lang_label($basic->get('lang'))), 'contributor' => array(), 'item_type' => array(), 'titles' => array(), 'keywords' => array(), 'changelogs' => array(), 'indexes' => array(), 'related_tos' => array());
     $user_handler =& xoonips_getormhandler('xoonips', 'xoops_users');
     $user =& $user_handler->get($basic->get('uid'));
     if (is_object($user)) {
         $result['contributor']['name'] = $user->getVar('name', 's');
         $result['contributor']['uname'] = $user->getVar('uname', 's');
     } else {
         $result['contributor']['name'] = 'unknown';
         $result['contributor']['uname'] = 'Zombie User';
     }
     $item_type =& $item_type_handler->get($basic->get('item_type_id'));
     $result['item_type']['display_name'] = $item_type->getVar('display_name', 's');
     foreach ($item->getVar('titles') as $title) {
         $result['titles'][] = array('title' => $title->getVar('title', 's'));
     }
     foreach ($item->getVar('keywords') as $keyword) {
         $result['keywords'][] = array('keyword' => $keyword->getVar('keyword', 's'));
     }
     $changelogs = $item->getVar('changelogs');
     usort($changelogs, array('XooNIpsItemInfoCompoHandler', 'usort_desc_by_log_date'));
     foreach ($changelogs as $changelog) {
         $result['changelogs'][] = array('log_date' => $changelog->getVar('log_date', 's'), 'log' => $changelog->getVar('log', 's'));
     }
     // get indexes only not item listing for loading performance improvement
     if ($type != XOONIPS_TEMPLATE_TYPE_ITEM_LIST && $type != XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_LIST) {
         $xoonips_user_handler =& xoonips_getormhandler('xoonips', 'users');
         $xoonips_user =& $xoonips_user_handler->get($basic->get('uid'));
         $private_index_id = $xoonips_user->get('private_index_id');
         foreach ($item->getVar('indexes') as $link) {
             $result['indexes'][] = array('path' => $this->get_index_path_by_index_id($link->get('index_id'), $private_index_id, 's'));
         }
     }
     // get related to part only not item listing for disable to recursive calling
     if ($type != XOONIPS_TEMPLATE_TYPE_ITEM_LIST && $type != XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_LIST) {
         $basic_handler =& xoonips_getormhandler('xoonips', 'item_basic');
         foreach ($item->getVar('related_tos') as $related_to) {
             $related_basic =& $basic_handler->get($related_to->get('item_id'));
             if (is_null($related_basic)) {
                 continue;
             }
             // ignore invalid item id
             $related_item_type =& $item_type_handler->get($related_basic->get('item_type_id'));
             $related_item_type_id = $related_item_type->get('item_type_id');
             if ($related_item_type_id == ITID_INDEX) {
                 continue;
             }
             // ignore index id
             $item_compo_handler =& xoonips_getormcompohandler($related_item_type->getVar('name', 's'), 'item');
             if ($item_compo_handler->getPerm($item_id, $uid, 'read')) {
                 $result['related_tos'][] = array('filename' => 'db:' . $item_compo_handler->getTemplateFileName(XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_LIST), 'var' => $item_compo_handler->getTemplateVar(XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_LIST, $related_basic->get('item_id'), $uid));
             }
         }
     }
     //additional type specific template vars
     switch ($type) {
         case XOONIPS_TEMPLATE_TYPE_TRANSFER_ITEM_LIST:
             $result['url'] = $textutil->html_special_chars(xoonips_get_transfer_request_item_detail_url($basic->get('item_id')));
         case XOONIPS_TEMPLATE_TYPE_ITEM_LIST:
             $result['pending'] = xnpIsPending($item_id);
     }
     return $result;
 }