public function deleteAction() { $aid = $this->getInput('aid', 'post'); if (!$aid) { $this->showError('operate.fail'); } if (!($attach = Wekit::load('attach.PwThreadAttach')->getAttach($aid))) { $this->showError('data.error'); } Wind::import('SRV:forum.bo.PwForumBo'); $forum = new PwForumBo($attach['fid']); if (!$forum->isForum()) { $this->showError('data.error'); } if ($this->loginUser->uid != $attach['created_userid']) { if (!$this->loginUser->getPermission('operate_thread.deleteatt', $forum->isBM($this->loginUser->username))) { $this->showError('permission.attach.delete.deny'); } if (!$this->loginUser->comparePermission($attach['created_userid'])) { $this->showError(array('permission.level.deleteatt', array('{grouptitle}' => $this->loginUser->getGroupInfo('name')))); } } Wekit::load('attach.PwThreadAttach')->deleteAttach($aid); Pw::deleteAttach($attach['path'], $attach['ifthumb']); if ($this->loginUser->uid != $attach['created_userid']) { Wekit::load('log.srv.PwLogService')->addDeleteAtachLog($this->loginUser, $attach); } if ($attach['tid']) { if (!$attach['pid']) { $thread = Wekit::load('forum.PwThread')->getThread($attach['tid'], PwThread::FETCH_ALL); Wind::import('SRV:forum.dm.PwTopicDm'); $dm = new PwTopicDm($attach['tid']); if (!Wekit::load('attach.PwThreadAttach')->countType($attach['tid'], 0, $attach['type'])) { $dm->setHasAttach($attach['type'], false); } if (!Pw::getstatus($thread['tpcstatus'], PwThread::STATUS_OPERATORLOG) && $this->loginUser->uid != $attach['created_userid']) { $dm->setOperatorLog(true); } } else { $thread = Wekit::load('forum.PwThread')->getPost($attach['pid']); Wind::import('SRV:forum.dm.PwReplyDm'); $dm = new PwReplyDm($attach['pid']); } if ($thread['aids'] > 0) { $thread['aids']--; } $dm->setAids($thread['aids']); if (($content = str_replace('[attachment=' . $aid . ']', '', $thread['content'])) != $thread['content']) { $dm->setContent($content); } if (!$attach['pid']) { Wekit::load('forum.PwThread')->updateThread($dm); } else { Wekit::load('forum.PwThread')->updatePost($dm); } } $this->showMessage('success'); }
/** * 帖子列表页 */ public function run() { $tab = $this->getInput('tab'); $fid = intval($this->getInput('fid')); $type = intval($this->getInput('type', 'get')); //主题分类ID $page = $this->getInput('page', 'get'); $orderby = $this->getInput('orderby', 'get'); $pwforum = new PwForumBo($fid, true); if (!$pwforum->isForum()) { $this->showError('BBS:forum.exists.not'); } if ($pwforum->allowVisit($this->loginUser) !== true) { $this->showError(array('BBS:forum.permissions.visit.allow', array('{grouptitle}' => $this->loginUser->getGroupInfo('name')))); } if ($pwforum->forumset['jumpurl']) { $this->forwardRedirect($pwforum->forumset['jumpurl']); } if ($pwforum->foruminfo['password']) { if (!$this->loginUser->isExists()) { $this->forwardAction('u/login/run', array('backurl' => WindUrlHelper::createUrl('bbs/cate/run', array('fid' => $fid)))); } elseif (Pw::getPwdCode($pwforum->foruminfo['password']) != Pw::getCookie('fp_' . $fid)) { $this->forwardAction('bbs/forum/password', array('fid' => $fid)); } } $isBM = $pwforum->isBM($this->loginUser->username); if ($operateThread = $this->loginUser->getPermission('operate_thread', $isBM, array())) { $operateThread = Pw::subArray($operateThread, array('topped', 'digest', 'highlight', 'up', 'copy', 'type', 'move', 'lock', 'down', 'delete', 'ban')); } $this->_initTopictypes($fid, $type); $threadList = new PwThreadList(); $this->runHook('c_thread_run', $threadList); $threadList->setPage($page)->setPerpage($pwforum->forumset['threadperpage'] ? $pwforum->forumset['threadperpage'] : Wekit::C('bbs', 'thread.perpage'))->setIconNew($pwforum->foruminfo['newtime']); $defaultOrderby = $pwforum->forumset['threadorderby'] ? 'postdate' : 'lastpost'; !$orderby && ($orderby = $defaultOrderby); if ($tab == 'digest') { Wind::import('SRV:forum.srv.threadList.PwDigestThread'); $dataSource = new PwDigestThread($pwforum->fid, $type, $orderby); } elseif ($type) { Wind::import('SRV:forum.srv.threadList.PwSearchThread'); $dataSource = new PwSearchThread($pwforum); $dataSource->setOrderby($orderby); $dataSource->setType($type, $this->_getSubTopictype($type)); } elseif ($orderby == 'postdate') { Wind::import('SRV:forum.srv.threadList.PwNewForumThread'); $dataSource = new PwNewForumThread($pwforum); } else { Wind::import('SRV:forum.srv.threadList.PwCommonThread'); $dataSource = new PwCommonThread($pwforum); } $orderby != $defaultOrderby && $dataSource->setUrlArg('orderby', $orderby); $threadList->execute($dataSource); $this->setOutput($threadList, 'threadList'); $this->setOutput($threadList->getList(), 'threaddb'); $this->setOutput($fid, 'fid'); $this->setOutput($type ? $type : null, 'type'); $this->setOutput($tab, 'tab'); $this->setOutput($pwforum, 'pwforum'); $this->setOutput($pwforum->headguide(), 'headguide'); $this->setOutput($threadList->icon, 'icon'); $this->setOutput($threadList->uploadIcon, 'uploadIcon'); $this->setOutput($operateThread, 'operateThread'); $this->setOutput($pwforum->forumset['numofthreadtitle'] ? $pwforum->forumset['numofthreadtitle'] : 26, 'numofthreadtitle'); $this->setOutput(!$this->loginUser->uid && !$this->allowPost($pwforum) ? ' J_qlogin_trigger' : '', 'postNeedLogin'); $this->setOutput($threadList->page, 'page'); $this->setOutput($threadList->perpage, 'perpage'); $this->setOutput($threadList->total, 'count'); $this->setOutput($threadList->maxPage, 'totalpage'); $this->setOutput($defaultOrderby, 'defaultOrderby'); $this->setOutput($orderby, 'orderby'); $this->setOutput($threadList->getUrlArgs(), 'urlargs'); $this->setOutput($this->_formatTopictype($type), 'topictypes'); //版块风格 if ($pwforum->foruminfo['style']) { $this->setTheme('forum', $pwforum->foruminfo['style']); //$this->addCompileDir($pwforum->foruminfo['style']); } //seo设置 Wind::import('SRV:seo.bo.PwSeoBo'); $lang = Wind::getComponent('i18n'); if ($threadList->page <= 1) { if ($type) { PwSeoBo::setDefaultSeo($lang->getMessage('SEO:bbs.thread.run.type.title'), '', $lang->getMessage('SEO:bbs.thread.run.type.description')); } else { PwSeoBo::setDefaultSeo($lang->getMessage('SEO:bbs.thread.run.title'), '', $lang->getMessage('SEO:bbs.thread.run.description')); } } PwSeoBo::init('bbs', 'thread', $fid); PwSeoBo::set(array('{forumname}' => $pwforum->foruminfo['name'], '{forumdescription}' => Pw::substrs($pwforum->foruminfo['descrip'], 100, 0, false), '{classification}' => $this->_getSubTopictypeName($type), '{page}' => $threadList->page)); Pw::setCookie('visit_referer', 'fid_' . $fid . '_page_' . $threadList->page, 300); }
public function run() { $fid = intval($this->getInput('fid')); $pwforum = new PwForumBo($fid, true); if (!$pwforum->isForum(true)) { $this->showError('BBS:forum.exists.not'); } if ($pwforum->allowVisit($this->loginUser) !== true) { $this->showError(array('BBS:forum.permissions.visit.allow', array('{grouptitle}' => $this->loginUser->getGroupInfo('name')))); } if ($pwforum->forumset['jumpurl']) { $this->forwardRedirect($pwforum->forumset['jumpurl']); } if ($pwforum->foruminfo['password']) { if (!$this->loginUser->isExists()) { $this->forwardAction('u/login/run', array('backurl' => WindUrlHelper::createUrl('bbs/cate/run', array('fid' => $fid)))); } elseif (Pw::getPwdCode($pwforum->foruminfo['password']) != Pw::getCookie('fp_' . $fid)) { $this->forwardAction('bbs/forum/password', array('fid' => $fid)); } } $isBM = $pwforum->isBM($this->loginUser->username); if ($operateThread = $this->loginUser->getPermission('operate_thread', $isBM, array())) { $operateThread = Pw::subArray($operateThread, array('delete')); } $pwforum->foruminfo['threads'] = $pwforum->foruminfo['subthreads']; $this->setOutput($operateThread, 'operateThread'); $tab = $this->getInput('tab'); //tab标签 $page = intval($this->getInput('page', 'get')); $orderby = $this->getInput('orderby', 'get'); $threadList = new PwThreadList(); $this->runHook('c_cate_run', $threadList); $threadList->setPage($page)->setPerpage($pwforum->forumset['threadperpage'] ? $pwforum->forumset['threadperpage'] : Wekit::C('bbs', 'thread.perpage'))->setIconNew($pwforum->foruminfo['newtime']); $defaultOrderby = $pwforum->forumset['threadorderby'] ? 'postdate' : 'lastpost'; !$orderby && ($orderby = $defaultOrderby); $isCommon = 0; if ($tab == 'digest') { Wind::import('SRV:forum.srv.threadList.PwCateDigestThread'); $dataSource = new PwCateDigestThread($pwforum->fid, $orderby); } else { Wind::import('SRV:forum.srv.threadList.PwCateThread'); $srv = Wekit::load('forum.srv.PwForumService'); $forbidFids = $srv->getForbidVisitForum($this->loginUser, $srv->getForumsByLevel($fid, $srv->getForumMap()), true); $dataSource = new PwCateThread($pwforum, $forbidFids); $dataSource->setOrderby($orderby); $isCommon = 1; } $orderby != $defaultOrderby && $dataSource->setUrlArg('orderby', $orderby); $threadList->execute($dataSource); if ($isCommon && $threadList->total > 12000) { Wekit::load('forum.PwThreadCateIndex')->deleteOver($fid, $threadList->total - 10000); } $this->setOutput($threadList, 'threadList'); $this->setOutput($threadList->getList(), 'threaddb'); $this->setOutput($tab, 'tab'); $this->setOutput($defaultOrderby, 'defaultOrderby'); $this->setOutput($orderby, 'orderby'); $this->setOutput($pwforum->fid, 'fid'); $this->setOutput($pwforum, 'pwforum'); $this->setOutput($pwforum->headguide(), 'headguide'); $this->setOutput($threadList->icon, 'icon'); $this->setOutput($threadList->uploadIcon, 'uploadIcon'); $this->setOutput($pwforum->forumset['numofthreadtitle'] ? $pwforum->forumset['numofthreadtitle'] : 26, 'numofthreadtitle'); $this->setOutput($threadList->page, 'page'); $this->setOutput($threadList->perpage, 'perpage'); $this->setOutput($threadList->total, 'count'); $this->setOutput($threadList->maxPage, 'totalpage'); $this->setOutput($threadList->getUrlArgs(), 'urlargs'); //版块风格 if ($pwforum->foruminfo['style']) { $this->setTheme('forum', $pwforum->foruminfo['style']); //$this->addCompileDir($pwforum->foruminfo['style']); } //seo设置 Wind::import('SRV:seo.bo.PwSeoBo'); $seoBo = PwSeoBo::getInstance(); $lang = Wind::getComponent('i18n'); if ($threadList->page <= 1) { $seoBo->setDefaultSeo($lang->getMessage('SEO:bbs.thread.run.title'), '', $lang->getMessage('SEO:bbs.thread.run.description')); } $seoBo->init('bbs', 'thread', $fid); $seoBo->set(array('{forumname}' => $pwforum->foruminfo['name'], '{forumdescription}' => Pw::substrs($pwforum->foruminfo['descrip'], 100, 0, false), '{classification}' => '', '{page}' => $threadList->page)); Wekit::setV('seo', $seoBo); }
/** * 查看帖子操作日志 */ public function logAction() { list($tid, $fid) = $this->getInput(array('tid', 'fid')); Wind::import('SRV:forum.bo.PwForumBo'); $forum = new PwForumBo($fid); $permission = $this->loginUser->getPermission('look_thread_log', $forum->isBM($this->loginUser->username), array()); if ($permission) { $list = Wekit::load('log.srv.PwLogService')->getThreadLog($tid, 25, 0); $this->setOutput($list, 'list'); $this->setTemplate('read_log'); } }