Ejemplo n.º 1
0
 public function threads()
 {
     App::import('vendor', array('model/board', 'model/threads', 'inc/pagination'));
     $day = 7;
     $title1 = $title2 = $title3 = $author = '';
     if (isset($this->params['url']['title1'])) {
         $title1 = trim($this->params['url']['title1']);
     }
     if (isset($this->params['url']['title2'])) {
         $title2 = trim($this->params['url']['title2']);
     }
     if (isset($this->params['url']['titlen'])) {
         $title3 = trim($this->params['url']['titlen']);
     }
     if (isset($this->params['url']['author'])) {
         $author = trim($this->params['url']['author']);
     }
     if (isset($this->params['url']['day'])) {
         $day = intval($this->params['url']['day']);
     }
     $m = isset($this->params['url']['m']) && $this->params['url']['m'] == '1';
     $a = isset($this->params['url']['a']) && $this->params['url']['a'] == '1';
     $return = Configure::read('search.max');
     $res = array();
     if (!isset($this->params['url']['boards'])) {
         $this->error(ECode::$BOARD_UNKNOW);
     }
     $boards = $this->params['url']['boards'];
     foreach (explode('|', $boards) as $b) {
         try {
             $brd = Board::getInstance($b);
             $res = array_merge($res, Threads::search($brd, $title1, $title2, $title3, $author, $day, $m, $a, $return));
         } catch (BoardNullException $e) {
         }
     }
     $count = isset($this->params['url']['count']) ? $this->params['url']['count'] : Configure::read("pagination.threads");
     if (($count = intval($count)) <= 0) {
         $count = Configure::read("pagination.threads");
     }
     if ($count > Configure::read('plugins.api.page_item_limit')) {
         $count = Configure::read("pagination.threads");
     }
     $page = isset($this->params['url']['page']) ? $this->params['url']['page'] : 1;
     $page = intval($page);
     $pagination = new Pagination(new ArrayPageableAdapter($res), $count);
     $articles = $pagination->getPage($page);
     $wrapper = Wrapper::getInstance();
     $data = array();
     $data['pagination'] = $wrapper->page($pagination);
     foreach ($articles as $v) {
         $data['threads'][] = $wrapper->article($v, array('threads' => true));
     }
     $this->set('data', $data);
 }
Ejemplo n.º 2
0
 public function article()
 {
     $this->js[] = "forum.board.js";
     $this->css[] = "board.css";
     $this->notice[] = array("url" => "", "text" => "ËÑË÷½á¹û");
     App::import('Sanitize');
     $day = $title1 = $title2 = $title3 = $author = $t = "";
     if (isset($this->params['url']['t1'])) {
         $title1 = trim(rawurldecode($this->params['url']['t1']));
     }
     if (isset($this->params['url']['t2'])) {
         $title2 = trim(rawurldecode($this->params['url']['t2']));
     }
     if (isset($this->params['url']['tn'])) {
         $title3 = trim(rawurldecode($this->params['url']['tn']));
     }
     if (isset($this->params['url']['au'])) {
         $author = trim($this->params['url']['au']);
     }
     if (isset($this->params['url']['d'])) {
         $day = intval($this->params['url']['d']);
     }
     $title1 = nforum_iconv('utf-8', $this->encoding, $title1);
     $title2 = nforum_iconv('utf-8', $this->encoding, $title2);
     $title3 = nforum_iconv('utf-8', $this->encoding, $title3);
     $m = isset($this->params['url']['m']);
     $a = isset($this->params['url']['a']);
     $full = isset($this->params['url']['f']);
     $site = Configure::read('search.site');
     $return = Configure::read("search.max");
     $res = array();
     $u = User::getInstance();
     if ($title1 == '' && $title3 == '' && $author == '' && !$m && !$a) {
         $res = array();
     } else {
         if ($full && $site && $u->isAdmin()) {
             App::import('vendor', 'model/section');
             $secs = array_keys(Configure::read("section"));
             foreach ($secs as $v) {
                 $sec = Section::getInstance($v, Section::$ALL);
                 foreach ($sec->getList() as $brd) {
                     if (!$brd->isNormal()) {
                         continue;
                     }
                     $res = array_merge($res, Threads::search($brd, $title1, $title2, $title3, $author, $day, $m, $a, $return));
                 }
             }
         } else {
             $b = @$this->params['url']['b'];
             try {
                 $brd = Board::getInstance($b);
             } catch (BoardNullException $e) {
                 $this->error(ECode::$BOARD_NONE);
             }
             $res = Threads::search($brd, $title1, $title2, $title3, $author, $day, $m, $a, $return);
         }
     }
     $p = 1;
     if (isset($this->params['url']['p'])) {
         $p = $this->params['url']['p'];
     }
     App::import("vendor", "inc/pagination");
     $page = new Pagination(new ArrayPageableAdapter($res), Configure::read("pagination.search"));
     $threads = $page->getPage($p);
     $info = false;
     $curTime = strtotime(date("Y-m-d", time()));
     $pageArticle = Configure::read("pagination.article");
     foreach ($threads as $v) {
         $tabs = ceil($v->articleNum / $pageArticle);
         $last = $v->LAST;
         $postTime = $curTime > $v->POSTTIME ? date("Y-m-d", $v->POSTTIME) : date("H:i:s", $v->POSTTIME) . "&emsp;";
         $replyTime = $curTime > $last->POSTTIME ? date("Y-m-d", $last->POSTTIME) : date("H:i:s", $last->POSTTIME) . "&emsp;";
         $info[] = array("title" => Sanitize::html($v->TITLE), "poster" => $v->isSubject() ? $v->OWNER : "Ô­ÌûÒÑɾ³ý", "postTime" => $postTime, "gid" => $v->ID, "last" => $last->OWNER, "replyTime" => $replyTime, "page" => $tabs, "bName" => $v->getBoard()->NAME, "num" => $v->articleNum - 1);
     }
     $this->set("info", $info);
     $query = $this->params['url'];
     unset($query['url']);
     unset($query['p']);
     unset($query['ext']);
     foreach ($query as $k => &$v) {
         $v = $k . '=' . rawurlencode($v);
     }
     $query[] = "p=%page%";
     $link = "{$this->base}/s/article?" . join("&", $query);
     $this->set("pageBar", $page->getPageBar($p, $link));
     $this->set("pagination", $page);
 }