示例#1
0
 /**
  * 显示版面的情况
  * @param:  NULL
  * @return: NULL
  * @access: public
  */
 public function run()
 {
     //取得用户的id
     $user_id = UserUtil::getUserId($this->db, $_SESSION['user']['name']);
     $smarty = $this->getSmarty();
     //取得站点的公告,并显示在页面上
     $is_have_post = false;
     $post_str = '';
     if (PostUtil::haveNotExpirePost($this->getDB())) {
         $is_have_post = true;
         $post_array = PostUtil::getPost($this->getDB(), 3);
         foreach ($post_array as $post_rows) {
             $post_str .= '<a href=\'index.php?module=post&action=view&id=' . $post_rows['id'] . '\' title=\'' . $post_rows['title'] . '\'>' . utf8_substr($post_rows['title'], 0, 35) . '</a>' . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
         }
     }
     $smarty->assign('have_system_post', $is_have_post);
     $smarty->assign('post_str', $post_str);
     //公告显示结束
     $q = $this->getParameterFromGET('q');
     $encode_q = $q;
     //取得查询字符串
     if (!$q) {
         //取得用户最后一次的动作时间
         $last_time = UserUtil::getUserLastLogoutTime($this->db, $user_id);
         //生成一个where语句
         $q = " where last_access_date >='" . $last_time . "'";
         $encode_q = base64_encode($q);
     } else {
         $q = base64_decode($q);
     }
     $smarty->assign('encode_q', $encode_q);
     //生成所有的记录数
     $sql = 'select count(*) as num from bbs_subject ' . $q;
     $res = $this->db->Execute($sql);
     $rows = $res->FetchRow();
     $total_number = $rows['num'];
     //求总公的页面
     $total_page = ceil($total_number / $this->page_number);
     //取得当前的页面
     $page = $this->getParameter('page');
     if (!$page || $page < 0) {
         $page = 1;
     }
     if ($page > $total_page && $total_page > 0) {
         $page = $total_page;
     }
     $begin_page = 1;
     $end_page = $total_page;
     if ($page <= 10 && $total_page >= 10) {
         $end_page = 10;
     } else {
         if ($page > 10) {
             if ($page % 10 == 0) {
                 //向前翻
                 $end_page = $page;
                 $begin_page = $end_page - 9;
             } else {
                 if ($page % 10 == 1) {
                     //向后翻
                     //确定开始的页数
                     $begin_page = $page;
                     if ($begin_page > $total_page) {
                         $begin_page = $page - 9;
                     }
                     if ($begin_page + 9 > $total_page) {
                         $end_page = $total_page;
                     } else {
                         $end_page = $begin_page + 9;
                     }
                 } else {
                     $num = $page % 10;
                     $pre_num = floor($page / 10);
                     $begin_page = $pre_num * 10 + 1;
                     $end_page = $begin_page + 9;
                 }
             }
         }
     }
     if ($end_page > $total_page) {
         $end_page = $total_page;
     }
     $nav_page_array = array();
     for ($i = $begin_page; $i <= $end_page; $i++) {
         array_push($nav_page_array, $i);
     }
     //帖子导航栏
     $smarty->assign('nav_page', $nav_page_array);
     //当前的页面
     $smarty->assign('now_page', $page);
     //共有的页面
     $smarty->assign('total_page', $total_page);
     //显示搜索结果
     //求出偏移
     $offset_number = ($page - 1) * $this->page_number;
     $subject_array = LayoutUtil::getCacheSubjectInfo($this->db, $this->page_number, $offset_number, $q);
     if ($total_page > 0) {
         $smarty->assign('subject', $subject_array);
         $smarty->assign('have_subject', 1);
     }
     $smarty->display('viewnew.tmpl');
 }
