Beispiel #1
0
 private function _getShareData($shareInfo)
 {
     $data = array('title' => '', 'source' => '', 'content' => array());
     $shareInfo = !empty($shareInfo['body']['shareInfo']) ? $shareInfo['body']['shareInfo'] : array();
     if (!empty($shareInfo)) {
         $sid = $shareInfo['shareId'];
         $type = $shareInfo['shareType'];
         switch ($type) {
             case 'topic':
                 $info = ForumUtils::getTopicInfo($sid);
                 $content = ForumUtils::getTopicContent($sid);
                 $data['title'] = !empty($info['subject']) ? $info['subject'] : '';
                 $data['source'] = !empty($info['dateline']) ? date('Y-m-d H:i:s', $info['dateline']) : '';
                 $data['content'] = $this->_getPostContent($content);
                 break;
             case 'news':
                 $info = PortalUtils::getNewsInfo($sid);
                 $content = PortalUtils::getNewsContent($info);
                 $data['title'] = !empty($info['title']) ? $info['title'] : '';
                 $data['source'] = !empty($info['dateline']) ? date('Y-m-d H:i:s', $info['dateline']) : '';
                 $data['content'] = $this->_filterContent($content);
                 break;
             default:
                 break;
         }
     }
     return $data;
 }
 private function _getImageInfoByTids($page, $pageSize)
 {
     $imageList = $this->_getImageTidsByFids($page, $pageSize);
     $list = array();
     global $_G;
     $forum = $_G['forum'];
     foreach ($imageList as $image) {
         $tmpImageInfo = ForumUtils::getTopicInfo($image);
         $imageSummary = ForumUtils::getTopicCover((int) $image);
         $imageInfo['board_id'] = (int) $tmpImageInfo['fid'];
         $imageInfo['board_name'] = $fid != 0 ? $forum['name'] : ForumUtils::getForumName($tmpImageInfo['fid']);
         $imageInfo['board_name'] = WebUtils::emptyHtml($imageInfo['board_name']);
         $imageInfo['topic_id'] = (int) $image;
         $imageInfo['title'] = WebUtils::emptyHtml($tmpImageInfo['subject']);
         $imageInfo['user_id'] = (int) $tmpImageInfo['authorid'];
         $imageInfo['last_reply_date'] = $tmpImageInfo['lastpost'] . "000";
         $imageInfo['user_nick_name'] = $tmpImageInfo['author'];
         $imageInfo['hits'] = (int) $tmpImageInfo['views'];
         $imageInfo['replies'] = (int) $tmpImageInfo['replies'];
         $imageInfo['top'] = (int) ForumUtils::isTopTopic($image) ? 1 : 0;
         $imageInfo['status'] = (int) $tmpImageInfo['status'];
         $imageInfo['essence'] = (int) $tmpImageInfo['digest'] ? 1 : 0;
         $imageInfo['hot'] = (int) $tmpImageInfo['highlight'] ? 1 : 0;
         $tempImageInfo = ImageUtils::getThumbImageEx($imageSummary, 15, true, false);
         $imageInfo['pic_path'] = $tempImageInfo['image'];
         $imageInfo['ratio'] = $tempImageInfo['ratio'];
         $imageInfo['userAvatar'] = UserUtils::getUserAvatar($tmpImageInfo['authorid']);
         $imageInfo['recommendAdd'] = (int) ForumUtils::getRecommendAdd($image);
         $imageInfo['isHasRecommendAdd'] = (int) ForumUtils::isHasRecommendAdd($image);
         $imageInfo['imageList'] = array();
         $imageInfo['sourceWebUrl'] = (string) ForumUtils::getSourceWebUrl($image, 'topic');
         $list[] = $imageInfo;
     }
     return $list;
 }
 private function _checkRate($res, $tid, $pid)
 {
     global $_G;
     // [add]通过fid获取版主的相关信息 Author:HanPengyu Data:04.09.26
     $topicInfo = ForumUtils::getTopicInfo($tid);
     ForumUtils::initForum($topicInfo['fid']);
     require_once libfile('function/misc');
     $_GET['tid'] = $_G['tid'] = $tid;
     $_GET['pid'] = $pid;
     //基于DISCUZ_ROOT/source/module/forum/forum_misc.php修改
     if (!$_G['group']['raterange']) {
         //抱歉,您所在的用户组({grouptitle})无法进行此操作
         return $this->makeErrorInfo($res, lang('message', 'group_nopermission', array('grouptitle' => $_G['group']['grouptitle'])));
     } elseif ($_G['setting']['modratelimit'] && $_G['adminid'] == 3 && !$_G['forum']['ismoderator']) {
         //抱歉,作为版主您只能在自己的管辖范围内评分
         return $this->makeErrorInfo($res, lang('message', 'thread_rate_moderator_invalid'));
     }
     if ($_G['group']['resasonpm'] == 2 || $_G['group']['reasonpm'] == 3 || !empty($_GET['sendreasonpm'])) {
         $forumname = strip_tags($_G['forum']['name']);
         $sendreasonpm = 1;
     } else {
         $sendreasonpm = 0;
     }
     $thread = C::t('forum_thread')->fetch($_G['tid']);
     $post = C::t('forum_post')->fetch('tid:' . $_G['tid'], $_GET['pid']);
     if ($post['invisible'] != 0 || $post['authorid'] == 0) {
         $post = array();
     }
     if (!$post || $post['tid'] != $thread['tid'] || !$post['authorid']) {
         //帖子不存在或不能被推送
         return $this->makeErrorInfo($res, lang('message', 'rate_post_error'));
     } elseif (!$_G['forum']['ismoderator'] && $_G['setting']['karmaratelimit'] && TIMESTAMP - $post['dateline'] > $_G['setting']['karmaratelimit'] * 3600) {
         //抱歉,您不能对发表于 {karmaratelimit} 小时前的帖子进行评分
         return $this->makeErrorInfo($res, lang('message', 'thread_rate_timelimit', array('karmaratelimit' => $_G['setting']['karmaratelimit'])));
     } elseif ($post['authorid'] == $_G['uid'] || $post['tid'] != $_G['tid']) {
         //抱歉,您不能给自己发表的帖子评分
         return $this->makeErrorInfo($res, lang('message', 'thread_rate_member_invalid'));
         //$errorMsg = lang('message', 'thread_rate_member_invalid');
     } elseif ($post['anonymous']) {
         //抱歉,您不能对匿名帖评分
         return $this->makeErrorInfo($res, lang('message', 'thread_rate_anonymous'));
     } elseif ($post['status'] & 1) {
         //抱歉,您不能对屏蔽帖评分
         return $this->makeErrorInfo($res, lang('message', 'thread_rate_banned'));
     }
     $allowrate = TRUE;
     if (!$_G['setting']['dupkarmarate']) {
         if (C::t('forum_ratelog')->count_by_uid_pid($_G['uid'], $_GET['pid'])) {
             //抱歉,您不能对同一个帖子重复评分
             return $this->makeErrorInfo($res, lang('message', 'thread_rate_duplicate'));
         }
     }
     return $res;
 }
 private function _transTopicList($topicList, $type)
 {
     $list = array();
     global $_G;
     $forum = $_G['forum'];
     foreach ($topicList as $topic) {
         $tmpTopicInfo = ForumUtils::getTopicInfo((int) $topic);
         $topicSummary = ForumUtils::getTopicSummary((int) $topic);
         $topicInfo['board_id'] = (int) $tmpTopicInfo['fid'];
         $topicInfo['board_name'] = $fid != 0 ? $forum['name'] : ForumUtils::getForumName($tmpTopicInfo['fid']);
         $topicInfo['board_name'] = WebUtils::emptyHtml($topicInfo['board_name']);
         $topicInfo['topic_id'] = (int) $topic;
         $topicInfo['type_id'] = (int) $tmpTopicInfo['typeid'];
         $topicInfo['sort_id'] = (int) $tmpTopicInfo['sortid'];
         $topicInfo['title'] = WebUtils::emptyHtml($tmpTopicInfo['subject']);
         $topicSummary['msg'] = WebUtils::emptyReturnLine($topicSummary['msg'], ' ');
         $topicInfo['subject'] = $topicSummary['msg'];
         $topicInfo['user_id'] = (int) $tmpTopicInfo['authorid'];
         if ($type = 'favorite' && empty($tmpTopicInfo['author'])) {
             $dateline = UserTopicInfo::getUserfavorite($_G['uid'], $topic);
             $topicInfo['last_reply_date'] = $dateline . '000';
             $topicInfo['user_nick_name'] = UserUtils::getUserName($dateline['uid']);
         } else {
             $topicInfo['last_reply_date'] = $tmpTopicInfo['dateline'] . '000';
             $topicInfo['user_nick_name'] = (string) $tmpTopicInfo['author'];
         }
         $topicInfo['hits'] = (int) $tmpTopicInfo['views'];
         $topicInfo['replies'] = (int) $tmpTopicInfo['replies'];
         $topicInfo['top'] = (int) ForumUtils::isTopTopic($topic) ? 1 : 0;
         $topicInfo['status'] = (int) $tmpTopicInfo['status'];
         $topicInfo['essence'] = (int) $tmpTopicInfo['digest'] ? 1 : 0;
         $topicInfo['hot'] = (int) $tmpTopicInfo['highlight'] ? 1 : 0;
         $topicInfo['pic_path'] = ImageUtils::getThumbImage($topicSummary['image']);
         $list[] = $topicInfo;
     }
     return $list;
 }
 private function _cancelActivityTopic($res, $tid, $uid, $data)
 {
     // from forum_misc.php
     DzForumActivityApply::deleteByTidUid($tid, $uid);
     DzForumActivity::updateApplyNumberByTid($tid);
     $thread = ForumUtils::getTopicInfo($tid);
     $message = cutstr(dhtmlspecialchars($data['message']), 200);
     if ($thread['authorid'] != $uid) {
         notification_add($thread['authorid'], 'activity', 'activity_cancel', array('tid' => $tid, 'subject' => $thread['subject'], 'reason' => $message));
     }
     $res = $this->_makeErrorInfo($res, 'activity_cancel_success');
     $res['rs'] = 1;
     return $res;
 }
