コード例 #1
0
ファイル: DelLayout.class.php プロジェクト: hylinux/ltebbs
 /**
  *  run this action
  *  @param:  NULL
  *  @return: NULL
  *  @access: public
  */
 public function run()
 {
     //取得参数
     $id = $this->getParameterFromGET('id');
     if (!$id) {
         return;
     }
     //取得所有的子版块
     $sql = 'select parent_id from bbs_layout where id=?';
     $sth = $this->db->Prepare($sql);
     $res = $this->db->Execute($sth, array($id));
     $rows = $res->FetchRow();
     $parent_id = $rows['parent_id'];
     $all_id = array();
     LayoutUtil::getChildId($this->db, $id, $all_id);
     array_push($all_id, $id);
     $sql = 'delete from bbs_layout where id in (' . implode(',', $all_id) . ')';
     $this->db->Execute($sql);
     //删除所有的帖子
     $sql = 'delete from bbs_subject where layout_id in (' . implode(',', $all_id) . ')';
     $this->db->Execute($sql);
     //删除所有的回复
     $sql = 'delete from bbs_reply where layout_id in (' . implode(',', $all_id) . ')';
     $this->db->Execute($sql);
     //求父版块
     $this->forward('index.php?action=layout&parent=' . $parent_id);
     return;
 }
コード例 #2
0
ファイル: LayoutUtil.class.php プロジェクト: hylinux/ltebbs
 /**
  * 返回子论坛的信息
  * @param:  $id, 论坛ID
  * @param:  $db, 数据库的连接
  * @reurn:  Array
  * @access; public
  */
 public static function &getSubBBS(&$db, $id)
 {
     /*{{{*/
     //查询所有下级子论坛
     $sub_bbs_layout_id = LayoutUtil::getLayoutInfoByParentId($db, $id);
     $sub_array = array();
     foreach ($sub_bbs_layout_id as $sub_rows) {
         $sub_id = $sub_rows['id'];
         //注意:$sub_bbs_id是一个数组
         $sub_bbs_id = array();
         LayoutUtil::getChildId($db, $sub_id, $sub_bbs_id);
         array_push($sub_bbs_id, $sub_id);
         /**
          * 如果已经将论坛锁住,则不判断是否有新帖
          */
         /**
          *  $layout_status == 0 || $layout_status is null 则为开放
          *  $layout_status == 1 则需要验证
          *  $layout_status == 2 则为关闭
          */
         $layout_status = LayoutUtil::getLayoutStatus($db, $sub_id);
         /**
          * 判断是否有新帖子
          * 判断有新帖子的流程是:
          * 如果用户已经登录,则找出用户的作后动作的时间
          * 如果用户没有登录,则显示没有新帖子
          */
         $image = 'nonewtopic.gif';
         if ($layout_status == 2) {
             $image = 'lock.gif';
         } else {
             if (isset($_SESSION['user'])) {
                 if (LayoutUtil::haveNewTopic($db, $_SESSION['user']['name'], $sub_bbs_id)) {
                     /**
                      * 求出最后时间后,需要我们找出当前子论坛下各个子论坛的id
                      */
                     $image = 'havenewtopic.gif';
                 }
             }
         }
         //求出论坛及子论坛下面的查看的人数
         $view_number = LayoutUtil::getViewNumber($db, $sub_bbs_id);
         //求出论坛和子论坛下的所有的主题
         $topic_number = LayoutUtil::getTopicNumber($db, $sub_bbs_id);
         //求出论坛下所有的回复数
         $reply_number = LayoutUtil::getReplyNumber($db, $sub_bbs_id);
         //求论坛里最后发表的帖子
         $temp_rows = LayoutUtil::getLastPostTopic($db, $sub_id);
         $last_id = $temp_rows['id'];
         $last_title = $temp_rows['title'];
         $last_time = $temp_rows['last_access_date'];
         $last_time = set_locale_time($last_time);
         $short_title = utf8_substr($last_title, 0, 10);
         //求版主列表的字符串
         $manager_list_array = LayoutUtil::getManagerList($db, $sub_id);
         $manager_str = "";
         foreach ($manager_list_array as $temp_rows) {
             $manager_str .= "<option value=" . $temp_rows['user_id'] . ">";
             $manager_str .= $temp_rows['user_name'] . "</option>\n";
         }
         $sub_array[] = array('id' => $sub_rows['id'], 'title' => $sub_rows['title'], 'content' => ConvertString(stripslashes($sub_rows['description']), ROOT_URL, IMAGE_URL . 'express/'), 'image' => $image, 'viewnumber' => $view_number, 'topic_number' => $topic_number, 'reply_number' => $reply_number, 'topicid' => $last_id, 'topic_title' => $last_title, 'short_title' => $short_title, 'last_time' => $last_time, 'managerlist' => $manager_str);
     }
     return $sub_array;
 }
コード例 #3
0
ファイル: ViewLayout.class.php プロジェクト: hylinux/ltebbs
 /**
  * 显示版面的情况
  * @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');
 }