示例#2
0
 /**
  * 显示BBS的首页
  * @param:  NULL
  * @return: NULL
  * @access: public
  */
 public function run()
 {
     //先删除已经不存在的用户
     LayoutUtil::delNotExistsUser($this->db);
     //取得站点的公告,并显示在页面上
     $is_have_post = false;
     $post_str = '';
     if (PostUtil::haveNotExpirePost($this->getDB())) {
         $is_have_post = true;
         $post_array = PostUtil::getPost($this->getDB(), 3);
         foreach ($post_array as $post_rows) {
             $post_str .= '<a href=\'index.php?module=post&action=view&id=' . $post_rows['id'] . '\' title=\'' . $post_rows['title'] . '\'>' . utf8_substr($post_rows['title'], 0, 35) . '</a>' . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
         }
     }
     //取得论坛的统计信息
     $online_user_number = UserUtil::getOnlineUserNumber($this->db);
     $online_vistor_number = UserUtil::getVistorNumber($this->db);
     //在线的最高时间
     $high_access = UserUtil::getTheHighAccess($this->db);
     $high_number = $high_access['num'];
     $high_time = $high_access['time'];
     //在线用户列表
     $online_user_array = UserUtil::getOnLineUser($this->db);
     //取得站点的版面信息
     $bbs_layout = $this->getBBSLayout();
     $smarty = $this->getSmarty();
     //统计当前在线人数和发表的主题数,帖子数。
     //总共有的会员数
     $dbh = $this->getDB();
     $sql = "select count(*) as num from online_user";
     $stmt = $dbh->prepare($sql);
     $res = $dbh->Execute($stmt);
     $rows = $res->FetchRow();
     $smarty->assign('all_page_online_user', $rows['num']);
     $sql = "select count(*) as num from bbs_subject ";
     $stmt = $dbh->prepare($sql);
     $res = $dbh->CacheExecute(40, $stmt);
     $rows = $res->FetchRow();
     $smarty->assign('all_page_topic_number', $rows['num']);
     $sql = "select count(*) as num from bbs_reply ";
     $stmt = $dbh->prepare($sql);
     $res = $dbh->CacheExecute(60, $stmt);
     $rows = $res->FetchRow();
     $smarty->assign('all_page_reply_number', $rows['num']);
     $sql = "select count(*) as num from base_user_info ";
     $stmt = $dbh->prepare($sql);
     $res = $dbh->Execute($stmt);
     $rows = $res->FetchRow();
     $smarty->assign('all_page_user_number', $rows['num']);
     //查找最近新登录的三位新会员
     $sql = "select id, user_name from base_user_info order by id desc limit 3";
     $stmt = $dbh->prepare($sql);
     $res = $dbh->CacheExecute(100, $stmt);
     $rows = $res->GetArray();
     $smarty->assign('newuser', $rows);
     $smarty->assign('have_system_post', $is_have_post);
     $smarty->assign('post_str', $post_str);
     $smarty->assign('online_user_number', $online_user_number);
     $smarty->assign('online_vistor_number', $online_vistor_number);
     $smarty->assign('high_number', $high_number);
     $smarty->assign('high_time', $high_time);
     $smarty->assign('user_info', $online_user_array);
     $smarty->assign('info', $bbs_layout);
     $smarty->display('showbbsindex.tmpl');
 }