Beispiel #6
0
 public function actionTopicInfo($tid)
 {
     $topic = ForumUtils::getTopicInfo($tid);
     echo WebUtils::jsonEncode($topic);
 }
 protected function getResult($params = array())
 {
     extract($params);
     $res = WebUtils::initWebApiArray();
     $res = array_merge(array('rs' => 1, 'errcode' => ''), $res);
     $topic = ForumUtils::getTopicInfo($tid);
     if (empty($topic)) {
         return $this->_makeErrorInfo($res, 'thread_nonexistence');
     }
     // 该主题是由别的版块移动过来的
     if ($topic['closed'] > 1) {
         $tid = $topic['closed'];
         $topic['tid'] = $tid;
     }
     $app = Yii::app()->getController()->mobcentDiscuzApp;
     $app->loadForum($topic['fid'], $topic['tid']);
     // 检查权限
     global $_G;
     if (empty($_G['forum']['allowview'])) {
         if (!$_G['forum']['viewperm'] && !$_G['group']['readaccess']) {
             return $this->_makeErrorInfo($res, 'group_nopermission', array('{grouptitle}' => $_G['group']['grouptitle']));
         } elseif ($_G['forum']['viewperm'] && !forumperm($_G['forum']['viewperm'])) {
             $msg = mobcent_showmessagenoperm('viewperm', $_G['fid']);
             return $this->_makeErrorInfo($res, $msg['message'], $msg['params']);
         }
     } elseif ($_G['forum']['allowview'] == -1) {
         return $this->_makeErrorInfo($res, 'forum_access_view_disallow');
     }
     if ($_G['forum']['formulaperm']) {
         $msg = mobcent_formulaperm($_G['forum']['formulaperm']);
         if ($msg['message'] != '') {
             return $this->_makeErrorInfo($res, $msg['message'], $msg['params']);
         }
     }
     // if($_G['forum']['password'] && $_G['forum']['password'] != $_G['cookie']['fidpw'.$_G['fid']]) {
     // dheader("Location: $_G[siteurl]forum.php?mod=forumdisplay&fid=$_G[fid]");
     // }
     if ($_G['forum']['password']) {
         return $this->_makeErrorInfo($res, 'mobcent_forum_passwd');
     }
     if ($_G['forum']['price'] && !$_G['forum']['ismoderator']) {
         $membercredits = C::t('common_member_forum_buylog')->get_credits($_G['uid'], $_G['fid']);
         $paycredits = $_G['forum']['price'] - $membercredits;
         if ($paycredits > 0) {
             // dheader("Location: $_G[siteurl]forum.php?mod=forumdisplay&fid=$_G[fid]");
         }
     }
     if ($_G['forum_thread']['readperm'] && $_G['forum_thread']['readperm'] > $_G['group']['readaccess'] && !$_G['forum']['ismoderator'] && $_G['forum_thread']['authorid'] != $_G['uid']) {
         return $this->_makeErrorInfo($res, 'thread_nopermission', array('{readperm}' => $_G['forum_thread']['readperm']));
     }
     // 编辑权限相关 start
     if ($_G['forum']['alloweditpost'] && $_G['uid']) {
         $alloweditpost_status = getstatus($_G['setting']['alloweditpost'], $_G['forum_thread']['special'] + 1);
         if (!$alloweditpost_status) {
             $edittimelimit = $_G['group']['edittimelimit'] * 60;
         }
     }
     $editPerm = array();
     $editPerm['alloweditpost_status'] = $alloweditpost_status;
     $editPerm['edittimelimit'] = $edittimelimit;
     // edit end
     $params = array('editPerm' => $editPerm);
     if ($page <= 1 && ($authorId == 0 || $authorId == $topic['authorid'])) {
         $res['topic'] = $this->_getTopicInfo($topic, $params);
         if (empty($res['topic'])) {
             return $this->_makeErrorInfo($res, 'post_not_found');
         }
     }
     $res = $this->_getPostInfos($res, $topic, $page, $pageSize, $order, $authorId, $params);
     $res['forumName'] = WebUtils::emptyHtml($_G['forum']['name']);
     $res['forumTopicUrl'] = Yii::app()->getController()->dzRootUrl . "/forum.php?mod=viewthread&tid=" . $tid;
     $res['img_url'] = '';
     $res['icon_url'] = '';
     Mobcent::import(sprintf('%s/forum_viewthread_%s.php', MOBCENT_APP_ROOT . '/components/discuz/forum', MobcentDiscuz::getMobcentDiscuzVersion()));
     viewthread_updateviews($_G['forum_thread']['threadtableid']);
     // print_r($res);die;
     return $res;
 }
