Exemple #1
0
 function qa_permit_check($opt)
 {
     if (qa_opt($opt) == QA_PERMIT_POINTS) {
         return qa_get_logged_in_points() >= qa_opt($opt . '_points');
     }
     return !qa_permit_value_error(qa_opt($opt), qa_get_logged_in_userid(), qa_get_logged_in_level(), qa_get_logged_in_flags());
 }
 function forbid_new_tag()
 {
     $q_edit = $this->template == 'ask' || isset($this->content['form_q_edit']);
     $tag_prevent = qa_opt('tag_synonyms_prevent');
     if ($q_edit && $tag_prevent) {
         return qa_get_logged_in_points() < (int) qa_opt('tag_synonyms_rep') && qa_get_logged_in_level() < QA_USER_LEVEL_EXPERT;
     }
     return false;
 }
 function logged_in()
 {
     qa_html_theme_base::logged_in();
     if (qa_is_logged_in()) {
         $userpoints = qa_get_logged_in_points();
         $pointshtml = $userpoints == 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_lang_html_sub('main/x_points', qa_html(number_format($userpoints)));
         $this->output('<SPAN CLASS="qa-logged-in-points">', '(' . $pointshtml . ')', '</SPAN>');
     }
 }
 function logged_in()
 {
     if (qa_is_logged_in()) {
         // output user avatar to login bar
         $this->output('<div class="qa-logged-in-avatar">', QA_FINAL_EXTERNAL_USERS ? qa_get_external_avatar_html(qa_get_logged_in_userid(), 24, true) : qa_get_user_avatar_html(qa_get_logged_in_flags(), qa_get_logged_in_email(), qa_get_logged_in_handle(), qa_get_logged_in_user_field('avatarblobid'), qa_get_logged_in_user_field('avatarwidth'), qa_get_logged_in_user_field('avatarheight'), 24, true), '</div>');
     }
     qa_html_theme_base::logged_in();
     if (qa_is_logged_in()) {
         // adds points count after logged in username
         $userpoints = qa_get_logged_in_points();
         $pointshtml = $userpoints == 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_lang_html_sub('main/x_points', qa_html(number_format($userpoints)));
         $this->output('<span class="qa-logged-in-points">', '(' . $pointshtml . ')', '</span>');
     }
 }
function set_duodaa_user()
{
    $user = array();
    $user['username'] = qa_get_logged_in_handle();
    if (!$user['username']) {
        //header("Content-type: text/html; charset=utf-8");
        //unset($user['username']);
        $user['nologin'] = 1;
        $user['nologinzh'] = '没有登录';
        //echo json_encode($user);
    } else {
        $user['nologin'] = 0;
        $user['points'] = qa_get_logged_in_points();
    }
    return $user;
}
 function process_request($request)
 {
     require_once QA_INCLUDE_DIR . 'qa-app-users.php';
     $appid = qa_opt('fb_app_id');
     $secret = qa_opt('fb_app_secret');
     $fb = new Facebook\Facebook(['app_id' => $appid, 'app_secret' => $secret, 'default_graph_version' => 'v2.4']);
     $qa_content = qa_content_prepare();
     $qa_content['title'] = 'Facebook Sharing Page';
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         echo $e->getMessage();
         exit;
     }
     if (isset($accessToken)) {
         $_SESSION['fb_access_token'] = (string) $accessToken;
         $res = $fb->post('/me/feed', array('link' => 'http://nathorr.com/qeta/user/' . qa_get_logged_in_handle() . '/', 'name' => qa_opt('fb_shared_message_title'), 'picture' => qa_opt('fb_shared_message_picture'), 'description' => qa_opt('fb_shared_message_description'), 'message' => 'I have scored ' . qa_get_logged_in_points() . ' points and achieved some nice badges in Nathorr Q&A, check it out!'), $accessToken);
         $post = $res->getGraphObject();
         $qa_content['custom'] = '<a href="http://nathorr.com/qeta/user/' . qa_get_logged_in_handle() . '">Successfully shared, return by clicking here.</a>';
         return $qa_content;
     } else {
         if ($helper->getError()) {
             var_dump($helper->getError());
             echo '<br><br>';
             var_dump($helper->getErrorCode());
             echo '<br><br>';
             var_dump($helper->getErrorReason());
             echo '<br><br>';
             var_dump($helper->getErrorDescription());
             echo '<br><br>';
             echo '<a href="http://nathorr.com/qeta/user/' . qa_get_logged_in_handle() . '/">Something went wrong, return by clicking here.</a>';
             exit;
         }
     }
     http_response_code(400);
     exit;
 }