示例#3
0
 /**
  * 显示版面的情况
  * @param:  NULL
  * @return: NULL
  * @access: public
  */
 public function run()
 {
     //收集论坛的ID
     $bbs_id = $this->getParameter("id");
     if (!$bbs_id) {
         $this->forward('index.php');
     }
     //验证论坛是否存在
     if (!LayoutUtil::isExists($this->db, $bbs_id)) {
         //论坛不存在,则转向首页
         $this->forward('index.php');
     }
     //更新用户在本版的信息
     LayoutUtil::updateOnlineUser($this->db, $bbs_id);
     //如果论坛存在,则返回论坛的状态
     $bbs_status = LayoutUtil::getLayoutStatus($this->db, $bbs_id);
     if ($bbs_status == 1 && !isset($_SESSION['user'])) {
         $this->AlertAndForward(VL_NEED_LOGIN, 'index.php?module=user&action=showlogin');
         return;
     } else {
         if ($bbs_status == 2) {
             $this->AlertAndForward(VL_LAYOUT_WAS_CLOSED, 'index.php');
             return;
         } else {
             if (LayoutUtil::isClosedByParent($this->db, $bbs_id)) {
                 $this->AlertAndForward(VL_LAYOUT_WAS_CLOSED, 'index.php');
                 return;
             }
         }
     }
     //取回smarty的实例
     $smarty = $this->getSmarty();
     //返回论坛上面的导行栏。
     $nav_array = LayoutUtil::getParentLayoutInfo($this->db, $bbs_id);
     //导航栏
     $smarty->assign('nav_array', $nav_array);
     //先删除已经不存在的用户
     LayoutUtil::delNotExistsUser($this->db);
     //取得站点的公告,并显示在页面上
     $is_have_post = false;
     $post_str = '';
     if (PostUtil::haveNotExpirePost($this->getDB())) {
         $is_have_post = true;
         $post_array = PostUtil::getPost($this->getDB(), 3);
         foreach ($post_array as $post_rows) {
             $post_str .= '<a href=\'index.php?module=post&action=view&id=' . $post_rows['id'] . '\' title=\'' . $post_rows['title'] . '\'>' . utf8_substr($post_rows['title'], 0, 35) . '</a>' . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
         }
     }
     $smarty->assign('have_system_post', $is_have_post);
     $smarty->assign('post_str', $post_str);
     //状态确认了。开始检查论坛是否有子论坛
     $bbs_title = LayoutUtil::getTitle($this->db, $bbs_id);
     $bbs_sub_info = LayoutUtil::getSubBBS($this->db, $bbs_id);
     //论坛的ID
     $smarty->assign('bbs_id', $bbs_id);
     //子论坛的信息
     $smarty->assign('bbs_title', $bbs_title);
     $smarty->assign('have_sub_bbs', isset($bbs_sub_info[0]) ? 1 : 0);
     $smarty->assign('info', $bbs_sub_info);
     //如果状态为3,则不允许发帖,就不显示帖子
     $smarty->assign('not_allow_new_topic', $bbs_status == 3 ? 1 : 0);
     //如果状态为3,则不允许发帖,
     //如果不为3,则表示可以发帖子,
     //就应该显示帖子的数据
     if ($bbs_status != 3) {
         //开始检查帖子。
         $total_number = LayoutUtil::getTotalNumberTopicByParentId($this->db, $bbs_id);
         //求总公的页面
         $total_page = ceil($total_number / $this->page_number);
         //取得当前的页面
         $page = $this->getParameter('page');
         if (!$page || $page < 0) {
             $page = 1;
         }
         if ($page > $total_page && $total_page > 0) {
             $page = $total_page;
         }
         $begin_page = 1;
         $end_page = $total_page;
         if ($page <= 10 && $total_page >= 10) {
             $end_page = 10;
         } else {
             if ($page > 10) {
                 if ($page % 10 == 0) {
                     //向前翻
                     $end_page = $page;
                     $begin_page = $end_page - 9;
                 } else {
                     if ($page % 10 == 1) {
                         //向后翻
                         //确定开始的页数
                         $begin_page = $page;
                         if ($begin_page > $total_page) {
                             $begin_page = $page - 9;
                         }
                         if ($begin_page + 9 > $total_page) {
                             $end_page = $total_page;
                         } else {
                             $end_page = $begin_page + 9;
                         }
                     } else {
                         $num = $page % 10;
                         $pre_num = floor($page / 10);
                         $begin_page = $pre_num * 10 + 1;
                         $end_page = $begin_page + 9;
                     }
                 }
             }
         }
         if ($end_page > $total_page) {
             $end_page = $total_page;
         }
         $nav_page_array = array();
         for ($i = $begin_page; $i <= $end_page; $i++) {
             array_push($nav_page_array, $i);
         }
         //帖子导航栏
         $smarty->assign('nav_page', $nav_page_array);
         //当前的页面
         $smarty->assign('now_page', $page);
         //共有的页面
         $smarty->assign('total_page', $total_page);
         //如果是$page =1 就显示置顶贴,要不然不显示。
         //呵呵。
         //先看看是否要显示精华
         $show_best = $this->getParameterFromGET('showbest');
         $top_number = $this->page_number;
         if ($page == 1) {
             $top_subject_array = LayoutUtil::getTopicSubjectInfo($this->db, $bbs_id, $this->page_number, $show_best);
             $temp_number = count($top_subject_array);
             $top_number = $this->page_number - $temp_number;
             if ($temp_number >= 1) {
                 $smarty->assign('have_top_subject', 1);
                 $smarty->assign('top_subject', $top_subject_array);
             }
         }
         //求出偏移
         $offset_number = ($page - 1) * $top_number;
         $subject_array = LayoutUtil::getSubjectInfo($this->db, $bbs_id, $this->page_number, $top_number, $offset_number, $show_best);
         if (count($subject_array) >= 1) {
             $smarty->assign('subject', $subject_array);
             $smarty->assign('have_subject', 1);
         }
         $smarty->assign('show_best', $show_best);
     }
     //记录用户到本版中
     //还是应该记录一下用户在本版待的时间
     //然后需要计算一下在本版,和本版的子版中正在浏览的人数
     //删除超时用户
     //取回本版和子版的ID的数组
     $sub_id_array = array();
     LayoutUtil::getChildId($this->db, $bbs_id, $sub_id_array);
     array_push($sub_id_array, $bbs_id);
     LayoutUtil::delExpiresUser($this->db, $sub_id_array);
     //统计在本版浏览的用户数
     $online_user = LayoutUtil::getViewNumber($this->db, $sub_id_array);
     //返回本版浏览的用户的信息
     $user_info = UserUtil::getUserInfoArray($this->db, $sub_id_array);
     $online_user_number = count($user_info);
     $vistor_number = $online_user - $online_user_number;
     $smarty->assign('online_user_number', $online_user_number);
     $smarty->assign('online_vistor_number', $vistor_number);
     $smarty->assign('user_info', $user_info);
     $smarty->display('viewlayout.tmpl');
 }