Beispiel #8
0
 private function _getPicList($mid)
 {
     $portals = AppbymePortalModuleSource::getPortalByMid($mid, 2);
     $piclist = array();
     foreach ($portals as $portal) {
         $pic_path = ImageUtils::getThumbImage(WebUtils::getHttpFileName($portal['imgurl']));
         if ($portal['idtype'] == 'tid') {
             $topicinfo = ForumUtils::getTopicInfo($portal['id']);
             $piclist[] = $this->_fieldPicList($topicinfo['fid'], 'topic', $portal['id'], $portal['title'], $pic_path);
         } elseif ($portal['idtype'] == 'aid') {
             $piclist[] = $this->_fieldPicList(0, 'news', $portal['id'], $portal['title'], $pic_path);
         } elseif ($portal['idtype'] == 'url') {
             $piclist[] = $this->_fieldPicList(0, 'weblink', $portal['id'], $portal['title'], $pic_path, $portal['url']);
         } elseif ($portal['idtype'] == 'bid') {
             $piclist = array_merge($piclist, $this->_getPicByBid($portal['id']));
         }
     }
     return $piclist;
 }
 private function _zhSearchData($kw, $page, $pagesize, $res, $searchparams)
 {
     $keyword = dhtmlspecialchars(trim($kw));
     $keyword = WebUtils::t($keyword);
     require_once libfile('function/search');
     require_once libfile('function/misc');
     require_once libfile('function/post');
     // $searchHelper = Cloud::loadClass('Service_SearchHelper');
     // $searchparams = $searchHelper->makeSearchSignUrl();
     $appService = Cloud::loadClass('Service_App');
     if ($appService->getCloudAppStatus('search') && $searchparams) {
         $source = 'discuz';
         $params = array();
         $params['source'] = $source;
         $params['q'] = $keyword;
         $params['module'] = 'forum';
         $searchparams['params'] = array_merge($searchparams['params'], $params);
         $utilService = Cloud::loadClass('Service_Util');
         $url = $searchparams['url'] . '?' . $utilService->httpBuildQuery($searchparams['params'], '', '&');
     }
     $url = $url . '&page=' . $page;
     // $pageInfo = WebUtils::emptyReturnLine(file_get_contents($url));
     $pageInfo = WebUtils::emptyReturnLine(WebUtils::httpRequest($url));
     $pregIds = '/&tid=(\\d*)"/';
     $pregCount = '/<div class="allnum">(.*?)<\\/div>/';
     //取出搜索结果总数
     preg_match_all($pregIds, $pageInfo, $id);
     $ids = $id[1];
     if (empty($ids)) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'search_no_results');
     }
     preg_match_all($pregCount, $pageInfo, $count);
     $countStr = trim($count[1][0]);
     preg_match_all('/\\d/', $countStr, $total);
     $total_num = (int) str_replace(',', '', implode(',', $total[0]));
     $ids = $id[1];
     $data = $topicInfo = $topicSummary = array();
     foreach ($ids as $v) {
         $topicInfo = ForumUtils::getTopicInfo($v);
         // $topicInfo['lastpost'] = dgmdate($topicInfo['lastpost'], 'u');
         $topicInfos[] = $topicInfo;
     }
     unset($ids);
     $rows = $this->_fieldInfo($topicInfos);
     $pageInfo = WebUtils::getWebApiArrayWithPage_oldVersion($page, 10, $total_num);
     $res['searchid'] = 0;
     $res = array_merge($res, $pageInfo);
     $res['list'] = $rows;
     return $res;
 }