Esempio n. 1
0
function qa_page_q_single_click_a($answer, $question, $answers, $commentsfollows, $allowselectmove, &$error)
{
    $userid = qa_get_logged_in_userid();
    $handle = qa_get_logged_in_handle();
    $cookieid = qa_cookie_get();
    $prefix = 'a' . $answer['postid'] . '_';
    if (qa_clicked($prefix . 'doselect') && $question['aselectable'] && ($allowselectmove || !isset($question['selchildid']) && !qa_opt('do_close_on_select')) && qa_page_q_click_check_form_code($answer, $error)) {
        qa_question_set_selchildid($userid, $handle, $cookieid, $question, $answer['postid'], $answers);
        return true;
    }
    if (qa_clicked($prefix . 'dounselect') && $question['aselectable'] && $question['selchildid'] == $answer['postid'] && ($allowselectmove || !qa_opt('do_close_on_select')) && qa_page_q_click_check_form_code($answer, $error)) {
        qa_question_set_selchildid($userid, $handle, $cookieid, $question, null, $answers);
        return true;
    }
    if (qa_clicked($prefix . 'dohide') && $answer['hideable'] || qa_clicked($prefix . 'doreject') && $answer['moderatable']) {
        if (qa_page_q_click_check_form_code($answer, $error)) {
            qa_answer_set_hidden($answer, true, $userid, $handle, $cookieid, $question, $commentsfollows);
            return true;
        }
    }
    if (qa_clicked($prefix . 'doreshow') && $answer['reshowable'] || qa_clicked($prefix . 'doapprove') && $answer['moderatable']) {
        if (qa_page_q_click_check_form_code($answer, $error)) {
            if ($answer['moderatable'] || $answer['reshowimmed']) {
                $status = QA_POST_STATUS_NORMAL;
            } else {
                $in = qa_page_q_prepare_post_for_filters($answer);
                $filtermodules = qa_load_modules_with('filter', 'filter_answer');
                // run through filters but only for queued status
                foreach ($filtermodules as $filtermodule) {
                    $tempin = $in;
                    // always pass original answer in because we aren't modifying anything else
                    $filtermodule->filter_answer($tempin, $temperrors, $question, $answer);
                    $in['queued'] = $tempin['queued'];
                    // only preserve queued status in loop
                }
                $status = $in['queued'] ? QA_POST_STATUS_QUEUED : QA_POST_STATUS_NORMAL;
            }
            qa_answer_set_status($answer, $status, $userid, $handle, $cookieid, $question, $commentsfollows);
            return true;
        }
    }
    if (qa_clicked($prefix . 'dodelete') && $answer['deleteable'] && qa_page_q_click_check_form_code($answer, $error)) {
        qa_answer_delete($answer, $question, $userid, $handle, $cookieid);
        return true;
    }
    if (qa_clicked($prefix . 'doclaim') && $answer['claimable'] && qa_page_q_click_check_form_code($answer, $error)) {
        if (qa_user_limits_remaining(QA_LIMIT_ANSWERS)) {
            // already checked 'permit_post_a'
            qa_answer_set_userid($answer, $userid, $handle, $cookieid);
            return true;
        } else {
            $error = qa_lang_html('question/answer_limit');
        }
    }
    if (qa_clicked($prefix . 'doflag') && $answer['flagbutton'] && qa_page_q_click_check_form_code($answer, $error)) {
        require_once QA_INCLUDE_DIR . 'app/votes.php';
        $error = qa_flag_error_html($answer, $userid, qa_request());
        if (!$error) {
            if (qa_flag_set_tohide($answer, $userid, $handle, $cookieid, $question)) {
                qa_answer_set_hidden($answer, true, null, null, null, $question, $commentsfollows);
            }
            // hiding not really by this user so pass nulls
            return true;
        }
    }
    if (qa_clicked($prefix . 'dounflag') && $answer['unflaggable'] && qa_page_q_click_check_form_code($answer, $error)) {
        require_once QA_INCLUDE_DIR . 'app/votes.php';
        qa_flag_clear($answer, $userid, $handle, $cookieid);
        return true;
    }
    if (qa_clicked($prefix . 'doclearflags') && $answer['clearflaggable'] && qa_page_q_click_check_form_code($answer, $error)) {
        require_once QA_INCLUDE_DIR . 'app/votes.php';
        qa_flags_clear_all($answer, $userid, $handle, $cookieid);
        return true;
    }
    return false;
}
function qa_page_q_single_click_a($answer, $question, $answers, $commentsfollows, $allowselectmove, &$error)
{
    $userid = qa_get_logged_in_userid();
    $handle = qa_get_logged_in_handle();
    $cookieid = qa_cookie_get();
    $prefix = 'a' . $answer['postid'] . '_';
    if (qa_page_q_clicked($prefix . 'doselect') && $question['aselectable'] && ($allowselectmove || !isset($question['selchildid']) && !qa_opt('do_close_on_select'))) {
        qa_question_set_selchildid($userid, $handle, $cookieid, $question, $answer['postid'], $answers);
        return true;
    }
    if (qa_page_q_clicked($prefix . 'dounselect') && $question['aselectable'] && $question['selchildid'] == $answer['postid'] && ($allowselectmove || !qa_opt('do_close_on_select'))) {
        qa_question_set_selchildid($userid, $handle, $cookieid, $question, null, $answers);
        return true;
    }
    if (qa_page_q_clicked($prefix . 'dohide') && $answer['hideable'] || qa_page_q_clicked($prefix . 'doreject') && $answer['moderatable']) {
        qa_answer_set_hidden($answer, true, $userid, $handle, $cookieid, $question, $commentsfollows);
        return true;
    }
    if (qa_page_q_clicked($prefix . 'doreshow') && $answer['reshowable'] || qa_page_q_clicked($prefix . 'doapprove') && $answer['moderatable']) {
        qa_answer_set_hidden($answer, false, $userid, $handle, $cookieid, $question, $commentsfollows);
        return true;
    }
    if (qa_page_q_clicked($prefix . 'dodelete') && $answer['deleteable']) {
        qa_answer_delete($answer, $question, $userid, $handle, $cookieid);
        return true;
    }
    if (qa_page_q_clicked($prefix . 'doclaim') && $answer['claimable']) {
        if (qa_limits_remaining($userid, QA_LIMIT_ANSWERS)) {
            // already checked 'permit_post_a'
            qa_answer_set_userid($answer, $userid, $handle, $cookieid);
            return true;
        } else {
            $error = qa_lang_html('question/answer_limit');
        }
    }
    if (qa_page_q_clicked($prefix . 'doflag') && $answer['flagbutton']) {
        require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
        $error = qa_flag_error_html($answer, $userid, qa_request());
        if (!$error) {
            if (qa_flag_set_tohide($answer, $userid, $handle, $cookieid, $question)) {
                qa_answer_set_hidden($answer, true, null, null, null, $question, $commentsfollows);
            }
            // hiding not really by this user so pass nulls
            return true;
        }
    }
    if (qa_page_q_clicked($prefix . 'dounflag') && $answer['unflaggable']) {
        require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
        qa_flag_clear($answer, $userid, $handle, $cookieid);
        return true;
    }
    if (qa_page_q_clicked($prefix . 'doclearflags') && $answer['clearflaggable']) {
        require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
        qa_flags_clear_all($answer, $userid, $handle, $cookieid);
        return true;
    }
    return false;
}
Esempio n. 3
0
function qa_post_set_hidden($postid, $hidden = true, $byuserid = null)
{
    $oldpost = qa_post_get_full($postid, 'QAC');
    $byhandle = qa_post_userid_to_handle($byuserid);
    switch ($oldpost['basetype']) {
        case 'Q':
            $answers = qa_post_get_question_answers($postid);
            $commentsfollows = qa_post_get_question_commentsfollows($postid);
            $closepost = qa_post_get_question_closepost($postid);
            qa_question_set_hidden($oldpost, $hidden, $byuserid, $byhandle, null, $answers, $commentsfollows, $closepost);
            break;
        case 'A':
            $question = qa_post_get_full($oldpost['parentid'], 'Q');
            $commentsfollows = qa_post_get_answer_commentsfollows($postid);
            qa_answer_set_hidden($oldpost, $hidden, $byuserid, $byhandle, null, $question, $commentsfollows);
            break;
        case 'C':
            $parent = qa_post_get_full($oldpost['parentid'], 'QA');
            $question = qa_post_parent_to_question($parent);
            qa_comment_set_hidden($oldpost, $hidden, $byuserid, $byhandle, null, $question, $parent);
            break;
    }
}
 if (qa_clicked('doclaima_' . $answerid) && $answer['claimable']) {
     if (qa_limits_remaining($qa_login_userid, 'A')) {
         // already checked 'permit_post_a'
         qa_answer_set_userid($answer, $qa_login_userid, qa_get_logged_in_handle(), $qa_cookieid);
         qa_report_write_action($qa_login_userid, $qa_cookieid, 'a_claim', $questionid, $answerid, null);
         qa_redirect($qa_request, null, null, null, qa_anchor('A', $answerid));
     } else {
         $pageerror = qa_lang_html('question/answer_limit');
     }
 }
 if (qa_clicked('doflaga_' . $answerid) && $answer['flagbutton']) {
     require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
     $pageerror = qa_flag_error_html($answer, $qa_login_userid, $qa_request);
     if (!$pageerror) {
         if (qa_flag_set_tohide($answer, $qa_login_userid, qa_get_logged_in_handle(), $qa_cookieid, $question)) {
             qa_answer_set_hidden($answer, true, null, null, null, $question, $commentsfollows);
         }
         // hiding not really by this user so pass nulls
         qa_redirect($qa_request, null, null, null, qa_anchor('A', $answerid));
     }
 }
 if (qa_clicked('dounflaga_' . $answerid) && $answer['unflaggable']) {
     require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
     qa_flag_clear($answer, $qa_login_userid, qa_get_logged_in_handle(), $qa_cookieid);
     qa_redirect($qa_request, null, null, null, qa_anchor('A', $answerid));
 }
 if (qa_clicked('doclearflagsa_' . $answerid) && $answer['clearflaggable']) {
     require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
     qa_flags_clear_all($answer, $qa_login_userid, qa_get_logged_in_handle(), $qa_cookieid);
     qa_redirect($qa_request, null, null, null, qa_anchor('A', $answerid));
 }