Commit 8b5b5866 by Scott

Coding style (AJAX pages)

parent b86d4256
......@@ -20,84 +20,79 @@
More about this license: http://www.question2answer.org/license.php
*/
require_once QA_INCLUDE_DIR.'app/users.php';
require_once QA_INCLUDE_DIR.'app/limits.php';
require_once QA_INCLUDE_DIR.'db/selects.php';
require_once QA_INCLUDE_DIR . 'app/users.php';
require_once QA_INCLUDE_DIR . 'app/limits.php';
require_once QA_INCLUDE_DIR . 'db/selects.php';
// Load relevant information about this question
// Load relevant information about this question
$questionid=qa_post_text('a_questionid');
$userid=qa_get_logged_in_userid();
$questionid = qa_post_text('a_questionid');
$userid = qa_get_logged_in_userid();
list($question, $childposts)=qa_db_select_with_pending(
qa_db_full_post_selectspec($userid, $questionid),
qa_db_full_child_posts_selectspec($userid, $questionid)
);
list($question, $childposts) = qa_db_select_with_pending(
qa_db_full_post_selectspec($userid, $questionid),
qa_db_full_child_posts_selectspec($userid, $questionid)
);
// Check if the question exists, is not closed, and whether the user has permission to do this
// Check if the question exists, is not closed, and whether the user has permission to do this
if ((@$question['basetype']=='Q') && (!isset($question['closedbyid'])) && !qa_user_post_permit_error('permit_post_a', $question, QA_LIMIT_ANSWERS)) {
require_once QA_INCLUDE_DIR.'app/captcha.php';
require_once QA_INCLUDE_DIR.'app/format.php';
require_once QA_INCLUDE_DIR.'app/post-create.php';
require_once QA_INCLUDE_DIR.'app/cookies.php';
require_once QA_INCLUDE_DIR.'pages/question-view.php';
require_once QA_INCLUDE_DIR.'pages/question-submit.php';
if (@$question['basetype'] == 'Q' && !isset($question['closedbyid']) && !qa_user_post_permit_error('permit_post_a', $question, QA_LIMIT_ANSWERS)) {
require_once QA_INCLUDE_DIR . 'app/captcha.php';
require_once QA_INCLUDE_DIR . 'app/format.php';
require_once QA_INCLUDE_DIR . 'app/post-create.php';
require_once QA_INCLUDE_DIR . 'app/cookies.php';
require_once QA_INCLUDE_DIR . 'pages/question-view.php';
require_once QA_INCLUDE_DIR . 'pages/question-submit.php';
// Try to create the new answer
// Try to create the new answer
$usecaptcha=qa_user_use_captcha(qa_user_level_for_post($question));
$answers=qa_page_q_load_as($question, $childposts);
$answerid=qa_page_q_add_a_submit($question, $answers, $usecaptcha, $in, $errors);
$usecaptcha = qa_user_use_captcha(qa_user_level_for_post($question));
$answers = qa_page_q_load_as($question, $childposts);
$answerid = qa_page_q_add_a_submit($question, $answers, $usecaptcha, $in, $errors);
// If successful, page content will be updated via Ajax
// If successful, page content will be updated via Ajax
if (isset($answerid)) {
$answer=qa_db_select_with_pending(qa_db_full_post_selectspec($userid, $answerid));
if (isset($answerid)) {
$answer = qa_db_select_with_pending(qa_db_full_post_selectspec($userid, $answerid));
$question=$question+qa_page_q_post_rules($question, null, null, $childposts); // array union
$answer=$answer+qa_page_q_post_rules($answer, $question, $answers, null);
$question = $question + qa_page_q_post_rules($question, null, null, $childposts); // array union
$answer = $answer + qa_page_q_post_rules($answer, $question, $answers, null);
$usershtml=qa_userids_handles_html(array($answer), true);
$usershtml = qa_userids_handles_html(array($answer), true);
$a_view=qa_page_q_answer_view($question, $answer, false, $usershtml, false);
$a_view = qa_page_q_answer_view($question, $answer, false, $usershtml, false);
$themeclass=qa_load_theme_class(qa_get_site_theme(), 'ajax-answer', null, null);
$themeclass->initialize();
$themeclass = qa_load_theme_class(qa_get_site_theme(), 'ajax-answer', null, null);
$themeclass->initialize();
echo "QA_AJAX_RESPONSE\n1\n";
echo "QA_AJAX_RESPONSE\n1\n";
// Send back whether the 'answer' button should still be visible
// Send back whether the 'answer' button should still be visible
echo (int)qa_opt('allow_multi_answers')."\n";
echo (int)qa_opt('allow_multi_answers') . "\n";
// Send back the count of answers
// Send back the count of answers
$countanswers=$question['acount']+1;
$countanswers = $question['acount'] + 1;
if ($countanswers==1)
echo qa_lang_html('question/1_answer_title')."\n";
else
echo qa_lang_html_sub('question/x_answers_title', $countanswers)."\n";
if ($countanswers == 1)
echo qa_lang_html('question/1_answer_title') . "\n";
else
echo qa_lang_html_sub('question/x_answers_title', $countanswers) . "\n";
// Send back the HTML
// Send back the HTML
$themeclass->a_list_item($a_view);
$themeclass->a_list_item($a_view);
return;
}
return;
}
}
echo "QA_AJAX_RESPONSE\n0\n"; // fall back to non-Ajax submission if there were any problems
/*
Omit PHP closing tag to help avoid accidental output
*/
\ No newline at end of file
echo "QA_AJAX_RESPONSE\n0\n"; // fall back to non-Ajax submission if there were any problems
......@@ -20,86 +20,82 @@
More about this license: http://www.question2answer.org/license.php
*/
require_once QA_INCLUDE_DIR.'db/selects.php';
require_once QA_INCLUDE_DIR.'util/string.php';
require_once QA_INCLUDE_DIR.'app/users.php';
require_once QA_INCLUDE_DIR.'app/format.php';
require_once QA_INCLUDE_DIR . 'db/selects.php';
require_once QA_INCLUDE_DIR . 'util/string.php';
require_once QA_INCLUDE_DIR . 'app/users.php';
require_once QA_INCLUDE_DIR . 'app/format.php';
// Collect the information we need from the database
// Collect the information we need from the database
$intitle = qa_post_text('title');
$doaskcheck = qa_opt('do_ask_check_qs');
$doexampletags = qa_using_tags() && qa_opt('do_example_tags');
$intitle = qa_post_text('title');
$doaskcheck = qa_opt('do_ask_check_qs');
$doexampletags = qa_using_tags() && qa_opt('do_example_tags');
if ($doaskcheck || $doexampletags) {
$countqs = max($doexampletags ? QA_DB_RETRIEVE_ASK_TAG_QS : 0, $doaskcheck ? qa_opt('page_size_ask_check_qs') : 0);
if ($doaskcheck || $doexampletags) {
$countqs = max($doexampletags ? QA_DB_RETRIEVE_ASK_TAG_QS : 0, $doaskcheck ? qa_opt('page_size_ask_check_qs') : 0);
$relatedquestions = qa_db_select_with_pending(
qa_db_search_posts_selectspec(null, qa_string_to_words($intitle), null, null, null, null, 0, false, $countqs)
);
}
$relatedquestions = qa_db_select_with_pending(
qa_db_search_posts_selectspec(null, qa_string_to_words($intitle), null, null, null, null, 0, false, $countqs)
);
}
// Collect example tags if appropriate
// Collect example tags if appropriate
if ($doexampletags) {
$tagweight = array();
foreach ($relatedquestions as $question) {
$tags = qa_tagstring_to_tags($question['tags']);
foreach ($tags as $tag)
@$tagweight[$tag] += exp($question['score']);
if ($doexampletags) {
$tagweight = array();
foreach ($relatedquestions as $question) {
$tags = qa_tagstring_to_tags($question['tags']);
foreach ($tags as $tag) {
@$tagweight[$tag] += exp($question['score']);
}
}
arsort($tagweight, SORT_NUMERIC);
arsort($tagweight, SORT_NUMERIC);
$exampletags = array();
$exampletags = array();
$minweight = exp(qa_match_to_min_score(qa_opt('match_example_tags')));
$maxcount = qa_opt('page_size_ask_tags');
$minweight = exp(qa_match_to_min_score(qa_opt('match_example_tags')));
$maxcount = qa_opt('page_size_ask_tags');
foreach ($tagweight as $tag => $weight) {
if ($weight < $minweight)
break;
foreach ($tagweight as $tag => $weight) {
if ($weight < $minweight)
break;
$exampletags[] = $tag;
if (count($exampletags) >= $maxcount)
break;
}
$exampletags[] = $tag;
if (count($exampletags) >= $maxcount)
break;
}
else
$exampletags = array();
} else {
$exampletags = array();
}
// Output the response header and example tags
echo "QA_AJAX_RESPONSE\n1\n";
// Output the response header and example tags
echo strtr(qa_html(implode(',', $exampletags)), "\r\n", ' ') . "\n";
echo "QA_AJAX_RESPONSE\n1\n";
echo strtr(qa_html(implode(',', $exampletags)), "\r\n", ' ') . "\n";
// Collect and output the list of related questions
if ($doaskcheck) {
$minscore = qa_match_to_min_score(qa_opt('match_ask_check_qs'));
$maxcount = qa_opt('page_size_ask_check_qs');
// Collect and output the list of related questions
$relatedquestions = array_slice($relatedquestions, 0, $maxcount);
$limitedquestions = array();
if ($doaskcheck) {
$minscore = qa_match_to_min_score(qa_opt('match_ask_check_qs'));
$maxcount = qa_opt('page_size_ask_check_qs');
foreach ($relatedquestions as $question) {
if ($question['score'] < $minscore)
break;
$relatedquestions = array_slice($relatedquestions, 0, $maxcount);
$limitedquestions = array();
$limitedquestions[] = $question;
}
foreach ($relatedquestions as $question) {
if ($question['score'] < $minscore)
break;
$themeclass = qa_load_theme_class(qa_get_site_theme(), 'ajax-asktitle', null, null);
$themeclass->initialize();
$themeclass->q_ask_similar($limitedquestions, qa_lang_html('question/ask_same_q'));
$limitedquestions[] = $question;
}
/*
Omit PHP closing tag to help avoid accidental output
*/
$themeclass = qa_load_theme_class(qa_get_site_theme(), 'ajax-asktitle', null, null);
$themeclass->initialize();
$themeclass->q_ask_similar($limitedquestions, qa_lang_html('question/ask_same_q'));
}
......@@ -20,101 +20,94 @@
More about this license: http://www.question2answer.org/license.php
*/
require_once QA_INCLUDE_DIR.'app/cookies.php';
require_once QA_INCLUDE_DIR.'app/format.php';
require_once QA_INCLUDE_DIR.'app/users.php';
require_once QA_INCLUDE_DIR.'db/selects.php';
require_once QA_INCLUDE_DIR.'pages/question-view.php';
require_once QA_INCLUDE_DIR.'pages/question-submit.php';
require_once QA_INCLUDE_DIR.'util/sort.php';
require_once QA_INCLUDE_DIR . 'app/cookies.php';
require_once QA_INCLUDE_DIR . 'app/format.php';
require_once QA_INCLUDE_DIR . 'app/users.php';
require_once QA_INCLUDE_DIR . 'db/selects.php';
require_once QA_INCLUDE_DIR . 'pages/question-view.php';
require_once QA_INCLUDE_DIR . 'pages/question-submit.php';
require_once QA_INCLUDE_DIR . 'util/sort.php';
// Load relevant information about this answer
// Load relevant information about this answer
$answerid=qa_post_text('answerid');
$questionid=qa_post_text('questionid');
$answerid = qa_post_text('answerid');
$questionid = qa_post_text('questionid');
$userid=qa_get_logged_in_userid();
$userid = qa_get_logged_in_userid();
list($answer, $question, $qchildposts, $achildposts)=qa_db_select_with_pending(
qa_db_full_post_selectspec($userid, $answerid),
qa_db_full_post_selectspec($userid, $questionid),
qa_db_full_child_posts_selectspec($userid, $questionid),
qa_db_full_child_posts_selectspec($userid, $answerid)
);
list($answer, $question, $qchildposts, $achildposts) = qa_db_select_with_pending(
qa_db_full_post_selectspec($userid, $answerid),
qa_db_full_post_selectspec($userid, $questionid),
qa_db_full_child_posts_selectspec($userid, $questionid),
qa_db_full_child_posts_selectspec($userid, $answerid)
);
// Check if there was an operation that succeeded
// Check if there was an operation that succeeded
if (
(@$answer['basetype']=='A') &&
(@$question['basetype']=='Q')
) {
$answers=qa_page_q_load_as($question, $qchildposts);
if (@$answer['basetype'] == 'A' && @$question['basetype'] == 'Q') {
$answers = qa_page_q_load_as($question, $qchildposts);
$question=$question+qa_page_q_post_rules($question, null, null, $qchildposts); // array union
$answer=$answer+qa_page_q_post_rules($answer, $question, $qchildposts, $achildposts);
$question = $question + qa_page_q_post_rules($question, null, null, $qchildposts); // array union
$answer = $answer + qa_page_q_post_rules($answer, $question, $qchildposts, $achildposts);
if (qa_page_q_single_click_a($answer, $question, $answers, $achildposts, false, $error)) {
list($answer, $question)=qa_db_select_with_pending(
qa_db_full_post_selectspec($userid, $answerid),
qa_db_full_post_selectspec($userid, $questionid)
);
if (qa_page_q_single_click_a($answer, $question, $answers, $achildposts, false, $error)) {
list($answer, $question) = qa_db_select_with_pending(
qa_db_full_post_selectspec($userid, $answerid),
qa_db_full_post_selectspec($userid, $questionid)
);
// If so, page content to be updated via Ajax
// If so, page content to be updated via Ajax
echo "QA_AJAX_RESPONSE\n1\n";
echo "QA_AJAX_RESPONSE\n1\n";
// Send back new count of answers
// Send back new count of answers
$countanswers=$question['acount'];
$countanswers = $question['acount'];
if ($countanswers==1)
echo qa_lang_html('question/1_answer_title');
else
echo qa_lang_html_sub('question/x_answers_title', $countanswers);
if ($countanswers == 1)
echo qa_lang_html('question/1_answer_title');
else
echo qa_lang_html_sub('question/x_answers_title', $countanswers);
// If the answer was not deleted....
// If the answer was not deleted....
if (isset($answer)) {
$question=$question+qa_page_q_post_rules($question, null, null, $qchildposts); // array union
$answer=$answer+qa_page_q_post_rules($answer, $question, $qchildposts, $achildposts);
if (isset($answer)) {
$question = $question + qa_page_q_post_rules($question, null, null, $qchildposts); // array union
$answer = $answer + qa_page_q_post_rules($answer, $question, $qchildposts, $achildposts);
$commentsfollows=qa_page_q_load_c_follows($question, $qchildposts, $achildposts);
$commentsfollows = qa_page_q_load_c_follows($question, $qchildposts, $achildposts);
foreach ($commentsfollows as $key => $commentfollow)
$commentsfollows[$key]=$commentfollow+qa_page_q_post_rules($commentfollow, $answer, $commentsfollows, null);
$usershtml=qa_userids_handles_html(array_merge(array($answer), $commentsfollows), true);
qa_sort_by($commentsfollows, 'created');
foreach ($commentsfollows as $key => $commentfollow) {
$commentsfollows[$key] = $commentfollow + qa_page_q_post_rules($commentfollow, $answer, $commentsfollows, null);
}
$a_view=qa_page_q_answer_view($question, $answer, ($answer['postid']==$question['selchildid']) && ($answer['type']=='A'),
$usershtml, false);
$usershtml = qa_userids_handles_html(array_merge(array($answer), $commentsfollows), true);
qa_sort_by($commentsfollows, 'created');
$a_view['c_list']=qa_page_q_comment_follow_list($question, $answer, $commentsfollows, false, $usershtml, false, null);
$a_view = qa_page_q_answer_view($question, $answer, ($answer['postid'] == $question['selchildid'] && $answer['type'] == 'A'),
$usershtml, false);
$themeclass=qa_load_theme_class(qa_get_site_theme(), 'ajax-answer', null, null);
$themeclass->initialize();
$a_view['c_list'] = qa_page_q_comment_follow_list($question, $answer, $commentsfollows, false, $usershtml, false, null);
$themeclass = qa_load_theme_class(qa_get_site_theme(), 'ajax-answer', null, null);
$themeclass->initialize();
// ... send back the HTML for it
echo "\n";
// ... send back the HTML for it
$themeclass->a_list_item($a_view);
}
echo "\n";
return;
$themeclass->a_list_item($a_view);
}
}
echo "QA_AJAX_RESPONSE\n0\n"; // fall back to non-Ajax submission if something failed
return;
}
}
/*
Omit PHP closing tag to help avoid accidental output
*/
\ No newline at end of file
echo "QA_AJAX_RESPONSE\n0\n"; // fall back to non-Ajax submission if something failed
......@@ -20,73 +20,68 @@
More about this license: http://www.question2answer.org/license.php
*/
// Output this header as early as possible
// Output this header as early as possible
header('Content-Type: text/plain; charset=utf-8');
header('Content-Type: text/plain; charset=utf-8');
// Ensure no PHP errors are shown in the Ajax response
// Ensure no PHP errors are shown in the Ajax response
@ini_set('display_errors', 0);
@ini_set('display_errors', 0);
// Load the Q2A base file which sets up a bunch of crucial functions
// Load the Q2A base file which sets up a bunch of crucial functions
require 'qa-base.php';
require 'qa-base.php';
qa_report_process_stage('init_ajax');
qa_report_process_stage('init_ajax');
// Get general Ajax parameters from the POST payload, and clear $_GET
// Get general Ajax parameters from the POST payload, and clear $_GET
qa_set_request(qa_post_text('qa_request'), qa_post_text('qa_root'));
qa_set_request(qa_post_text('qa_request'), qa_post_text('qa_root'));
$_GET=array(); // for qa_self_html()
$_GET = array(); // for qa_self_html()
// Database failure handler
// Database failure handler
function qa_ajax_db_fail_handler()
{
echo "QA_AJAX_RESPONSE\n0\nA database error occurred.";
qa_exit('error');
}
function qa_ajax_db_fail_handler()
{
echo "QA_AJAX_RESPONSE\n0\nA database error occurred.";
qa_exit('error');
}
// Perform the appropriate Ajax operation
// Perform the appropriate Ajax operation
$routing=array(
'notice' => 'notice.php',
'favorite' => 'favorite.php',
'vote' => 'vote.php',
'recalc' => 'recalc.php',
'mailing' => 'mailing.php',
'version' => 'version.php',
'category' => 'category.php',
'asktitle' => 'asktitle.php',
'answer' => 'answer.php',
'comment' => 'comment.php',
'click_a' => 'click-answer.php',
'click_c' => 'click-comment.php',
'click_admin' => 'click-admin.php',
'show_cs' => 'show-comments.php',
'wallpost' => 'wallpost.php',
'click_wall' => 'click-wall.php',
'click_pm' => 'click-pm.php',
);
$routing = array(
'notice' => 'notice.php',
'favorite' => 'favorite.php',
'vote' => 'vote.php',
'recalc' => 'recalc.php',
'mailing' => 'mailing.php',
'version' => 'version.php',
'category' => 'category.php',
'asktitle' => 'asktitle.php',
'answer' => 'answer.php',
'comment' => 'comment.php',
'click_a' => 'click-answer.php',
'click_c' => 'click-comment.php',
'click_admin' => 'click-admin.php',
'show_cs' => 'show-comments.php',
'wallpost' => 'wallpost.php',
'click_wall' => 'click-wall.php',
'click_pm' => 'click-pm.php',
);
$operation=qa_post_text('qa_operation');
$operation = qa_post_text('qa_operation');
if (isset($routing[$operation])) {
qa_db_connect('qa_ajax_db_fail_handler');
if (isset($routing[$operation])) {
qa_db_connect('qa_ajax_db_fail_handler');
qa_initialize_buffering();
require QA_INCLUDE_DIR.'ajax/'.$routing[$operation];
qa_initialize_buffering();
require QA_INCLUDE_DIR . 'ajax/' . $routing[$operation];
qa_db_disconnect();
}
/*
Omit PHP closing tag to help avoid accidental output
*/
\ No newline at end of file
qa_db_disconnect();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment