Ejemplo n.º 1
0
if (!empty($_GET['action']) && $_GET['action'] == 'printable' && $_G['tid']) {
    require_once libfile('thread/printable', 'include');
    dexit();
}
if ($_G['forum_thread']['stamp'] >= 0) {
    $_G['forum_threadstamp'] = $_G['cache']['stamps'][$_G['forum_thread']['stamp']];
}
$lastmod = viewthread_lastmod($_G['forum_thread']);
$showsettings = str_pad(decbin($_G['setting']['showsettings']), 3, '0', STR_PAD_LEFT);
$showsignatures = $showsettings[0];
$showavatars = $showsettings[1];
$_G['setting']['showimages'] = $showsettings[2];
$highlightstatus = isset($_GET['highlight']) && str_replace('+', '', $_GET['highlight']) ? 1 : 0;
$_G['forum']['allowreply'] = isset($_G['forum']['allowreply']) ? $_G['forum']['allowreply'] : '';
$_G['forum']['allowpost'] = isset($_G['forum']['allowpost']) ? $_G['forum']['allowpost'] : '';
$allowpostreply = $_G['forum']['allowreply'] != -1 && ($_G['forum_thread']['isgroup'] || !$_G['forum_thread']['closed'] && !checkautoclose($_G['forum_thread']) || $_G['forum']['ismoderator']) && (!$_G['forum']['replyperm'] && $_G['group']['allowreply'] || $_G['forum']['replyperm'] && forumperm($_G['forum']['replyperm']) || $_G['forum']['allowreply']);
$fastpost = $_G['setting']['fastpost'] && !$_G['forum_thread']['archiveid'] && ($_G['forum']['status'] != 3 || $_G['isgroupuser']);
$allowfastpost = $_G['setting']['fastpost'] && $allowpostreply;
if (!$_G['uid'] && ($_G['setting']['need_avatar'] || $_G['setting']['need_email'] || $_G['setting']['need_friendnum']) || !$_G['adminid'] && (!cknewuser(1) || $_G['setting']['newbiespan'] && (!getuserprofile('lastpost') || TIMESTAMP - getuserprofile('lastpost') < $_G['setting']['newbiespan'] * 60) && TIMESTAMP - $_G['member']['regdate'] < $_G['setting']['newbiespan'] * 60)) {
    $allowfastpost = false;
}
$_G['group']['allowpost'] = $_G['forum']['allowpost'] != -1 && (!$_G['forum']['postperm'] && $_G['group']['allowpost'] || $_G['forum']['postperm'] && forumperm($_G['forum']['postperm']) || $_G['forum']['allowpost']);
$_G['forum']['allowpostattach'] = isset($_G['forum']['allowpostattach']) ? $_G['forum']['allowpostattach'] : '';
$allowpostattach = $allowpostreply && ($_G['forum']['allowpostattach'] != -1 && ($_G['forum']['allowpostattach'] == 1 || !$_G['forum']['postattachperm'] && $_G['group']['allowpostattach'] || $_G['forum']['postattachperm'] && forumperm($_G['forum']['postattachperm'])));
if ($_G['group']['allowpost']) {
    $_G['group']['allowpostpoll'] = $_G['group']['allowpostpoll'] && $_G['forum']['allowpostspecial'] & 1;
    $_G['group']['allowposttrade'] = $_G['group']['allowposttrade'] && $_G['forum']['allowpostspecial'] & 2;
    $_G['group']['allowpostreward'] = $_G['group']['allowpostreward'] && $_G['forum']['allowpostspecial'] & 4 && isset($_G['setting']['extcredits'][$_G['setting']['creditstrans']]);
    $_G['group']['allowpostactivity'] = $_G['group']['allowpostactivity'] && $_G['forum']['allowpostspecial'] & 8;
    $_G['group']['allowpostdebate'] = $_G['group']['allowpostdebate'] && $_G['forum']['allowpostspecial'] & 16;
} else {
Ejemplo n.º 2
0
            wapmsg('post_newthread_succeed', array('title' => 'post_newthread_forward', 'link' => "index.php?action=thread&amp;tid={$tid}"));
        }
    }
} elseif ($do == 'reply') {
    $discuz_action = 196;
    $thread = $db->fetch_first("SELECT * FROM {$tablepre}threads WHERE tid='{$tid}'");
    if (!$thread) {
        wapmsg('thread_nonexistence');
    }
    if (empty($forum['allowreply']) && (!$forum['replyperm'] && !$allowreply || $forum['replyperm'] && !forumperm($forum['replyperm']))) {
        wapmsg('post_newreply_nopermission');
    }
    if ($thread['closed'] && !$forum['ismoderator']) {
        wapmsg('post_thread_closed');
    }
    if ($post_autoclose = checkautoclose()) {
        wapmsg($post_autoclose);
    }
    if (empty($message)) {
        echo "<p>{$lang['message']}<input type=\"text\" name=\"message\" value=\"\" format=\"M*m\" /><br />\n" . "<anchor title=\"{$lang['submit']}\">{$lang['submit']}" . "<go method=\"post\" href=\"index.php?action=post&amp;do=reply&amp;fid={$fid}&amp;tid={$tid}&amp;sid={$sid}\">\n" . "<postfield name=\"subject\" value=\"\$(subject)\" />\n" . "<postfield name=\"message\" value=\"\$(message)\" />\n" . "<postfield name=\"formhash\" value=\"" . formhash() . "\" />\n" . "</go></anchor><br /><br />\n" . "<a href=\"index.php?action=thread&amp;tid={$tid}\">{$lang['return_thread']}</a><br />\n" . "<a href=\"index.php?action=forum&amp;fid={$fid}\">{$lang['return_forum']}</a></p>\n";
    } else {
        if ($message == '') {
            wapmsg('post_sm_isnull');
        }
        if ($post_invalid = checkpost()) {
            wapmsg($post_invalid);
        }
        if ($formhash != formhash()) {
            wapmsg('wap_submit_invalid');
        }
        if (checkflood()) {
Ejemplo n.º 3
0
    foreach ($query as $options) {
        $viewvoteruid[] = $options['voterids'];
        $voterids .= "\t" . $options['voterids'];
        $option = preg_replace("/\\[url=(https?){1}:\\/\\/([^\\[\"']+?)\\](.+?)\\[\\/url\\]/i", "<a href=\"\\1://\\2\" target=\"_blank\">\\3</a>", $options['polloption']);
        $polloptions[$opts++] = array('polloptionid' => $options['polloptionid'], 'polloption' => $option, 'votes' => $options['votes'], 'width' => $options['votes'] > 0 ? @round($options['votes'] * 100 / $count['total']) . '%' : '8px', 'percent' => @sprintf("%01.2f", $options['votes'] * 100 / $count['total']), 'color' => $colors[$ci]);
        if ($ci < 2) {
            $polloptionpreview .= $option . "\t";
        }
        $ci++;
        if ($ci == count($colors)) {
            $ci = 0;
        }
    }
    $voterids = explode("\t", $voterids);
    $voters = array_unique($voterids);
    array_shift($voters);
    if (!$expiration) {
        $expirations = TIMESTAMP + 86400;
    } else {
        $expirations = $expiration;
        if ($expirations > TIMESTAMP) {
            $_G['forum_thread']['remaintime'] = remaintime($expirations - TIMESTAMP);
        }
    }
    $allwvoteusergroup = $_G['group']['allowvote'];
    $allowvotepolled = !in_array($_G['uid'] ? $_G['uid'] : $_G['clientip'], $voters);
    $allowvotethread = ($_G['forum_thread']['isgroup'] || !$_G['forum_thread']['closed'] && !checkautoclose($_G['forum_thread']) || $_G['group']['alloweditpoll']) && TIMESTAMP < $expirations && $expirations > 0;
    $_G['group']['allowvote'] = $allwvoteusergroup && $allowvotepolled && $allowvotethread;
    $optiontype = $multiple ? 'checkbox' : 'radio';
    $visiblepoll = $visible || $_G['forum']['ismoderator'] || $_G['uid'] && $_G['uid'] == $_G['forum_thread']['authorid'] || $expirations >= TIMESTAMP && in_array($_G['uid'] ? $_G['uid'] : $_G['clientip'], $voters) || $expirations < TIMESTAMP ? 0 : 1;
}
Ejemplo n.º 4
0
    showmessage('thread_nonexistence');
} elseif ($thread['price'] > 0 && $thread['special'] == 0 && !$_G['uid']) {
    showmessage('group_nopermission', NULL, array('grouptitle' => $_G['group']['grouptitle']), array('login' => 1));
}
checklowerlimit('reply', 0, 1, $_G['forum']['fid']);
if ($_G['setting']['commentnumber'] && !empty($_GET['comment'])) {
    if (!submitcheck('commentsubmit', 0, $seccodecheck, $secqaacheck)) {
        showmessage('submitcheck_error', NULL);
    }
    $post = C::t('forum_post')->fetch('tid:' . $_G['tid'], $_GET['pid']);
    if (!$post) {
        showmessage('post_nonexistence', NULL);
    }
    if ($thread['closed'] && !$_G['forum']['ismoderator'] && !$thread['isgroup']) {
        showmessage('post_thread_closed');
    } elseif (!$thread['isgroup'] && ($post_autoclose = checkautoclose($thread))) {
        showmessage($post_autoclose, '', array('autoclose' => $_G['forum']['autoclose']));
    } elseif (checkflood()) {
        showmessage('post_flood_ctrl', '', array('floodctrl' => $_G['setting']['floodctrl']));
    } elseif (checkmaxperhour('pid')) {
        showmessage('post_flood_ctrl_posts_per_hour', '', array('posts_per_hour' => $_G['group']['maxpostsperhour']));
    }
    $commentscore = '';
    if (!empty($_GET['commentitem']) && !empty($_G['uid']) && $post['authorid'] != $_G['uid']) {
        foreach ($_GET['commentitem'] as $itemk => $itemv) {
            if ($itemv !== '') {
                $commentscore .= strip_tags(trim($itemk)) . ': <i>' . intval($itemv) . '</i> ';
            }
        }
    }
    $comment = cutstr(($commentscore ? $commentscore . '<br />' : '') . censor(trim(dhtmlspecialchars($_GET['message'])), '***'), 200, ' ');
Ejemplo n.º 5
0
            $postlist[] = $post;
        }
    }
    if ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) {
        $attachlist = getattach($pid);
        $attachs = $attachlist['attachs'];
        $imgattachs = $attachlist['imgattachs'];
        unset($attachlist);
    }
    getgpc('infloat') ? include template('forum/post_infloat') : (include template('forum/post'));
} else {
    if ($subject == '' && $message == '' && $thread['special'] != 2) {
        showmessage('post_sm_isnull');
    } elseif ($thread['closed'] && !$_G['forum']['ismoderator']) {
        showmessage('post_thread_closed');
    } elseif ($post_autoclose = checkautoclose($thread)) {
        showmessage($post_autoclose, '', array('autoclose' => $_G['forum']['autoclose']));
    } elseif ($post_invalid = checkpost($subject, $message, $special == 2 && $_G['group']['allowposttrade'])) {
        showmessage($post_invalid, '', array('minpostsize' => $_G['setting']['minpostsize'], 'maxpostsize' => $_G['setting']['maxpostsize']));
    } elseif (checkflood()) {
        showmessage('post_flood_ctrl', '', array('floodctrl' => $_G['setting']['floodctrl']));
    }
    if (!empty($_G['gp_trade']) && $thread['special'] == 2 && $_G['group']['allowposttrade']) {
        $item_price = floatval($_G['gp_item_price']);
        $item_credit = intval($_G['gp_item_credit']);
        if (!trim($_G['gp_item_name'])) {
            showmessage('trade_please_name');
        } elseif ($_G['group']['maxtradeprice'] && $item_price > 0 && ($_G['group']['mintradeprice'] > $item_price || $_G['group']['maxtradeprice'] < $item_price)) {
            showmessage('trade_price_between', '', array('mintradeprice' => $_G['group']['mintradeprice'], 'maxtradeprice' => $_G['group']['maxtradeprice']));
        } elseif ($_G['group']['maxtradeprice'] && $item_credit > 0 && ($_G['group']['mintradeprice'] > $item_credit || $_G['group']['maxtradeprice'] < $item_credit)) {
            showmessage('trade_credit_between', '', array('mintradeprice' => $_G['group']['mintradeprice'], 'maxtradeprice' => $_G['group']['maxtradeprice']));
Ejemplo n.º 6
0
 private function replyPost($extract)
 {
     global $_G;
     extract($extract);
     // 获取主题和帖子要插入的状态信息
     $topicStatus = ForumUtils::getPostSendStatus('topic', $_GET['platType']);
     $postStatus = ForumUtils::getPostSendStatus('post', $_GET['platType']);
     //$navtitle .= ' - '.$thread['subject'].' - '.$_G['forum']['name'];
     //copy from dz source/include/post/post_newreply.php
     require_once libfile('function/forumlist');
     $isfirstpost = 0;
     $showthreadsorts = 0;
     $quotemessage = '';
     if (!$_G['uid'] && !(!$_G['forum']['replyperm'] && $_G['group']['allowreply'] || $_G['forum']['replyperm'] && forumperm($_G['forum']['replyperm']))) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'replyperm_login_nopermission', array('{login}' => 1));
     } elseif (empty($_G['forum']['allowreply'])) {
         if (!$_G['forum']['replyperm'] && !$_G['group']['allowreply']) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'replyperm_none_nopermission', array('{login}' => 1));
         } elseif ($_G['forum']['replyperm'] && !forumperm($_G['forum']['replyperm'])) {
             $msg = mobcent_showmessagenoperm('replyperm', $_G['forum']['fid']);
             return WebUtils::makeErrorInfo_oldVersion($res, $msg['message'], $msg['params']);
         }
     } elseif ($_G['forum']['allowreply'] == -1) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_forum_newreply_nopermission');
     }
     if (!$_G['uid'] && ($_G['setting']['need_avatar'] || $_G['setting']['need_email'] || $_G['setting']['need_friendnum'])) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'replyperm_login_nopermission', array('{login}' => 1));
     }
     if (empty($thread)) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'thread_nonexistence');
     } elseif ($thread['price'] > 0 && $thread['special'] == 0 && !$_G['uid']) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'group_nopermission', array('{grouptitle}' => $_G['group']['grouptitle']));
     }
     checklowerlimit('reply', 0, 1, $_G['forum']['fid']);
     if ($_G['setting']['commentnumber'] && !empty($_GET['comment'])) {
         if (!submitcheck('commentsubmit', 0, $seccodecheck, $secqaacheck)) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
             showmessage('submitcheck_error', NULL);
         }
         $post = C::t('forum_post')->fetch('tid:' . $_G['tid'], $_GET['pid']);
         if (!$post) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'post_nonexistence');
         }
         if ($thread['closed'] && !$_G['forum']['ismoderator'] && !$thread['isgroup']) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'post_thread_closed');
         } elseif (!$thread['isgroup'] && ($post_autoclose = checkautoclose($thread))) {
             return WebUtils::makeErrorInfo_oldVersion($res, $post_autoclose, array('{autoclose}' => $_G['forum']['autoclose']));
         } elseif (checkflood()) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'post_flood_ctrl', array('{floodctrl}' => $_G['setting']['floodctrl']));
         } elseif (checkmaxperhour('pid')) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'post_flood_ctrl_posts_per_hour', array('posts_per_hour' => $_G['group']['maxpostsperhour']));
         }
         $commentscore = '';
         if (!empty($_GET['commentitem']) && !empty($_G['uid']) && $post['authorid'] != $_G['uid']) {
             foreach ($_GET['commentitem'] as $itemk => $itemv) {
                 if ($itemv !== '') {
                     $commentscore .= strip_tags(trim($itemk)) . ': <i>' . intval($itemv) . '</i> ';
                 }
             }
         }
         $comment = cutstr(($commentscore ? $commentscore . '<br />' : '') . censor(trim(dhtmlspecialchars($_GET['message'])), '***'), 200, ' ');
         if (!$comment) {
             return WebUtils::makeErrorInfo_oldVersion($res, 'post_sm_isnull');
         }
         C::t('forum_postcomment')->insert(array('tid' => $post['tid'], 'pid' => $post['pid'], 'author' => $_G['username'], 'authorid' => $_G['uid'], 'dateline' => TIMESTAMP, 'comment' => $comment, 'score' => $commentscore ? 1 : 0, 'useip' => $_G['clientip']));
         C::t('forum_post')->update('tid:' . $_G['tid'], $_GET['pid'], array('comment' => 1));
         if (!empty($_G['uid'])) {
             Mobcent::import(MOBCENT_APP_ROOT . '/components/discuz/source/function/function_post.php');
             mobcent_updatepostcredits('+', $_G['uid'], 'reply', $_G['fid']);
         }
         if (!empty($_G['uid']) && $_G['uid'] != $post['authorid']) {
             notification_add($post['authorid'], 'pcomment', 'comment_add', array('tid' => $_G['tid'], 'pid' => $_GET['pid'], 'subject' => $thread['subject'], 'from_id' => $_G['tid'], 'from_idtype' => 'pcomment', 'commentmsg' => cutstr(str_replace(array('[b]', '[/b]', '[/color]'), '', preg_replace("/\\[color=([#\\w]+?)\\]/i", "", $comment)), 200)));
         }
         update_threadpartake($post['tid']);
         $pcid = C::t('forum_postcomment')->fetch_standpoint_by_pid($_GET['pid']);
         $pcid = $pcid['id'];
         if (!empty($_G['uid']) && $_GET['commentitem']) {
             $totalcomment = array();
             foreach (C::t('forum_postcomment')->fetch_all_by_pid_score($_GET['pid'], 1) as $comment) {
                 $comment['comment'] = addslashes($comment['comment']);
                 if (strexists($comment['comment'], '<br />')) {
                     if (preg_match_all("/([^:]+?):\\s<i>(\\d+)<\\/i>/", $comment['comment'], $a)) {
                         foreach ($a[1] as $k => $itemk) {
                             $totalcomment[trim($itemk)][] = $a[2][$k];
                         }
                     }
                 }
             }
             $totalv = '';
             foreach ($totalcomment as $itemk => $itemv) {
                 $totalv .= strip_tags(trim($itemk)) . ': <i>' . floatval(sprintf('%1.1f', array_sum($itemv) / count($itemv))) . '</i> ';
             }
             if ($pcid) {
                 C::t('forum_postcomment')->update($pcid, array('comment' => $totalv, 'dateline' => TIMESTAMP + 1));
             } else {
                 C::t('forum_postcomment')->insert(array('tid' => $post['tid'], 'pid' => $post['pid'], 'author' => '', 'authorid' => '-1', 'dateline' => TIMESTAMP + 1, 'comment' => $totalv));
             }
         }
         C::t('forum_postcache')->delete($post['pid']);
         return WebUtils::makeErrorInfo_oldVersion($res, 'comment_add_succeed');
         //showmessage('comment_add_succeed', "forum.php?mod=viewthread&tid=$post[tid]&pid=$post[pid]&page=$_GET[page]&extra=$extra#pid$post[pid]", array('tid' => $post['tid'], 'pid' => $post['pid']));
     }
     if ($special == 127) {
         $postinfo = C::t('forum_post')->fetch_threadpost_by_tid_invisible($_G['tid']);
         $sppos = strrpos($postinfo['message'], chr(0) . chr(0) . chr(0));
         $specialextra = substr($postinfo['message'], $sppos + 3);
     }
     if (getstatus($thread['status'], 3)) {
         $rushinfo = C::t('forum_threadrush')->fetch($_G['tid']);
         if ($rushinfo['creditlimit'] != -996) {
             $checkcreditsvalue = $_G['setting']['creditstransextra'][11] ? getuserprofile('extcredits' . $_G['setting']['creditstransextra'][11]) : $_G['member']['credits'];
             if ($checkcreditsvalue < $rushinfo['creditlimit']) {
                 $creditlimit_title = $_G['setting']['creditstransextra'][11] ? $_G['setting']['extcredits'][$_G['setting']['creditstransextra'][11]]['title'] : lang('forum/misc', 'credit_total');
                 return WebUtils::makeErrorInfo_oldVersion($res, 'forum_passwd');
                 showmessage('post_rushreply_creditlimit', '', array('creditlimit_title' => $creditlimit_title, 'creditlimit' => $rushinfo['creditlimit']));
             }
         }
         // author:HanPengyu Date:2014/11/20 针对x3版本的抢楼帖回帖限制控制
         if (isset($rushinfo['replylimit']) && $rushinfo['replylimit'] > 0) {
             $replycount = C::t('forum_post')->count_by_tid_invisible_authorid($thread['tid'], $_G['uid']);
             if ($replycount >= $rushinfo['replylimit']) {
                 return WebUtils::makeErrorInfo_oldVersion($res, lang('message', 'noreply_replynum_error'));
             }
         }
     }
     if ($thread['closed'] && !$_G['forum']['ismoderator'] && !$thread['isgroup']) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_thread_closed');
     } elseif (!$thread['isgroup'] && ($post_autoclose = checkautoclose($thread))) {
         return WebUtils::makeErrorInfo_oldVersion($res, $post_autoclose, array('{autoclose}' => $_G['forum']['autoclose']));
     }
     if (trim($subject) == '' && trim($message) == '' && $thread['special'] != 2) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_sm_isnull');
     } elseif ($post_invalid = checkpost($subject, $message, $special == 2 && $_G['group']['allowposttrade'])) {
         return WebUtils::makeErrorInfo_oldVersion($res, $post_invalid, array('{minpostsize}' => $_G['setting']['minpostsize']), array('{maxpostsize}' => $_G['setting']['maxpostsize']));
         //showmessage($post_invalid, '', array('minpostsize' => $_G['setting']['minpostsize'], 'maxpostsize' => $_G['setting']['maxpostsize']));
     } elseif (checkflood()) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_flood_ctrl', array('{floodctrl}' => $_G['setting']['floodctrl']));
         //showmessage('post_flood_ctrl', '', array('floodctrl' => $_G['setting']['floodctrl']));
     } elseif (checkmaxperhour('pid')) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_flood_ctrl_posts_per_hour', array('{posts_per_hour}' => $_G['group']['maxpostsperhour']));
         //showmessage('post_flood_ctrl_posts_per_hour', '', array('posts_per_hour' => $_G['group']['maxpostsperhour']));
     }
     $attentionon = empty($_GET['attention_add']) ? 0 : 1;
     $attentionoff = empty($attention_remove) ? 0 : 1;
     $heatthreadset = update_threadpartake($_G['tid'], true);
     if ($_G['group']['allowat']) {
         $atlist = $atlist_tmp = $ateduids = array();
         preg_match_all("/@([^\r\n]*?)\\s/i", $message . ' ', $atlist_tmp);
         $atlist_tmp = array_slice(array_unique($atlist_tmp[1]), 0, $_G['group']['allowat']);
         $atnum = $maxselect = 0;
         foreach (C::t('home_notification')->fetch_all_by_authorid_fromid($_G['uid'], $_G['tid'], 'at') as $row) {
             $atnum++;
             $ateduids[$row[uid]] = $row['uid'];
         }
         $maxselect = $_G['group']['allowat'] - $atnum;
         if ($maxselect > 0 && !empty($atlist_tmp)) {
             if (empty($_G['setting']['at_anyone'])) {
                 foreach (C::t('home_follow')->fetch_all_by_uid_fusername($_G['uid'], $atlist_tmp) as $row) {
                     if (!in_array($row['followuid'], $ateduids)) {
                         $atlist[$row[followuid]] = $row['fusername'];
                     }
                     if (count($atlist) == $maxselect) {
                         break;
                     }
                 }
                 if (count($atlist) < $maxselect) {
                     $query = C::t('home_friend')->fetch_all_by_uid_username($_G['uid'], $atlist_tmp);
                     foreach ($query as $row) {
                         if (!in_array($row['followuid'], $ateduids)) {
                             $atlist[$row[fuid]] = $row['fusername'];
                         }
                     }
                 }
             } else {
                 foreach (C::t('common_member')->fetch_all_by_username($atlist_tmp) as $row) {
                     if (!in_array($row['uid'], $ateduids)) {
                         $atlist[$row[uid]] = $row['username'];
                     }
                     if (count($atlist) == $maxselect) {
                         break;
                     }
                 }
             }
         }
         if ($atlist) {
             foreach ($atlist as $atuid => $atusername) {
                 $atsearch[] = "/@" . str_replace('/', '\\/', preg_quote($atusername)) . " /i";
                 $atreplace[] = "[url=home.php?mod=space&uid={$atuid}]@{$atusername}[/url] ";
             }
             $message = preg_replace($atsearch, $atreplace, $message . ' ', 1);
         }
     }
     $bbcodeoff = checkbbcodes($message, !empty($_GET['bbcodeoff']));
     $smileyoff = checksmilies($message, !empty($_GET['smileyoff']));
     $parseurloff = !empty($_GET['parseurloff']);
     $htmlon = $_G['group']['allowhtml'] && !empty($_GET['htmlon']) ? 1 : 0;
     $usesig = !empty($_GET['usesig']) && $_G['group']['maxsigsize'] ? 1 : 0;
     $isanonymous = $_G['group']['allowanonymous'] && !empty($_GET['isanonymous']) ? 1 : 0;
     $author = empty($isanonymous) ? $_G['username'] : '';
     if ($thread['displayorder'] == -4) {
         $modnewreplies = 0;
     }
     $pinvisible = $modnewreplies ? -2 : ($thread['displayorder'] == -4 ? -3 : 0);
     $message = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $message);
     $postcomment = in_array(2, $_G['setting']['allowpostcomment']) && $_G['group']['allowcommentreply'] && !$pinvisible && !empty($_GET['reppid']) && ($nauthorid != $_G['uid'] || $_G['setting']['commentpostself']) ? messagecutstr($message, 200, ' ') : '';
     if (!empty($_GET['noticetrimstr'])) {
         $message = $_GET['noticetrimstr'] . "\n\n" . $message;
         $bbcodeoff = false;
     }
     $pid = insertpost(array('fid' => $_G['fid'], 'tid' => $_G['tid'], 'first' => '0', 'author' => $_G['username'], 'authorid' => $_G['uid'], 'subject' => $subject, 'dateline' => $_G['timestamp'], 'message' => $message, 'useip' => $_G['clientip'], 'invisible' => $pinvisible, 'anonymous' => $isanonymous, 'usesig' => $usesig, 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => '0', 'status' => (defined('IN_MOBILE') ? 8 : 0) | $postStatus));
     if ($_G['group']['allowat'] && $atlist) {
         foreach ($atlist as $atuid => $atusername) {
             notification_add($atuid, 'at', 'at_message', array('from_id' => $_G['tid'], 'from_idtype' => 'at', 'buyerid' => $_G['uid'], 'buyer' => $_G['username'], 'tid' => $_G['tid'], 'subject' => $thread['subject'], 'pid' => $pid, 'message' => messagecutstr($message, 150)));
         }
         set_atlist_cookie(array_keys($atlist));
     }
     $updatethreaddata = $heatthreadset ? $heatthreadset : array();
     $postionid = C::t('forum_post')->fetch_maxposition_by_tid($thread['posttableid'], $_G['tid']);
     $updatethreaddata[] = DB::field('maxposition', $postionid);
     if (getstatus($thread['status'], 3) && $postionid) {
         $rushstopfloor = $rushinfo['stopfloor'];
         if ($rushstopfloor > 0 && $thread['closed'] == 0 && $postionid >= $rushstopfloor) {
             $updatethreaddata[] = 'closed=1';
         }
     }
     useractionlog($_G['uid'], 'pid');
     $nauthorid = 0;
     if (!empty($_GET['noticeauthor']) && !$isanonymous && !$modnewreplies) {
         list($ac, $nauthorid) = explode('|', authcode($_GET['noticeauthor'], 'DECODE'));
         if ($nauthorid != $_G['uid']) {
             if ($ac == 'q') {
                 notification_add($nauthorid, 'post', 'reppost_noticeauthor', array('tid' => $thread['tid'], 'subject' => $thread['subject'], 'fid' => $_G['fid'], 'pid' => $pid, 'from_id' => $pid, 'from_idtype' => 'quote'));
             } elseif ($ac == 'r') {
                 notification_add($nauthorid, 'post', 'reppost_noticeauthor', array('tid' => $thread['tid'], 'subject' => $thread['subject'], 'fid' => $_G['fid'], 'pid' => $pid, 'from_id' => $thread['tid'], 'from_idtype' => 'post'));
             }
         }
         if ($postcomment) {
             $rpid = intval($_GET['reppid']);
             if ($rpost = C::t('forum_post')->fetch('tid:' . $thread['tid'], $rpid)) {
                 if (!$rpost['first']) {
                     C::t('forum_postcomment')->insert(array('tid' => $thread['tid'], 'pid' => $rpid, 'rpid' => $pid, 'author' => $_G['username'], 'authorid' => $_G['uid'], 'dateline' => TIMESTAMP, 'comment' => $postcomment, 'score' => 0, 'useip' => $_G['clientip']));
                     C::t('forum_post')->update('tid:' . $thread['tid'], $rpid, array('comment' => 1));
                     C::t('forum_postcache')->delete($rpid);
                 }
             }
             unset($postcomment);
         }
     }
     if ($thread['authorid'] != $_G['uid'] && getstatus($thread['status'], 6) && empty($_GET['noticeauthor']) && !$isanonymous && !$modnewreplies) {
         $thapost = C::t('forum_post')->fetch_threadpost_by_tid_invisible($_G['tid'], 0);
         notification_add($thapost['authorid'], 'post', 'reppost_noticeauthor', array('tid' => $thread['tid'], 'subject' => $thread['subject'], 'fid' => $_G['fid'], 'pid' => $pid, 'from_id' => $thread['tid'], 'from_idtype' => 'post'));
         // ios push
         UserUtils::pushIOSMessage($thread['authorid'], 'reply', $_G['username'] . WebUtils::t(' 回复了您的帖子 ') . $thread['subject']);
     }
     $feedid = 0;
     if (helper_access::check_module('follow') && !empty($_GET['adddynamic']) && !$isanonymous) {
         require_once libfile('function/discuzcode');
         require_once libfile('function/followcode');
         $feedcontent = C::t('forum_threadpreview')->count_by_tid($thread['tid']);
         $firstpost = C::t('forum_post')->fetch_threadpost_by_tid_invisible($thread['tid']);
         if (empty($feedcontent)) {
             $feedcontent = array('tid' => $thread['tid'], 'content' => followcode($firstpost['message'], $thread['tid'], $pid, 1000));
             C::t('forum_threadpreview')->insert($feedcontent);
             C::t('forum_thread')->update_status_by_tid($thread['tid'], '512');
         } else {
             C::t('forum_threadpreview')->update_relay_by_tid($thread['tid'], 1);
         }
         $notemsg = cutstr(followcode($message, $thread['tid'], $pid, 0, false), 140);
         $followfeed = array('uid' => $_G['uid'], 'username' => $_G['username'], 'tid' => $thread['tid'], 'note' => $notemsg, 'dateline' => TIMESTAMP);
         $feedid = C::t('home_follow_feed')->insert($followfeed, true);
         C::t('common_member_count')->increase($_G['uid'], array('feeds' => 1));
     }
     if ($thread['replycredit'] > 0 && !$modnewreplies && $thread['authorid'] != $_G['uid'] && $_G['uid']) {
         $replycredit_rule = C::t('forum_replycredit')->fetch($_G['tid']);
         if (!empty($replycredit_rule['times'])) {
             $have_replycredit = C::t('common_credit_log')->count_by_uid_operation_relatedid($_G['uid'], 'RCA', $_G['tid']);
             if ($replycredit_rule['membertimes'] - $have_replycredit > 0 && $thread['replycredit'] - $replycredit_rule['extcredits'] >= 0) {
                 $replycredit_rule['extcreditstype'] = $replycredit_rule['extcreditstype'] ? $replycredit_rule['extcreditstype'] : $_G['setting']['creditstransextra'][10];
                 if ($replycredit_rule['random'] > 0) {
                     $rand = rand(1, 100);
                     $rand_replycredit = $rand <= $replycredit_rule['random'] ? true : false;
                 } else {
                     $rand_replycredit = true;
                 }
                 if ($rand_replycredit) {
                     updatemembercount($_G['uid'], array($replycredit_rule['extcreditstype'] => $replycredit_rule['extcredits']), 1, 'RCA', $_G[tid]);
                     C::t('forum_post')->update('tid:' . $_G['tid'], $pid, array('replycredit' => $replycredit_rule['extcredits']));
                     $updatethreaddata[] = DB::field('replycredit', $thread['replycredit'] - $replycredit_rule['extcredits']);
                 }
             }
         }
     }
     ($_G['group']['allowpostattach'] || $_G['group']['allowpostimage']) && ($_GET['attachnew'] || $special == 2 && $_GET['tradeaid']) && updateattach($thread['displayorder'] == -4 || $modnewreplies, $_G['tid'], $pid, $_GET['attachnew']);
     $replymessage = 'post_reply_succeed';
     if ($special == 2 && $_G['group']['allowposttrade'] && $thread['authorid'] == $_G['uid'] && !empty($_GET['trade']) && !empty($_GET['item_name'])) {
         require_once libfile('function/trade');
         trade_create(array('tid' => $_G['tid'], 'pid' => $pid, 'aid' => $_GET['tradeaid'], 'item_expiration' => $_GET['item_expiration'], 'thread' => $thread, 'discuz_uid' => $_G['uid'], 'author' => $author, 'seller' => empty($_GET['paymethod']) && $_GET['seller'] ? dhtmlspecialchars(trim($_GET['seller'])) : '', 'item_name' => $_GET['item_name'], 'item_price' => $_GET['item_price'], 'item_number' => $_GET['item_number'], 'item_quality' => $_GET['item_quality'], 'item_locus' => $_GET['item_locus'], 'transport' => $_GET['transport'], 'postage_mail' => $_GET['postage_mail'], 'postage_express' => $_GET['postage_express'], 'postage_ems' => $_GET['postage_ems'], 'item_type' => $_GET['item_type'], 'item_costprice' => $_GET['item_costprice'], 'item_credit' => $_GET['item_credit'], 'item_costcredit' => $_GET['item_costcredit']));
         $replymessage = 'trade_add_succeed';
         if (!empty($_GET['tradeaid'])) {
             convertunusedattach($_GET['tradeaid'], $_G['tid'], $pid);
         }
     }
     $_G['forum']['threadcaches'] && deletethreadcaches($_G['tid']);
     include_once libfile('function/stat');
     updatestat($thread['isgroup'] ? 'grouppost' : 'post');
     $param = array('fid' => $_G['fid'], 'tid' => $_G['tid'], 'pid' => $pid, 'from' => $_GET['from'], 'sechash' => !empty($_GET['sechash']) ? $_GET['sechash'] : '');
     if ($feedid) {
         $param['feedid'] = $feedid;
     }
     dsetcookie('clearUserdata', 'forum');
     if ($modnewreplies) {
         updatemoderate('pid', $pid);
         unset($param['pid']);
         if ($updatethreaddata) {
             C::t('forum_thread')->update($_G['tid'], $updatethreaddata, false, false, 0, true);
         }
         C::t('forum_forum')->update_forum_counter($_G['fid'], 0, 0, 1, 1);
         $url = empty($_POST['portal_referer']) ? "forum.php?mod=viewthread&tid={$thread[tid]}" : $_POST['portal_referer'];
         manage_addnotify('verifypost');
         // if(!isset($inspacecpshare)) {
         return WebUtils::makeErrorInfo_oldVersion($res, 'post_reply_mod_succeed', array('noError' => 1));
         //showmessage('post_reply_mod_succeed', $url, $param);
         // }
     } else {
         $fieldarr = array('lastposter' => array($author), 'replies' => 1);
         if ($thread['lastpost'] < $_G['timestamp']) {
             $fieldarr['lastpost'] = array($_G['timestamp']);
         }
         $row = C::t('forum_threadaddviews')->fetch($_G['tid']);
         if (!empty($row)) {
             C::t('forum_threadaddviews')->update($_G['tid'], array('addviews' => 0));
             $fieldarr['views'] = $row['addviews'];
         }
         $updatethreaddata = array_merge($updatethreaddata, C::t('forum_thread')->increase($_G['tid'], $fieldarr, false, 0, true));
         if ($thread['displayorder'] != -4) {
             Mobcent::import(MOBCENT_APP_ROOT . '/components/discuz/source/function/function_post.php');
             mobcent_updatepostcredits('+', $_G['uid'], 'reply', $_G['fid']);
             if ($_G['forum']['status'] == 3) {
                 if ($_G['forum']['closed'] > 1) {
                     C::t('forum_thread')->increase($_G['forum']['closed'], $fieldarr, true);
                 }
                 C::t('forum_groupuser')->update_counter_for_user($_G['uid'], $_G['fid'], 0, 1);
                 C::t('forum_forumfield')->update($_G['fid'], array('lastupdate' => TIMESTAMP));
                 require_once libfile('function/grouplog');
                 updategroupcreditlog($_G['fid'], $_G['uid']);
             }
             $lastpost = "{$thread['tid']}\t{$thread['subject']}\t{$_G['timestamp']}\t{$author}";
             C::t('forum_forum')->update($_G['fid'], array('lastpost' => $lastpost));
             C::t('forum_forum')->update_forum_counter($_G['fid'], 0, 1, 1);
             if ($_G['forum']['type'] == 'sub') {
                 C::t('forum_forum')->update($_G['forum']['fup'], array('lastpost' => $lastpost));
             }
         }
         $page = getstatus($thread['status'], 4) ? 1 : @ceil(($thread['special'] ? $thread['replies'] + 1 : $thread['replies'] + 2) / $_G['ppp']);
         if ($updatethreaddata) {
             C::t('forum_thread')->update($_G['tid'], $updatethreaddata, false, false, 0, true);
         }
         /*  if(!isset($inspacecpshare)) {
                 // showmessage($replymessage, $url, $param);
             } */
     }
     if ($jsonInfo['isShowPostion']) {
         $data = DB::query('INSERT INTO  %t VALUES(poi_id,%f,%f,%d,%d,%s)', array('home_surrounding_user', $jsonInfo['longitude'], $jsonInfo['latitude'], $pid, 2, (string) $jsonInfo['location']));
     }
     /* //客户端回复帖子积分入库
           $temp = DB::fetch_first('SELECT extcredits3 FROM '.DB::table('common_credit_rule').' WHERE rid =%d',array(2));
           $extcredits3 = DB::fetch_first('SELECT extcredits3 FROM '.DB::table('common_member_count').' WHERE uid = %d',array($_G['uid']));
           $temp = $extcredits3['extcredits3'] + $temp['extcredits3'];
           DB::query('UPDATE '.DB::table('common_member_count').' set extcredits3 = %d WHERE uid = %d',array($temp,$_G['uid']));
        */
     // return array('rs'=>1,'errcode'=>WebUtils::t('发贴成功'));
     return $this->makeErrorInfo($res, 'mobcent_post_reply_succeed', array('noError' => 1));
 }