Exemple #7
0
function qa_user_moderation_reason($userlevel = null)
{
    if (qa_to_override(__FUNCTION__)) {
        $args = func_get_args();
        return qa_call_override(__FUNCTION__, $args);
    }
    $reason = false;
    if (!isset($userlevel)) {
        $userlevel = qa_get_logged_in_level();
    }
    if ($userlevel < QA_USER_LEVEL_EXPERT && qa_user_permit_error('permit_moderate')) {
        $userid = qa_get_logged_in_userid();
        if (isset($userid)) {
            if (qa_opt('moderate_users') && qa_opt('moderate_unapproved') && $userlevel < QA_USER_LEVEL_APPROVED) {
                $reason = 'approve';
            } elseif (qa_opt('confirm_user_emails') && qa_opt('moderate_unconfirmed') && !(qa_get_logged_in_flags() & QA_USER_FLAGS_EMAIL_CONFIRMED)) {
                $reason = 'confirm';
            } elseif (qa_opt('moderate_by_points') && qa_get_logged_in_points() < qa_opt('moderate_points_limit')) {
                $reason = 'points';
            }
        } elseif (qa_opt('moderate_anon_post')) {
            $reason = 'login';
        }
    }
    return $reason;
}
 /**
  * Adding point count for logged in user
  *
  * @since Snow 1.4
  */
 public function logged_in()
 {
     parent::logged_in();
     if (qa_is_logged_in()) {
         $userpoints = qa_get_logged_in_points();
         $pointshtml = $userpoints == 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_html(number_format($userpoints));
         $this->output('<div class="qam-logged-in-points">' . $pointshtml . '</div>');
     }
 }
