/**
  * executeViewIndex
  * 
  * @param	XCube_RenderTarget	&$render
  * 
  * @return	void
  **/
 public function executeViewIndex(&$render)
 {
     // permissions
     $params = array();
     $params['uid'] = $this->mRoot->mContext->mUser->isInRole('Site.RegisteredUser') ? $this->mRoot->mContext->mXoopsUser->get('uid') : 0;
     $params['can_read'] = true;
     $params['can_post'] = in_array($this->forum_id, $this->mForumAcc['post']);
     $params['can_edit'] = in_array($this->forum_id, $this->mForumAcc['edit']);
     $params['can_delete'] = in_array($this->forum_id, $this->mForumAcc['delete']);
     $params['can_reply'] = in_array($this->forum_id, $this->mForumAcc['post']);
     $params['isadminormod'] = $this->mod_isadmin ? true : in_array($this->forum_id, $this->mForumAcc['moderate']);
     $params['mod_config'] =& $this->mod_config;
     //adump($mObj);
     if (isset($this->forum_id) && $this->forum_id > 0) {
         if (isset($this->mForumAcc) && count($this->mForumAcc) > 0) {
             if (in_array($this->forum_id, $this->mForumAcc['can_read'])) {
                 $this->mForumObj->initVar('can_post', XOBJ_DTYPE_INT, $params['can_post'], false);
                 $isadminormod = $this->mod_isadmin || $params['isadminormod'];
                 $this->mForumObj->initVar('isadminormod', XOBJ_DTYPE_INT, $isadminormod, false);
             }
         }
     }
     foreach ($this->mObjects as &$mObj) {
         $mObj->initVar('topic_votes_avg', XOBJ_DTYPE_INT, (int) $mObj->get('topic_votes_sum') / ((int) $mObj->get('topic_votes_count') - 0.01), false);
         $bit_new = (int) $mObj->get('topic_last_post_time') > @$mObj->get('u2t_time') ? 1 : 0;
         $bit_hot = (int) $mObj->get('topic_votes_count') > $this->mod_config['hot_threshold'] ? 1 : 0;
         $mObj->initVar('bit_new', XOBJ_DTYPE_INT, $bit_new, false);
         $mObj->initVar('bit_hot', XOBJ_DTYPE_INT, $bit_hot, false);
         $mObj->initVar('topic_votes_src', XOBJ_DTYPE_STRING, "", false);
         $mObj->initVar('topic_page_jump', XOBJ_DTYPE_STRING, "", false);
         $params['guest_name'] = $mObj->get('fp_guest_name');
         $rtn = Xcforum_Utils::getPosterData($mObj->get('topic_first_uid'), $params);
         $poster_dispname = isset($rtn['poster_dispname']) ? $rtn['poster_dispname'] : "";
         $poster_uname = isset($rtn['poster_uname']) ? $rtn['poster_uname'] : "";
         $poster_name = isset($rtn['poster_name']) ? $rtn['poster_name'] : "";
         $poster_gname = isset($rtn['poster_gname']) ? $rtn['poster_gname'] : "";
         $mObj->initVar('first_post_dispname', XOBJ_DTYPE_STRING, $poster_dispname, false);
         $mObj->initVar('first_post_uname', XOBJ_DTYPE_STRING, $poster_uname, false);
         $mObj->initVar('first_post_name', XOBJ_DTYPE_STRING, $poster_name, false);
         $mObj->initVar('first_post_gname', XOBJ_DTYPE_STRING, $poster_gname, false);
         $params['guest_name'] = $mObj->get('lp_guest_name');
         $rtn = Xcforum_Utils::getPosterData($mObj->get('topic_last_uid'), $params);
         $poster_dispname = isset($rtn['poster_dispname']) ? $rtn['poster_dispname'] : "";
         $poster_uname = isset($rtn['poster_uname']) ? $rtn['poster_uname'] : "";
         $poster_name = isset($rtn['poster_name']) ? $rtn['poster_name'] : "";
         $poster_gname = isset($rtn['poster_gname']) ? $rtn['poster_gname'] : "";
         $mObj->initVar('last_post_dispname', XOBJ_DTYPE_STRING, $poster_dispname, false);
         $mObj->initVar('last_post_uname', XOBJ_DTYPE_STRING, $poster_uname, false);
         $mObj->initVar('last_post_name', XOBJ_DTYPE_STRING, $poster_name, false);
         $mObj->initVar('last_post_gname', XOBJ_DTYPE_STRING, $poster_gname, false);
     }
     //$render->setTemplateName($this->mAsset->mDirname . '_topics_list.html');
     $render->setTemplateName($this->mAsset->mDirname . '_topic_list.html');
     $render->setAttribute('forumObj', $this->mForumObj);
     //$render->setAttribute('objects', $this->mObjects);
     //$render->setAttribute('dirname', $this->mAsset->mDirname);
     $render->setAttribute('dataname', self::DATANAME);
     $render->setAttribute('pageNavi', $this->mFilter->mNavi);
     //adump($this->mFilter->mNavi);
     $render->setAttribute('solved_options', $this->solved_options);
     $render->setAttribute('query', $this->query4assign);
     $q_solved = (int) $this->mRoot->mContext->mRequest->getRequest('solved');
     if ($q_solved > 0) {
         $qstr_solved = "&solved=" . $q_solved;
     }
     $q_txt = $this->mRoot->mContext->mRequest->getRequest('txt');
     if ($q_txt) {
         $qstr_txt = "&txt=" . htmlspecialchars($q_txt, ENT_QUOTES, _CHARSET);
     }
     $qstr = $qstr_solved || $qstr_txt ? $qstr_solved . $qstr_txt : "";
     $render->setAttribute('qstr', $qstr);
     $render->setAttribute('topic_hits', $this->topic_hits);
     // pagenav
     $pagenav = '';
     //$query4nav = 'topic_id=' . $topic_id ;
     $query4nav = 'action=TopicsList';
     $query4nav .= $this->forum_id > 0 ? '&forum_id=' . $this->forum_id : '';
     // LIMIT
     $num = $this->mod_config['topics_per_page'] < 5 ? 5 : (int) $this->mod_config['topics_per_page'];
     $pos = 0;
     if ($this->topic_hits > $num) {
         // POS
         $pos = $this->mRoot->mContext->mRequest->getRequest('start');
         //$pos = isset( $pos ) ? (int)$pos : (($postorder == 0) || ($postorder == 2) ? (int)(($this->topic_hits-1) / $num) * $num : 0) ;
         $pos = isset($pos) ? (int) $pos : 0;
         require_once XCFORUM_TRUST_PATH . '/class/Pagenav.class.php';
         $pagenav_obj = new XcforumPagenav($this->topic_hits, $num, $pos, 'start', $query4nav);
         $pagenav = $pagenav_obj->getNav();
         $render->setAttribute('pagenav', $pagenav);
     }
     parent::executeViewIndex($render);
 }