Ejemplo n.º 7
0
 public function newreply($parameters)
 {
     $this->_init_parameters($parameters);
     if ($this->thread['closed'] && !$this->forum['ismoderator'] && !$this->thread['isgroup']) {
         return $this->showmessage('post_thread_closed');
     } elseif (!$this->thread['isgroup'] && ($post_autoclose = checkautoclose($this->thread))) {
         return $this->showmessage($post_autoclose, '', array('autoclose' => $this->forum['autoclose']));
     }
     if (trim($this->param['subject']) == '' && trim($this->param['message']) == '' && $this->thread['special'] != 2) {
         return $this->showmessage('post_sm_isnull');
     } elseif ($post_invalid = checkpost($this->param['subject'], $this->param['message'], $this->param['special'] == 2 && $this->group['allowposttrade'])) {
         return $this->showmessage($post_invalid, '', array('minpostsize' => $this->setting['minpostsize'], 'maxpostsize' => $this->setting['maxpostsize']));
     } elseif (checkflood()) {
         return $this->showmessage('post_flood_ctrl', '', array('floodctrl' => $this->setting['floodctrl']));
     } elseif (checkmaxperhour('pid')) {
         return $this->showmessage('post_flood_ctrl_posts_per_hour', '', array('posts_per_hour' => $this->group['maxpostsperhour']));
     }
     $heatthreadset = update_threadpartake($this->thread['tid'], true);
     $bbcodeoff = checkbbcodes($this->param['message'], !empty($this->param['bbcodeoff']));
     $smileyoff = checksmilies($this->param['message'], !empty($this->param['smileyoff']));
     $parseurloff = !empty($this->param['parseurloff']);
     $htmlon = $this->group['allowhtml'] && !empty($this->param['htmlon']) ? 1 : 0;
     $usesig = !empty($this->param['usesig']) && $this->group['maxsigsize'] ? 1 : 0;
     $this->param['isanonymous'] = $this->group['allowanonymous'] && !empty($this->param['isanonymous']) ? 1 : 0;
     $author = empty($this->param['isanonymous']) ? $this->member['username'] : '';
     list(, $this->param['modnewreplies']) = threadmodstatus($this->param['subject'] . "\t" . $this->param['message'] . $this->param['extramessage']);
     if ($this->thread['displayorder'] == -4) {
         $this->param['modnewreplies'] = 0;
     }
     $pinvisible = $this->param['modnewreplies'] ? -2 : ($this->thread['displayorder'] == -4 ? -3 : 0);
     $this->param['message'] = preg_replace('/\\[attachimg\\](\\d+)\\[\\/attachimg\\]/is', '[attach]\\1[/attach]', $this->param['message']);
     if (!empty($this->param['noticetrimstr'])) {
         $this->param['message'] = $this->param['noticetrimstr'] . "\n\n" . $this->param['message'];
         $bbcodeoff = false;
     }
     $status = defined('IN_MOBILE') ? 8 : 0;
     if ($this->param['modstatus']) {
         foreach ($this->param['modstatus'] as $modbit => $modvalue) {
             $status = setstatus($modbit, $modvalue, $status);
         }
     }
     $this->pid = insertpost(array('fid' => $this->forum['fid'], 'tid' => $this->thread['tid'], 'first' => '0', 'author' => $this->member['username'], 'authorid' => $this->member['uid'], 'subject' => $this->param['subject'], 'dateline' => $this->param['timestamp'] ? $this->param['timestamp'] : getglobal('timestamp'), 'message' => $this->param['message'], 'useip' => $this->param['clientip'] ? $this->param['clientip'] : getglobal('clientip'), 'port' => $this->param['remoteport'] ? $this->param['remoteport'] : getglobal('remoteport'), 'invisible' => $pinvisible, 'anonymous' => $this->param['isanonymous'], 'usesig' => $usesig, 'htmlon' => $htmlon, 'bbcodeoff' => $bbcodeoff, 'smileyoff' => $smileyoff, 'parseurloff' => $parseurloff, 'attachment' => '0', 'status' => $status));
     $this->param['updatethreaddata'] = $heatthreadset ? $heatthreadset : array();
     $this->param['maxposition'] = C::t('forum_post')->fetch_maxposition_by_tid($this->thread['posttableid'], $this->thread['tid']);
     $this->param['updatethreaddata'][] = DB::field('maxposition', $this->param['maxposition']);
     useractionlog($this->member['uid'], 'pid');
     if ($this->param['geoloc'] && IN_MOBILE == 2) {
         list($mapx, $mapy, $location) = explode('|', $this->param['geoloc']);
         if ($mapx && $mapy && $location) {
             C::t('forum_post_location')->insert(array('pid' => $this->pid, 'tid' => $this->thread['tid'], 'uid' => $this->member['uid'], 'mapx' => $mapx, 'mapy' => $mapy, 'location' => $location));
         }
     }
     $nauthorid = 0;
     if (!empty($this->param['noticeauthor']) && !$this->param['isanonymous'] && !$this->param['modnewreplies']) {
         list($ac, $nauthorid) = explode('|', authcode($this->param['noticeauthor'], 'DECODE'));
         if ($nauthorid != $this->member['uid']) {
             if ($ac == 'q') {
                 notification_add($nauthorid, 'post', 'reppost_noticeauthor', array('tid' => $this->thread['tid'], 'subject' => $this->thread['subject'], 'fid' => $this->forum['fid'], 'pid' => $this->pid, 'from_id' => $this->pid, 'from_idtype' => 'quote'));
             } elseif ($ac == 'r') {
                 notification_add($nauthorid, 'post', 'reppost_noticeauthor', array('tid' => $this->thread['tid'], 'subject' => $this->thread['subject'], 'fid' => $this->forum['fid'], 'pid' => $this->pid, 'from_id' => $this->thread['tid'], 'from_idtype' => 'post'));
             }
         }
     }
     if ($this->thread['authorid'] != $this->member['uid'] && getstatus($this->thread['status'], 6) && empty($this->param['noticeauthor']) && !$this->param['isanonymous'] && !$this->param['modnewreplies']) {
         $thapost = C::t('forum_post')->fetch_threadpost_by_tid_invisible($this->thread['tid'], 0);
         notification_add($thapost['authorid'], 'post', 'reppost_noticeauthor', array('tid' => $this->thread['tid'], 'subject' => $this->thread['subject'], 'fid' => $this->forum['fid'], 'pid' => $this->pid, 'from_id' => $this->thread['tid'], 'from_idtype' => 'post'));
     }
     $this->forum['threadcaches'] && deletethreadcaches($this->thread['tid']);
     include_once libfile('function/stat');
     updatestat($this->thread['isgroup'] ? 'grouppost' : 'post');
     $this->param['showmsgparam']['fid'] = $this->forum['fid'];
     $this->param['showmsgparam']['tid'] = $this->thread['tid'];
     $this->param['showmsgparam']['pid'] = $this->pid;
     $this->param['showmsgparam']['from'] = $this->param['from'];
     $this->param['showmsgparam']['sechash'] = !empty($this->param['sechash']) ? $this->param['sechash'] : '';
     dsetcookie('clearUserdata', 'forum');
     if ($this->thread['replies'] <= 0) {
         C::t('forum_sofa')->delete($this->thread['tid']);
     }
     if ($this->param['modnewreplies']) {
         updatemoderate('pid', $this->pid);
         unset($this->param['showmsgparam']['pid']);
         if ($this->param['updatethreaddata']) {
             C::t('forum_thread')->update($this->thread['tid'], $this->param['updatethreaddata'], false, false, 0, true);
         }
         C::t('forum_forum')->update_forum_counter($this->forum['fid'], 0, 0, 1, 1);
         manage_addnotify('verifypost');
         return 'post_reply_mod_succeed';
     } else {
         $fieldarr = array('lastposter' => array($author), 'replies' => 1);
         if ($this->thread['lastpost'] < getglobal('timestamp')) {
             $fieldarr['lastpost'] = array(getglobal('timestamp'));
         }
         $row = C::t('forum_threadaddviews')->fetch($this->thread['tid']);
         if (!empty($row)) {
             C::t('forum_threadaddviews')->update($this->thread['tid'], array('addviews' => 0));
             $fieldarr['views'] = $row['addviews'];
         }
         $this->param['updatethreaddata'] = array_merge($this->param['updatethreaddata'], C::t('forum_thread')->increase($this->thread['tid'], $fieldarr, false, 0, true));
         if ($this->thread['displayorder'] != -4) {
             updatepostcredits('+', $this->member['uid'], 'reply', $this->forum['fid']);
             if ($this->forum['status'] == 3) {
                 if ($this->forum['closed'] > 1) {
                     C::t('forum_thread')->increase($this->forum['closed'], $fieldarr, true);
                 }
                 C::t('forum_groupuser')->update_counter_for_user($this->member['uid'], $this->forum['fid'], 0, 1);
                 C::t('forum_forumfield')->update($this->forum['fid'], array('lastupdate' => TIMESTAMP));
                 require_once libfile('function/grouplog');
                 updategroupcreditlog($this->forum['fid'], $this->member['uid']);
             }
             $lastpost = $this->thread['tid'] . "\t" . $this->thread['subject'] . "\t" . getglobal('timestamp') . "\t" . $author;
             C::t('forum_forum')->update($this->forum['fid'], array('lastpost' => $lastpost));
             C::t('forum_forum')->update_forum_counter($this->forum['fid'], 0, 1, 1);
             if ($this->forum['type'] == 'sub') {
                 C::t('forum_forum')->update($this->forum['fup'], array('lastpost' => $lastpost));
             }
         }
         $this->param['page'] = getstatus($this->thread['status'], 4) ? 1 : @ceil(($this->thread['special'] ? $this->thread['replies'] + 1 : $this->thread['replies'] + 2) / getglobal('ppp'));
         if ($this->param['updatethreaddata']) {
             C::t('forum_thread')->update($this->thread['tid'], $this->param['updatethreaddata'], false, false, 0, true);
         }
         return 'post_reply_succeed';
     }
 }