Exemple #9
0
 function voting_inner_html($post)
 {
     if (qw_hook_exist(__FUNCTION__)) {
         $args = func_get_args();
         array_unshift($args, $this);
         return qw_event_hook(__FUNCTION__, $args, NULL);
     }
     $up_tags = preg_replace('/onclick="([^"]+)"/', '', str_replace('name', 'data-id', @$post['vote_up_tags']));
     $down_tags = preg_replace('/onclick="([^"]+)"/', '', str_replace('name', 'data-id', @$post['vote_down_tags']));
     if (qa_is_logged_in()) {
         $user_point = qa_get_logged_in_points();
         if ($post['raw']['type'] == 'Q') {
             if (qa_opt('permit_vote_q') == '106') {
                 $need = qa_opt('permit_vote_q_points') - $user_point;
                 $up_tags = str_replace(qa_lang_html('main/vote_disabled_level'), 'You need ' . $need . ' more points to vote', $up_tags);
             }
             if (qa_opt('permit_vote_q') == '106' && qa_opt('permit_vote_down') == '106') {
                 $max = max(qa_opt('permit_vote_down_points'), qa_opt('permit_vote_q_points'));
                 $need = $max - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_q') == '106') {
                 $need = qa_opt('permit_vote_q_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_down') == '106') {
                 $need = qa_opt('permit_vote_down_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             }
         }
         if ($post['raw']['type'] == 'A') {
             if (qa_opt('permit_vote_a') == '106') {
                 $need = qa_opt('permit_vote_a_points') - $user_point;
                 $up_tags = str_replace(qa_lang_html('main/vote_disabled_level'), 'You need ' . $need . ' more points to vote', $up_tags);
             }
             if (qa_opt('permit_vote_a') == '106' && qa_opt('permit_vote_down') == '106') {
                 $max = max(qa_opt('permit_vote_down_points'), qa_opt('permit_vote_a_points'));
                 $need = $max - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_a') == '106') {
                 $need = qa_opt('permit_vote_a_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_down') == '106') {
                 $need = qa_opt('permit_vote_down_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             }
         }
     }
     $state = @$post['vote_state'];
     $code = qa_get_form_security_code('vote');
     $vote_text = $post['raw']['netvotes'] > 1 || $post['raw']['netvotes'] < -1 ? _ra_lang('votes') : _ra_lang('vote');
     $this->output('<p class="count">' . $post['raw']['netvotes'] . '<span>' . $vote_text . '</span></p>');
     if (isset($post['vote_up_tags'])) {
         $this->output('<a ' . @$up_tags . ' href="#" data-code="' . $code . '" class="icon-chevron-up enabled vote-up ' . $state . '"></a>');
     }
     if (isset($post['vote_down_tags'])) {
         $this->output('<a ' . @$down_tags . ' href="#" data-code="' . $code . '" class="icon-chevron-down enabled vote-down ' . $state . '"></a>');
     }
 }
Exemple #10
0
 function voting_inner_html($post)
 {
     $up_tags = preg_replace('/onclick="([^"]+)"/', '', str_replace('name', 'data-id', @$post['vote_up_tags']));
     $down_tags = preg_replace('/onclick="([^"]+)"/', '', str_replace('name', 'data-id', @$post['vote_down_tags']));
     if (qa_is_logged_in()) {
         $user_point = qa_get_logged_in_points();
         if ($post['raw']['type'] == 'Q') {
             if (qa_opt('permit_vote_q') == '106') {
                 $need = qa_opt('permit_vote_q_points') - $user_point;
                 $up_tags = str_replace(qa_lang_html('main/vote_disabled_level'), 'You need ' . $need . ' more points to vote', $up_tags);
             }
             if (qa_opt('permit_vote_q') == '106' && qa_opt('permit_vote_down') == '106') {
                 $max = max(qa_opt('permit_vote_down_points'), qa_opt('permit_vote_q_points'));
                 $need = $max - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_q') == '106') {
                 $need = qa_opt('permit_vote_q_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_down') == '106') {
                 $need = qa_opt('permit_vote_down_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             }
         }
         if ($post['raw']['type'] == 'A') {
             if (qa_opt('permit_vote_a') == '106') {
                 $need = qa_opt('permit_vote_a_points') - $user_point;
                 $up_tags = str_replace(qa_lang_html('main/vote_disabled_level'), 'You need ' . $need . ' more points to vote', $up_tags);
             }
             if (qa_opt('permit_vote_a') == '106' && qa_opt('permit_vote_down') == '106') {
                 $max = max(qa_opt('permit_vote_down_points'), qa_opt('permit_vote_a_points'));
                 $need = $max - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_a') == '106') {
                 $need = qa_opt('permit_vote_a_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             } elseif (qa_opt('permit_vote_down') == '106') {
                 $need = qa_opt('permit_vote_down_points') - $user_point;
                 $down_tags = preg_replace('/title="([^"]+)"/', 'title="You need ' . $need . ' more points to vote" ', $down_tags);
             }
         }
     }
     $state = @$post['vote_state'];
     $code = qa_get_form_security_code('vote');
     $vote_text = $post['raw']['netvotes'] > 1 || $post['raw']['netvotes'] < -1 ? qa_lang('cleanstrap/votes') : qa_lang('cleanstrap/vote');
     if (isset($post['vote_up_tags'])) {
         $this->output('<a ' . @$up_tags . ' href="#" data-code="' . $code . '" class=" icon-thumbs-up2 enabled vote-up ' . $state . '"></a>');
     }
     $this->output('<span class="count">' . $post['raw']['netvotes'] . '</span>');
     if (isset($post['vote_down_tags'])) {
         $this->output('<a ' . @$down_tags . ' href="#" data-code="' . $code . '" class=" icon-thumbs-down2 enabled vote-down ' . $state . '"></a>');
     }
 }
                            <?php 
        echo qa_lang_html('misc/nav_user_pms');
        ?>
                        </a>
                    </li>
                <?php 
    }
    ?>
                <li>
                    <a href="<?php 
    echo qa_path_html('user/' . qa_get_logged_in_handle());
    ?>
">
                        <span class="fa fa-money"></span>
                        <?php 
    echo qa_get_logged_in_points() . ' ' . qa_lang_html('admin/points_title');
    ?>
                    </a>
                </li>
                <?php 
    foreach ($this->content['navigation']['user'] as $key => $user_nav) {
        ?>
                    <?php 
        if ($key !== 'logout') {
            ?>
                        <li>
                            <a href="<?php 
            echo @$user_nav['url'];
            ?>
">
                                <?php 
Exemple #12
0
 /**
  * Get logged in user's points
  *
  * @access private
  * @since Snow 1.4
  * @version 1.0
  * @return string|null LoggedIn user's total points, null for guest
  *
  * @author Q2A Market <http://www.q2amarket.com>
  * @copyright (c) 2014, Q2A Market
  * @license http://www.gnu.org/copyleft/gpl.html
  */
 private function user_points()
 {
     if (qa_is_logged_in()) {
         $userpoints = qa_get_logged_in_points();
         $pointshtml = $userpoints == 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_html(number_format($userpoints));
         $points = '<DIV CLASS="qam-logged-in-points">' . $pointshtml . '</DIV>';
         return $points;
     }
     return null;
 }
function qa_post_html_fields($post, $userid, $cookieid, $usershtml, $dummy, $options = array())
{
    if (qa_to_override(__FUNCTION__)) {
        $args = func_get_args();
        return qa_call_override(__FUNCTION__, $args);
    }
    require_once QA_INCLUDE_DIR . 'qa-app-updates.php';
    if (isset($options['blockwordspreg'])) {
        require_once QA_INCLUDE_DIR . 'qa-util-string.php';
    }
    $fields = array();
    $fields['raw'] = $post;
    //	Useful stuff used throughout function
    $postid = $post['postid'];
    $isquestion = $post['basetype'] == 'Q';
    $isanswer = $post['basetype'] == 'A';
    $isbyuser = qa_post_is_by_user($post, $userid, $cookieid);
    $anchor = urlencode(qa_anchor($post['basetype'], $postid));
    $elementid = isset($options['elementid']) ? $options['elementid'] : $anchor;
    $microformats = @$options['microformats'];
    $isselected = @$options['isselected'];
    //	High level information
    $fields['hidden'] = @$post['hidden'];
    $fields['tags'] = 'ID="' . qa_html($elementid) . '"';
    if ($microformats) {
        $fields['classes'] = 'hentry ' . ($isquestion ? 'question' : ($isanswer ? $isselected ? 'answer answer-selected' : 'answer' : 'comment'));
    }
    //	Question-specific stuff (title, URL, tags, answer count, category)
    if ($isquestion) {
        if (isset($post['title'])) {
            $fields['url'] = qa_q_path_html($postid, $post['title']);
            if (isset($options['blockwordspreg'])) {
                $post['title'] = qa_block_words_replace($post['title'], $options['blockwordspreg']);
            }
            $fields['title'] = qa_html($post['title']);
            if ($microformats) {
                $fields['title'] = '<SPAN CLASS="entry-title">' . $fields['title'] . '</SPAN>';
            }
            /*if (isset($post['score'])) // useful for setting match thresholds
            		$fields['title'].=' <SMALL>('.$post['score'].')</SMALL>';*/
        }
        if (@$options['tagsview'] && isset($post['tags'])) {
            $fields['q_tags'] = array();
            $tags = qa_tagstring_to_tags($post['tags']);
            foreach ($tags as $tag) {
                if (isset($options['blockwordspreg']) && count(qa_block_words_match_all($tag, $options['blockwordspreg']))) {
                    // skip censored tags
                    continue;
                }
                $fields['q_tags'][] = qa_tag_html($tag, $microformats);
            }
        }
        if (@$options['answersview'] && isset($post['acount'])) {
            $fields['answers_raw'] = $post['acount'];
            $fields['answers'] = $post['acount'] == 1 ? qa_lang_html_sub_split('main/1_answer', '1', '1') : qa_lang_html_sub_split('main/x_answers', number_format($post['acount']));
            $fields['answer_selected'] = isset($post['selchildid']);
        }
        if (@$options['viewsview'] && isset($post['views'])) {
            $fields['views_raw'] = $post['views'];
            $fields['views'] = $post['views'] == 1 ? qa_lang_html_sub_split('main/1_view', '1', '1') : qa_lang_html_sub_split('main/x_views', number_format($post['views']));
        }
        if (@$options['categoryview'] && isset($post['categoryname']) && isset($post['categorybackpath'])) {
            $fields['where'] = qa_lang_html_sub_split('main/in_category_x', '<A HREF="' . qa_path_html(@$options['categorypathprefix'] . implode('/', array_reverse(explode('/', $post['categorybackpath'])))) . '" CLASS="qa-category-link">' . qa_html($post['categoryname']) . '</A>');
        }
    }
    //	Answer-specific stuff (selection)
    if ($isanswer) {
        $fields['selected'] = $isselected;
        if ($isselected) {
            $fields['select_text'] = qa_lang_html('question/select_text');
        }
    }
    //	Post content
    if (@$options['contentview'] && !empty($post['content'])) {
        $viewer = qa_load_viewer($post['content'], $post['format']);
        $fields['content'] = $viewer->get_html($post['content'], $post['format'], array('blockwordspreg' => @$options['blockwordspreg'], 'showurllinks' => @$options['showurllinks'], 'linksnewwindow' => @$options['linksnewwindow']));
        if ($microformats) {
            $fields['content'] = '<DIV CLASS="entry-content">' . $fields['content'] . '</DIV>';
        }
        $fields['content'] = '<A NAME="' . qa_html($postid) . '"></A>' . $fields['content'];
        // this is for backwards compatibility with any existing links using the old style of anchor
        // that contained the post id only (changed to be valid under W3C specifications)
    }
    //	Voting stuff
    if (@$options['voteview']) {
        $voteview = $options['voteview'];
        //	Calculate raw values and pass through
        $upvotes = (int) @$post['upvotes'];
        $downvotes = (int) @$post['downvotes'];
        $netvotes = (int) ($upvotes - $downvotes);
        $fields['upvotes_raw'] = $upvotes;
        $fields['downvotes_raw'] = $downvotes;
        $fields['netvotes_raw'] = $netvotes;
        //	Create HTML versions...
        $upvoteshtml = qa_html($upvotes);
        $downvoteshtml = qa_html($downvotes);
        if ($netvotes >= 1) {
            $netvoteshtml = '+' . qa_html($netvotes);
        } elseif ($netvotes <= -1) {
            $netvoteshtml = '&ndash;' . qa_html(-$netvotes);
        } else {
            $netvoteshtml = '0';
        }
        //	...with microformats if appropriate
        if ($microformats) {
            $netvoteshtml .= '<SPAN CLASS="votes-up"><SPAN CLASS="value-title" TITLE="' . $upvoteshtml . '"></SPAN></SPAN>' . '<SPAN CLASS="votes-down"><SPAN CLASS="value-title" TITLE="' . $downvoteshtml . '"></SPAN></SPAN>';
            $upvoteshtml = '<SPAN CLASS="votes-up">' . $upvoteshtml . '</SPAN>';
            $downvoteshtml = '<SPAN CLASS="votes-down">' . $downvoteshtml . '</SPAN>';
        }
        //	Pass information on vote viewing
        //	$voteview will be one of:
        //	updown, updown-disabled-page, updown-disabled-level, updown-uponly-level
        //	net, net-disabled-page, net-disabled-level, net-uponly-level
        $fields['vote_view'] = substr($voteview, 0, 6) == 'updown' ? 'updown' : 'net';
        $fields['vote_on_page'] = strpos($voteview, '-disabled-page') ? 'disabled' : 'enabled';
        $fields['upvotes_view'] = $upvotes == 1 ? qa_lang_html_sub_split('main/1_liked', $upvoteshtml, '1') : qa_lang_html_sub_split('main/x_liked', $upvoteshtml);
        $fields['downvotes_view'] = $downvotes == 1 ? qa_lang_html_sub_split('main/1_disliked', $downvoteshtml, '1') : qa_lang_html_sub_split('main/x_disliked', $downvoteshtml);
        $fields['netvotes_view'] = abs($netvotes) == 1 ? qa_lang_html_sub_split('main/1_vote', $netvoteshtml, '1') : qa_lang_html_sub_split('main/x_votes', $netvoteshtml);
        //	Voting buttons
        $fields['vote_tags'] = 'ID="voting_' . qa_html($postid) . '"';
        $onclick = 'onClick="return qa_vote_click(this);"';
        if ($fields['hidden']) {
            $fields['vote_state'] = 'disabled';
            $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html($isanswer ? 'main/vote_disabled_hidden_a' : 'main/vote_disabled_hidden_q') . '"';
            $fields['vote_down_tags'] = $fields['vote_up_tags'];
        } elseif ($isbyuser) {
            $fields['vote_state'] = 'disabled';
            $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html($isanswer ? 'main/vote_disabled_my_a' : 'main/vote_disabled_my_q') . '"';
            $fields['vote_down_tags'] = $fields['vote_up_tags'];
        } elseif (strpos($voteview, '-disabled-')) {
            $fields['vote_state'] = @$post['uservote'] > 0 ? 'voted_up_disabled' : (@$post['uservote'] < 0 ? 'voted_down_disabled' : 'disabled');
            if (strpos($voteview, '-disabled-page')) {
                $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_q_page_only') . '"';
            } else {
                $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_level') . '"';
            }
            $fields['vote_down_tags'] = $fields['vote_up_tags'];
        } elseif (@$post['uservote'] > 0) {
            $fields['vote_state'] = 'voted_up';
            $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html('main/voted_up_popup') . '" NAME="' . qa_html('vote_' . $postid . '_0_' . $elementid) . '" ' . $onclick;
            $fields['vote_down_tags'] = ' ';
        } elseif (@$post['uservote'] < 0) {
            $fields['vote_state'] = 'voted_down';
            $fields['vote_up_tags'] = ' ';
            $fields['vote_down_tags'] = 'TITLE="' . qa_lang_html('main/voted_down_popup') . '" NAME="' . qa_html('vote_' . $postid . '_0_' . $elementid) . '" ' . $onclick;
        } else {
            $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html('main/vote_up_popup') . '" NAME="' . qa_html('vote_' . $postid . '_1_' . $elementid) . '" ' . $onclick;
            // calculation new points for the case the user clicks on down or upvote button
            if ($isquestion) {
                $newpointsafterdownvote = qa_get_logged_in_points() + (@$post['uservote'] > 0 ? -1 * qa_opt('points_vote_up_q') : qa_opt('points_vote_down_q'));
                $newpointsafterupvote = qa_get_logged_in_points() + (@$post['uservote'] < 0 ? -1 * qa_opt('points_vote_down_q') : qa_opt('points_vote_up_q'));
            } else {
                $newpointsafterdownvote = qa_get_logged_in_points() + (@$post['uservote'] > 0 ? -1 * qa_opt('points_vote_up_a') : qa_opt('points_vote_down_a'));
                $newpointsafterupvote = qa_get_logged_in_points() + (@$post['uservote'] < 0 ? -1 * qa_opt('points_vote_down_a') : qa_opt('points_vote_up_a'));
            }
            if ($newpointsafterdownvote < 0) {
                // If after downvote user will have less than 0 points, then hide downvoting button
                if ($newpointsafterupvote < 0) {
                    // If after upvote user will have less than 0 points, then hide upvoting button
                    $fields['vote_state'] = 'disabled';
                    $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_level') . '"';
                    $fields['vote_down_tags'] = $fields['vote_up_tags'];
                } else {
                    // only hide downvoting button
                    $fields['vote_state'] = 'up_only';
                    $fields['vote_down_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_level') . '"';
                }
            } else {
                if ($newpointsafterupvote < 0) {
                    // only hide upvoting button
                    if (strpos($voteview, '-uponly-level')) {
                        $fields['vote_state'] = 'disabled';
                        $fields['vote_down_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_down') . '"';
                        $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_level') . '"';
                    } else {
                        // vote_state 'down_only' does not exist. Therfore use disabled state.
                        $fields['vote_state'] = 'disabled';
                        $fields['vote_down_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_down') . '"';
                        $fields['vote_up_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_level') . '"';
                    }
                } else {
                    // after click on either up or downvote button, points will be >0
                    if (strpos($voteview, '-uponly-level')) {
                        $fields['vote_state'] = 'up_only';
                        $fields['vote_down_tags'] = 'TITLE="' . qa_lang_html('main/vote_disabled_down') . '"';
                    } else {
                        $fields['vote_state'] = 'enabled';
                        $fields['vote_down_tags'] = 'TITLE="' . qa_lang_html('main/vote_down_popup') . '" NAME="' . qa_html('vote_' . $postid . '_-1_' . $elementid) . '" ' . $onclick;
                    }
                }
            }
        }
    }
    //	Flag count
    if (@$options['flagsview'] && @$post['flagcount']) {
        $fields['flags'] = $post['flagcount'] == 1 ? qa_lang_html_sub_split('main/1_flag', '1', '1') : qa_lang_html_sub_split('main/x_flags', $post['flagcount']);
    }
    //	Created when and by whom
    $fields['meta_order'] = qa_lang_html('main/meta_order');
    // sets ordering of meta elements which can be language-specific
    if (@$options['whatview']) {
        $fields['what'] = qa_lang_html($isquestion ? 'main/asked' : ($isanswer ? 'main/answered' : 'main/commented'));
        if (@$options['whatlink'] && !$isquestion) {
            $fields['what_url'] = qa_path_html(qa_request(), array('show' => $postid), null, null, qa_anchor($post['basetype'], $postid));
        }
    }
    if (isset($post['created']) && @$options['whenview']) {
        $fields['when'] = qa_when_to_html($post['created'], @$options['fulldatedays']);
        if ($microformats) {
            $fields['when']['data'] = '<SPAN CLASS="published"><SPAN CLASS="value-title" TITLE="' . gmdate('Y-m-d\\TH:i:sO', $post['created']) . '"></SPAN>' . $fields['when']['data'] . '</SPAN>';
        }
    }
    if (@$options['whoview']) {
        $fields['who'] = qa_who_to_html($isbyuser, @$post['userid'], $usershtml, @$options['ipview'] ? @$post['createip'] : null, $microformats);
        if (isset($post['points'])) {
            if (@$options['pointsview']) {
                $fields['who']['points'] = $post['points'] == 1 ? qa_lang_html_sub_split('main/1_point', '1', '1') : qa_lang_html_sub_split('main/x_points', qa_html(number_format($post['points'])));
            }
            if (isset($options['pointstitle'])) {
                $fields['who']['title'] = qa_get_points_title_html($post['points'], $options['pointstitle']);
            }
        }
        if (isset($post['level'])) {
            $fields['who']['level'] = qa_html(qa_user_level_string($post['level']));
        }
    }
    if (@$options['avatarsize'] > 0) {
        if (QA_FINAL_EXTERNAL_USERS) {
            $fields['avatar'] = qa_get_external_avatar_html($post['userid'], $options['avatarsize'], false);
        } else {
            $fields['avatar'] = qa_get_user_avatar_html(@$post['flags'], @$post['email'], @$post['handle'], @$post['avatarblobid'], @$post['avatarwidth'], @$post['avatarheight'], $options['avatarsize']);
        }
    }
    //	Updated when and by whom
    if (@$options['updateview'] && isset($post['updated']) && ($post['updatetype'] != QA_UPDATE_SELECTED || $isselected) && (!isset($post['created']) || $post['hidden'] && $post['updatetype'] == QA_UPDATE_VISIBLE || isset($post['closedbyid']) && $post['updatetype'] == QA_UPDATE_CLOSED || abs($post['updated'] - $post['created']) > 300 || $post['lastuserid'] != $post['userid'])) {
        switch ($post['updatetype']) {
            case QA_UPDATE_TYPE:
            case QA_UPDATE_PARENT:
                $langstring = 'main/moved';
                break;
            case QA_UPDATE_CATEGORY:
                $langstring = 'main/recategorized';
                break;
            case QA_UPDATE_VISIBLE:
                $langstring = $post['hidden'] ? 'main/hidden' : 'main/reshown';
                break;
            case QA_UPDATE_CLOSED:
                $langstring = isset($post['closedbyid']) ? 'main/closed' : 'main/reopened';
                break;
            case QA_UPDATE_TAGS:
                $langstring = 'main/retagged';
                break;
            case QA_UPDATE_SELECTED:
                $langstring = 'main/selected';
                break;
            default:
                $langstring = 'main/edited';
                break;
        }
        $fields['what_2'] = qa_lang_html($langstring);
        if (@$options['whenview']) {
            $fields['when_2'] = qa_when_to_html($post['updated'], @$options['fulldatedays']);
            if ($microformats) {
                $fields['when_2']['data'] = '<SPAN CLASS="updated"><SPAN CLASS="value-title" TITLE="' . gmdate('Y-m-d\\TH:i:sO', $post['updated']) . '"></SPAN>' . $fields['when_2']['data'] . '</SPAN>';
            }
        }
        if (isset($post['lastuserid']) && @$options['whoview']) {
            $fields['who_2'] = qa_who_to_html(isset($userid) && $post['lastuserid'] == $userid, $post['lastuserid'], $usershtml, @$options['ipview'] ? $post['lastip'] : null, false);
        }
    }
    //	That's it!
    return $fields;
}
function qa_permit_error($permitoption, $userid, $userlevel, $userflags, $userpoints = null)
{
    $permit = isset($permitoption) ? qa_opt($permitoption) : QA_PERMIT_ALL;
    if ($permit == QA_PERMIT_POINTS || $permit == QA_PERMIT_POINTS_CONFIRMED) {
        // deal with points threshold by converting as appropriate
        $permit = QA_PERMIT_EXPERTS;
        // by default, only special users pass this, but...
        if (isset($userid)) {
            if (!isset($userpoints) && $userid == qa_get_logged_in_userid()) {
                $userpoints = qa_get_logged_in_points();
            }
            // allow late retrieval of points (to avoid unnecessary DB query when using external users)
            if ($userpoints >= qa_opt($permitoption . '_points')) {
                $permit = $permit == QA_PERMIT_POINTS_CONFIRMED ? QA_PERMIT_CONFIRMED : QA_PERMIT_USERS;
            }
            // convert if user has enough points
        }
    }
    if ($permit >= QA_PERMIT_ALL) {
        $error = false;
    } elseif ($permit >= QA_PERMIT_USERS) {
        $error = isset($userid) ? false : 'login';
    } elseif ($permit >= QA_PERMIT_CONFIRMED) {
        if (!isset($userid)) {
            $error = 'login';
        } elseif (QA_FINAL_EXTERNAL_USERS || $userlevel >= QA_USER_LEVEL_EXPERT || $userflags & QA_USER_FLAGS_EMAIL_CONFIRMED || !qa_opt('confirm_user_emails')) {
            $error = false;
        } else {
            $error = 'confirm';
        }
    } elseif ($permit >= QA_PERMIT_EXPERTS) {
        $error = isset($userid) && $userlevel >= QA_USER_LEVEL_EXPERT ? false : 'level';
    } elseif ($permit >= QA_PERMIT_EDITORS) {
        $error = isset($userid) && $userlevel >= QA_USER_LEVEL_EDITOR ? false : 'level';
    } elseif ($permit >= QA_PERMIT_MODERATORS) {
        $error = isset($userid) && $userlevel >= QA_USER_LEVEL_MODERATOR ? false : 'level';
    } elseif ($permit >= QA_PERMIT_ADMINS) {
        $error = isset($userid) && $userlevel >= QA_USER_LEVEL_ADMIN ? false : 'level';
    } else {
        $error = isset($userid) && $userlevel >= QA_USER_LEVEL_SUPER ? false : 'level';
    }
    if (isset($userid) && $userflags & QA_USER_FLAGS_USER_BLOCKED && $error != 'level') {
        $error = 'userblock';
    }
    return $error;
}
Exemple #15
0
			<li id="user-nag">
				<a class="profile" href="<?php 
    echo qa_path_html('user/' . qa_get_logged_in_handle());
    ?>
">
				
					<img src="<?php 
    echo ra_get_avatar(qa_get_logged_in_handle(), 20, false);
    ?>
" />	
					<span><?php 
    echo ra_name(qa_get_logged_in_handle());
    ?>
</span>
					<span class="points"><?php 
    echo qa_get_logged_in_points();
    ?>
</span>
				</a>				
			</li>
			<li class="dropdown" id="menuLogin">
				<a class="dropdown-toggle user-tools" data-toggle="dropdown" href="#">
					<i class="icon-cog"></i>
				</a>
				
				<div class="dropdown-menu">				
					<ul class="user-nav">
						<li><a class="icon-profile" href="<?php 
    echo qa_path_html('user/' . qa_get_logged_in_handle());
    ?>
"><?php 
Exemple #16
0
 function logged_in()
 {
     qa_html_theme_base::logged_in();
     if (qa_is_logged_in()) {
         $userpoints = qa_get_logged_in_points();
         $username = qa_html(qa_get_logged_in_handle());
         $userid = qa_get_logged_in_userid();
         $user = qa_db_select_with_pending(qa_db_user_rank_selectspec($userid));
         $userrank = '';
         if (is_array($user)) {
             if (array_key_exists('rank', $user)) {
                 $userrank = '(#' . number_format((int) $user['rank']) . ')';
             }
         }
         $pointshtml = $userpoints == 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_lang_html_sub('main/x_points', qa_html(number_format($userpoints)));
         $this->output('<SPAN><a CLASS="qa-logged-in-points" href="index.php?qa=user&qa_1=' . $username . '#activity">' . $pointshtml . $userrank . '</a></SPAN>');
     }
 }