示例#4
0
 /**
  * 查看帖子
  * @param:  NULL
  * @return: NULL
  * @access: public
  */
 public function run()
 {
     //取得帖子的id
     $topic_id = $this->getParameterFromGET('id');
     $topic_id = (int) $topic_id;
     if (!$topic_id || $topic_id < 1) {
         $this->AlertAndBack(VT_TOPIC_ID_IS_NOT_VALID);
         return;
     }
     //验证帖子的id是否存在
     if (!TopicUtil::isExists($this->db, $topic_id)) {
         $this->AlertAndBack(VT_TOPIC_ID_IS_NOT_EXISTS);
         return;
     }
     //查询帖子的版块id
     $layout_id = TopicUtil::getLayoutId($this->db, $topic_id);
     //验证论坛的版块
     if (!LayoutUtil::isExists($this->db, $layout_id)) {
         $this->AlertAndBack(VT_LAYOUT_IS_NOT_EXISTS);
         return;
     }
     //得出论坛版块的状态
     $layout_status = LayoutUtil::getLayoutStatus($this->db, $layout_id);
     //状态为0则为全部开放
     //状态为1则为需要验证
     //状态为2则为关闭
     //如果为2
     if ($layout_status == 2) {
         $this->AlertAndBack(VT_LAYOUT_IS_CLOSED);
         return;
     } else {
         if ($layout_status == 1) {
             if (!$_SESSION['user']['name']) {
                 $this->AlertAndBack(VT_LAYOUT_NEED_AUTHOR);
                 return;
             }
         }
     }
     //取得帖子的状态
     $topic_status = TopicUtil::getTopicStatus($this->db, $topic_id);
     /**
      * 为0, 则开放
      * 为1, 则需要认证
      * 为2,则关闭
      */
     if ($topic_status == 1) {
         if (!$_SESSION['user']['name']) {
             $this->AlertAndBack(VT_TOPIC_NEED_AUTHOR);
             return;
         }
     }
     //增加帖子的浏览次数
     TopicUtil::updateViewNumber($this->db, $topic_id);
     //取得Smarty的对象
     $smarty = $this->getSmarty();
     //先删除已经不存在的用户
     LayoutUtil::delNotExistsUser($this->db);
     //取得站点的公告,并显示在页面上
     $is_have_post = false;
     $post_str = '';
     if (PostUtil::haveNotExpirePost($this->getDB())) {
         $is_have_post = true;
         $post_array = PostUtil::getPost($this->getDB(), 3);
         foreach ($post_array as $post_rows) {
             $post_str .= '<a href=\'index.php?module=post&action=view&id=' . $post_rows['id'] . '\' title=\'' . $post_rows['title'] . '\'>' . utf8_substr($post_rows['title'], 0, 35) . '</a>' . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
         }
     }
     $smarty->assign('have_system_post', $is_have_post);
     $smarty->assign('post_str', $post_str);
     //求帖子的访问的导航菜单
     $nav_array = LayoutUtil::getParentLayoutInfo($this->db, $layout_id);
     //导航栏
     $smarty->assign('nav_array', $nav_array);
     //求帖子的标题
     $title = TopicUtil::getTitle($this->db, $topic_id);
     $smarty->assign('topic_title', $title);
     $smarty->assign('clone_title', ' -> ' . $title);
     //取得页面
     $page = $this->getParameterFromGET('page');
     if (!$page || $page <= 0) {
         $page = 1;
     }
     //求总的页面
     $total_page = TopicUtil::getTotalPage($this->db, $topic_id, $this->pre_page);
     if ($page > $total_page && $total_page > 0) {
         $page = $total_page;
     }
     //帖子的id和版块的id
     $smarty->assign('topic_id', $topic_id);
     $smarty->assign('bbs_id', $layout_id);
     //页面
     $smarty->assign('now_page', $page);
     $smarty->assign('total_page', $total_page);
     $begin_page = 1;
     $end_page = $total_page;
     if ($page <= 10 && $total_page >= 10) {
         $end_page = 10;
     } else {
         if ($page > 10) {
             if ($page % 10 == 0) {
                 //向前翻
                 $end_page = $page;
                 $begin_page = $end_page - 9;
             } else {
                 if ($page % 10 == 1) {
                     //向后翻
                     //确定开始的页数
                     $begin_page = $page;
                     if ($begin_page > $total_page) {
                         $begin_page = $page - 9;
                     }
                     if ($begin_page + 9 > $total_page) {
                         $end_page = $total_page;
                     } else {
                         $end_page = $begin_page + 9;
                     }
                 } else {
                     $num = $page % 10;
                     $pre_num = floor($page / 10);
                     $begin_page = $pre_num * 10 + 1;
                     $end_page = $begin_page + 9;
                 }
             }
         }
     }
     if ($end_page > $total_page) {
         $end_page = $total_page;
     }
     $nav_page_array = array();
     for ($i = $begin_page; $i <= $end_page; $i++) {
         array_push($nav_page_array, $i);
     }
     //帖子导航栏
     $smarty->assign('nav_page', $nav_page_array);
     $offset_page = ($page - 1) * $this->pre_page;
     $topic_array = TopicUtil::getTopicInfo($this->db, $topic_id, $this->pre_page, $offset_page);
     $smarty->assign('topic', $topic_array);
     //取得当前用户的身份
     $user_name = $_SESSION['user']['name'];
     $user_id = UserUtil::getUserId($this->db, $user_name);
     if (strlen($user_name)) {
         //验证用户的身份
         $sql = 'select group_dep from base_user_info where lower(user_name) =?';
         $sth = $this->db->prepare($sql);
         $res = $this->db->Execute($sth, array(strtolower($user_name)));
         $rows = $res->FetchRow();
         $user_group = $rows['group_dep'];
         if ($user_group == 1 || $user_group == 2) {
             $smarty->assign('can_be_close', 1);
         } else {
             if ($user_group == 3) {
                 $layout_id = TopicUtil::getLayoutId($this->db, $topic_id);
                 $sql = 'select count(*) as num from bbs_layout_manager where user_id=? and ' . ' layout_id=?';
                 $sth = $this->db->prepare($sql);
                 $res = $this->db->Execute($sth, array($user_id, $layout_id));
                 $rows = $res->FetchRow();
                 if (!$rows['num']) {
                     $smarty->assign('can_be_close', 0);
                 } else {
                     $smarty->assign('can_be_close', 1);
                 }
             }
         }
     } else {
         $smarty->assign('can_be_close', 0);
     }
     //加密一个返回的url
     $backurl = 'index.php?module=bbs&action=viewtopic&id=' . $topic_id . '&page=' . $page;
     $backurl = base64_encode($backurl);
     $smarty->assign('backurl', $backurl);
     $smarty->display('viewtopic.tmpl');
 }