Ejemplo n.º 8
0
$secqaacheck = $secqaa['status'][2] && (!$secqaa['minposts'] || $posts < $secqaa['minposts']);
$postlist = $attachtags = $attachlist = array();
$aimgcount = 0;
$attachpids = -1;
if (empty($action) && $tid) {
    $thisgid = $forum['type'] == 'forum' ? $forum['fup'] : $_DCACHE['forums'][$forum['fup']]['fup'];
    $lastmod = $thread['moderated'] ? viewthread_lastmod() : array();
    $showsettings = str_pad(decbin($showsettings), 3, '0', STR_PAD_LEFT);
    $customshow = $discuz_uid ? str_pad(base_convert($customshow, 10, 3), 4, '0', STR_PAD_LEFT) : '2222';
    $disableddateconvert = $customshow[0];
    $showsignatures = $customshow[1] == 2 ? $showsettings[0] : $customshow[1];
    $showavatars = $customshow[2] == 2 ? $showsettings[1] : $customshow[2];
    $showimages = $customshow[3] == 2 ? $showsettings[2] : $customshow[3];
    $highlightstatus = isset($highlight) && str_replace('+', '', $highlight) ? 1 : 0;
    $usesigcheck = $discuz_uid && $sigstatus ? 1 : 0;
    $allowpostreply = $forum['allowreply'] != -1 && (!$thread['closed'] && !checkautoclose() || $forum['ismoderator']) && (!$forum['replyperm'] && $allowreply || $forum['replyperm'] && forumperm($forum['replyperm']) || $forum['allowreply']);
    $allowpost = $forum['allowpost'] != -1 && (!$forum['postperm'] && $allowpost || $forum['postperm'] && forumperm($forum['postperm']) || $forum['allowpost']);
    $addfeedcheck = $customaddfeed & 4 ? 1 : 0;
    if ($allowpost) {
        $allowpostpoll = $allowpostpoll && $forum['allowpostspecial'] & 1;
        $allowposttrade = $allowposttrade && $forum['allowpostspecial'] & 2;
        $allowpostreward = $allowpostreward && $forum['allowpostspecial'] & 4 && isset($extcredits[$creditstrans]);
        $allowpostactivity = $allowpostactivity && $forum['allowpostspecial'] & 8;
        $allowpostdebate = $allowpostdebate && $forum['allowpostspecial'] & 16;
        $allowpostvideo = $allowpostvideo && $forum['allowpostspecial'] & 32 && $videoopen;
    } else {
        $allowpostpoll = $allowposttrade = $allowpostreward = $allowpostactivity = $allowpostdebate = $allowpostvideo = FALSE;
    }
    $visitedforums = $visitedforums ? visitedforums() : '';
    $forummenu = '';
    if ($forumjump) {
Ejemplo n.º 9
0
    $query = $sdb->query("SELECT polloptionid, votes, polloption, voterids FROM {$tablepre}polloptions WHERE tid='{$tid}' ORDER BY displayorder");
    $voterids = '';
    $bgcolor = rand(0, 9);
    while ($options = $sdb->fetch_array($query)) {
        if ($bgcolor > 9) {
            $bgcolor = 0;
        }
        $viewvoteruid[] = $options['voterids'];
        $voterids .= "\t" . $options['voterids'];
        $polloptions[] = array('polloptionid' => $options['polloptionid'], 'polloption' => preg_replace("/\\[url=(https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\\/\\/([^\\[\"']+?)\\](.+?)\\[\\/url\\]/i", "<a href=\"\\1://\\2\" target=\"_blank\">\\3</a>", $options['polloption']), 'votes' => $options['votes'], 'width' => @round($options['votes'] * 300 / $count['max']) + 2, 'percent' => @sprintf("%01.2f", $options['votes'] * 100 / $count['total']), 'color' => $bgcolor);
        $bgcolor++;
    }
    $voterids = explode("\t", $voterids);
    $voters = array_unique($voterids);
    $voterscount = count($voters) - 1;
    array_shift($voters);
    if (!$expiration) {
        $expirations = $timestamp + 86400;
    } else {
        $expirations = $expiration;
        if ($expirations > $timestamp) {
            $thread['remaintime'] = remaintime($expirations - $timestamp);
        }
    }
    $allwvoteusergroup = $allowvote;
    $allowvotepolled = !in_array($discuz_uid ? $discuz_uid : $onlineip, $voters);
    $allowvotethread = (!$thread['closed'] && !checkautoclose() || $alloweditpoll) && $timestamp < $expirations && $expirations > 0;
    $allowvote = $allwvoteusergroup && $allowvotepolled && $allowvotethread;
    $optiontype = $multiple ? 'checkbox' : 'radio';
    $visiblepoll = $visible || $forum['ismoderator'] || $discuz_uid && $discuz_uid == $thread['authorid'] || $expirations >= $timestamp && in_array($discuz_uid ? $discuz_uid : $onlineip, $voters) || $expirations < $timestamp ? 0 : 1;
}