示例#5
0
 /**
  * 显示版面的情况
  * @param:  NULL
  * @return: NULL
  * @access: public
  */
 public function run()
 {
     //取得用户的id
     $user_id = UserUtil::getUserId($this->db, $_SESSION['user']['name']);
     $smarty = $this->getSmarty();
     //取得站点的公告,并显示在页面上
     $is_have_post = false;
     $post_str = '';
     if (PostUtil::haveNotExpirePost($this->getDB())) {
         $is_have_post = true;
         $post_array = PostUtil::getPost($this->getDB(), 3);
         foreach ($post_array as $post_rows) {
             $post_str .= '<a href=\'index.php?module=post&action=view&id=' . $post_rows['id'] . '\' title=\'' . $post_rows['title'] . '\'>' . utf8_substr($post_rows['title'], 0, 35) . '</a>' . '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
         }
     }
     $smarty->assign('have_system_post', $is_have_post);
     $smarty->assign('post_str', $post_str);
     //公告显示结束
     $q = $this->getParameterFromGET('q');
     $encode_q = urlencode($q);
     //取得查询字符串
     if (!$q) {
         $where_sql = '';
         //收集查询的变量
         //按关键字查询
         $word = $this->getParameter('word');
         //按用户名来查询
         $find_user = $this->getParameter('user');
         if (!$find_user && !$word) {
             $this->AlertAndBack(SR_NO_FIND_KEYWORD);
             return;
         }
         $word = ltrim($word);
         $word = rtrim($word);
         //按空格拆分关键字
         $word_array = preg_split("/[\\s,]+/", $word);
         //看用户的搜索是按关键字,还是按帖子的内容
         $is_topic = $this->getParameter('wordtarget');
         if ($is_topic != 1 && $is_topic != 2) {
             $is_topic = 1;
         }
         $i = 0;
         if (count($word_array) > 1) {
             $where_sql .= " and ( ";
             foreach ($word_array as $value) {
                 if ($is_topic == 1) {
                     $where_sql .= " title like '%" . $value . "%' ";
                     if ($i < count($word_array) - 1) {
                         $where_sql .= " or ";
                     }
                 } else {
                     if ($is_topic == 2) {
                         $where_sql .= " MATCH(content) AGAINST('" . $value . "') ";
                         if ($i < count($word_array) - 1) {
                             $where_sql .= " or ";
                         }
                     }
                 }
                 $i = $i + 1;
             }
             $where_sql .= " )  ";
         } else {
             if (count($word_array) == 1 && $word) {
                 if ($is_topic == 1) {
                     $where_sql .= " and title like '%" . $word . "%' ";
                 } else {
                     if ($is_topic == 2) {
                         $where_sql .= " and match(content) against('" . $word . "')";
                     }
                 }
             }
         }
         //是按用户名来搜索的
         //收集用户名
         $find_user = ltrim($find_user);
         $find_user = rtrim($find_user);
         $find_user_array = preg_split("/[\\s,]+/", $find_user);
         $is_match = $this->getParameter('usermatch');
         $i = 0;
         if (count($find_user_array) > 1) {
             $where_sql .= " and ( ";
             foreach ($find_user_array as $value) {
                 if ($is_match) {
                     $where_sql .= " author='" . $value . "' ";
                     if ($i < count($find_user_array) - 1) {
                         $where_sql .= " or ";
                     }
                 } else {
                     $where_sql .= " author like '%" . $value . "%' ";
                     if ($i < count($find_user_array) - 1) {
                         $where_sql .= " or ";
                     }
                 }
                 $i = $i + 1;
             }
             $where_sql .= " )  ";
         } else {
             if (count($find_user_array) == 1 && $find_user) {
                 if ($is_match) {
                     $where_sql .= " and author ='" . $find_user . "' ";
                 } else {
                     $where_sql .= " and author like '%" . $find_user . "%' ";
                 }
             }
         }
         //再收集用户是否选择了论坛进行搜索。
         $layout = $this->getParameterFromPOST('layout');
         if ($layout && !is_array($layout)) {
             $this->AlertAndBack(SR_SYSTEM_REQUEST_ERROR);
             return;
         }
         $i = 0;
         if (count($layout) > 1) {
             $where_sql .= " and ( ";
             foreach ($layout as $value) {
                 $where_sql .= " layout_id='" . $value . "' ";
                 if ($i < count($layout) - 1) {
                     $where_sql .= " or ";
                 }
                 $i = $i + 1;
             }
             $where_sql .= " ) ";
         } else {
             if (count($layout) == 1) {
                 $where_sql .= " and layout_id='" . $layout . "' ";
             }
         }
         $q = ' where 1 ' . $where_sql;
         $encode_q = base64_encode($q);
         $encode_q = urlencode($encode_q);
     } else {
         //         $q = urldecode($q);
         $q = base64_decode($q);
     }
     //求总的total number
     $smarty->assign('encode_q', $encode_q);
     //生成所有的记录数
     $sql = 'select count(*) as num from bbs_subject ' . $q;
     $res = $this->db->Execute($sql);
     $rows = $res->FetchRow();
     $total_number = $rows['num'];
     //求总公的页面
     $total_page = ceil($total_number / $this->page_number);
     //取得当前的页面
     $page = $this->getParameter('page');
     if (!$page || $page < 0) {
         $page = 1;
     }
     if ($page > $total_page && $total_page > 0) {
         $page = $total_page;
     }
     $begin_page = 1;
     $end_page = $total_page;
     if ($page <= 10 && $total_page >= 10) {
         $end_page = 10;
     } else {
         if ($page > 10) {
             if ($page % 10 == 0) {
                 //向前翻
                 $end_page = $page;
                 $begin_page = $end_page - 9;
             } else {
                 if ($page % 10 == 1) {
                     //向后翻
                     //确定开始的页数
                     $begin_page = $page;
                     if ($begin_page > $total_page) {
                         $begin_page = $page - 9;
                     }
                     if ($begin_page + 9 > $total_page) {
                         $end_page = $total_page;
                     } else {
                         $end_page = $begin_page + 9;
                     }
                 } else {
                     $num = $page % 10;
                     $pre_num = floor($page / 10);
                     $begin_page = $pre_num * 10 + 1;
                     $end_page = $begin_page + 9;
                 }
             }
         }
     }
     if ($end_page > $total_page) {
         $end_page = $total_page;
     }
     $nav_page_array = array();
     for ($i = $begin_page; $i <= $end_page; $i++) {
         array_push($nav_page_array, $i);
     }
     //帖子导航栏
     $smarty->assign('nav_page', $nav_page_array);
     //当前的页面
     $smarty->assign('now_page', $page);
     //共有的页面
     $smarty->assign('total_page', $total_page);
     //显示搜索结果
     //求出偏移
     $offset_number = ($page - 1) * $this->page_number;
     $subject_array = LayoutUtil::getCacheSubjectInfo($this->db, $this->page_number, $offset_number, $q);
     if ($total_page > 0) {
         $smarty->assign('subject', $subject_array);
         $smarty->assign('have_subject', 1);
     }
     $smarty->display('bbssearchresult.tmpl');
 }