Commit ac597698 by Scott

Coding style (qa-page.php, app/page.php)

parent d6aa8810
...@@ -20,45 +20,45 @@ ...@@ -20,45 +20,45 @@
More about this license: http://www.question2answer.org/license.php More about this license: http://www.question2answer.org/license.php
*/ */
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
header('Location: ../'); header('Location: ../');
exit; exit;
} }
require_once QA_INCLUDE_DIR.'app/cookies.php'; require_once QA_INCLUDE_DIR . 'app/cookies.php';
require_once QA_INCLUDE_DIR.'app/format.php'; require_once QA_INCLUDE_DIR . 'app/format.php';
require_once QA_INCLUDE_DIR.'app/users.php'; require_once QA_INCLUDE_DIR . 'app/users.php';
require_once QA_INCLUDE_DIR.'app/options.php'; require_once QA_INCLUDE_DIR . 'app/options.php';
require_once QA_INCLUDE_DIR.'db/selects.php'; require_once QA_INCLUDE_DIR . 'db/selects.php';
function qa_page_db_fail_handler($type, $errno=null, $error=null, $query=null) /**
/* * Standard database failure handler function which bring up the install/repair/upgrade page
Standard database failure handler function which bring up the install/repair/upgrade page */
*/ function qa_page_db_fail_handler($type, $errno = null, $error = null, $query = null)
{ {
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
$pass_failure_type=$type; $pass_failure_type = $type;
$pass_failure_errno=$errno; $pass_failure_errno = $errno;
$pass_failure_error=$error; $pass_failure_error = $error;
$pass_failure_query=$query; $pass_failure_query = $query;
require_once QA_INCLUDE_DIR.'qa-install.php'; require_once QA_INCLUDE_DIR . 'qa-install.php';
qa_exit('error'); qa_exit('error');
} }
function qa_page_queue_pending() /**
/* * Queue any pending requests which are required independent of which page will be shown
Queue any pending requests which are required independent of which page will be shown */
*/ function qa_page_queue_pending()
{ {
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
qa_preload_options(); qa_preload_options();
$loginuserid=qa_get_logged_in_userid(); $loginuserid = qa_get_logged_in_userid();
if (isset($loginuserid)) { if (isset($loginuserid)) {
if (!QA_FINAL_EXTERNAL_USERS) if (!QA_FINAL_EXTERNAL_USERS)
...@@ -73,28 +73,28 @@ ...@@ -73,28 +73,28 @@
qa_db_queue_pending_select('iplimits', qa_db_ip_limits_selectspec(qa_remote_ip_address())); qa_db_queue_pending_select('iplimits', qa_db_ip_limits_selectspec(qa_remote_ip_address()));
qa_db_queue_pending_select('navpages', qa_db_pages_selectspec(array('B', 'M', 'O', 'F'))); qa_db_queue_pending_select('navpages', qa_db_pages_selectspec(array('B', 'M', 'O', 'F')));
qa_db_queue_pending_select('widgets', qa_db_widgets_selectspec()); qa_db_queue_pending_select('widgets', qa_db_widgets_selectspec());
} }
function qa_load_state() /**
/* * Check the page state parameter and then remove it from the $_GET array
Check the page state parameter and then remove it from the $_GET array */
*/ function qa_load_state()
{ {
global $qa_state; global $qa_state;
$qa_state=qa_get('state'); $qa_state = qa_get('state');
unset($_GET['state']); // to prevent being passed through on forms unset($_GET['state']); // to prevent being passed through on forms
} }
function qa_check_login_modules() /**
/* * If no user is logged in, call through to the login modules to see if they want to log someone in
If no user is logged in, call through to the login modules to see if they want to log someone in */
*/ function qa_check_login_modules()
{ {
if ((!QA_FINAL_EXTERNAL_USERS) && !qa_is_logged_in()) { if (!QA_FINAL_EXTERNAL_USERS && !qa_is_logged_in()) {
$loginmodules=qa_load_modules_with('login', 'check_login'); $loginmodules = qa_load_modules_with('login', 'check_login');
foreach ($loginmodules as $loginmodule) { foreach ($loginmodules as $loginmodule) {
$loginmodule->check_login(); $loginmodule->check_login();
...@@ -102,36 +102,36 @@ ...@@ -102,36 +102,36 @@
qa_redirect(qa_request(), $_GET); qa_redirect(qa_request(), $_GET);
} }
} }
} }
function qa_check_page_clicks() /**
/* * React to any of the common buttons on a page for voting, favorites and closing a notice
React to any of the common buttons on a page for voting, favorites and closing a notice * If the user has Javascript on, these should come through Ajax rather than here.
If the user has Javascript on, these should come through Ajax rather than here. */
*/ function qa_check_page_clicks()
{ {
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
global $qa_page_error_html; global $qa_page_error_html;
if (qa_is_http_post()) if (qa_is_http_post()) {
foreach ($_POST as $field => $value) { foreach ($_POST as $field => $value) {
if (strpos($field, 'vote_')===0) { // voting... if (strpos($field, 'vote_') === 0) { // voting...
@list($dummy, $postid, $vote, $anchor)=explode('_', $field); @list($dummy, $postid, $vote, $anchor) = explode('_', $field);
if (isset($postid) && isset($vote)) { if (isset($postid) && isset($vote)) {
if (!qa_check_form_security_code('vote', qa_post_text('code'))) if (!qa_check_form_security_code('vote', qa_post_text('code')))
$qa_page_error_html=qa_lang_html('misc/form_security_again'); $qa_page_error_html = qa_lang_html('misc/form_security_again');
else { else {
require_once QA_INCLUDE_DIR.'app/votes.php'; require_once QA_INCLUDE_DIR . 'app/votes.php';
require_once QA_INCLUDE_DIR.'db/selects.php'; require_once QA_INCLUDE_DIR . 'db/selects.php';
$userid=qa_get_logged_in_userid(); $userid = qa_get_logged_in_userid();
$post=qa_db_select_with_pending(qa_db_full_post_selectspec($userid, $postid)); $post = qa_db_select_with_pending(qa_db_full_post_selectspec($userid, $postid));
$qa_page_error_html=qa_vote_error_html($post, $vote, $userid, qa_request()); $qa_page_error_html = qa_vote_error_html($post, $vote, $userid, qa_request());
if (!$qa_page_error_html) { if (!$qa_page_error_html) {
qa_vote_set($post, $userid, qa_get_logged_in_handle(), qa_cookie_get(), $vote); qa_vote_set($post, $userid, qa_get_logged_in_handle(), qa_cookie_get(), $vote);
...@@ -141,38 +141,38 @@ ...@@ -141,38 +141,38 @@
} }
} }
} elseif (strpos($field, 'favorite_')===0) { // favorites... } elseif (strpos($field, 'favorite_') === 0) { // favorites...
@list($dummy, $entitytype, $entityid, $favorite)=explode('_', $field); @list($dummy, $entitytype, $entityid, $favorite) = explode('_', $field);
if (isset($entitytype) && isset($entityid) && isset($favorite)) { if (isset($entitytype) && isset($entityid) && isset($favorite)) {
if (!qa_check_form_security_code('favorite-'.$entitytype.'-'.$entityid, qa_post_text('code'))) if (!qa_check_form_security_code('favorite-' . $entitytype . '-' . $entityid, qa_post_text('code')))
$qa_page_error_html=qa_lang_html('misc/form_security_again'); $qa_page_error_html = qa_lang_html('misc/form_security_again');
else { else {
require_once QA_INCLUDE_DIR.'app/favorites.php'; require_once QA_INCLUDE_DIR . 'app/favorites.php';
qa_user_favorite_set(qa_get_logged_in_userid(), qa_get_logged_in_handle(), qa_cookie_get(), $entitytype, $entityid, $favorite); qa_user_favorite_set(qa_get_logged_in_userid(), qa_get_logged_in_handle(), qa_cookie_get(), $entitytype, $entityid, $favorite);
qa_redirect(qa_request(), $_GET); qa_redirect(qa_request(), $_GET);
} }
} }
} elseif (strpos($field, 'notice_')===0) { // notices... } elseif (strpos($field, 'notice_') === 0) { // notices...
@list($dummy, $noticeid)=explode('_', $field); @list($dummy, $noticeid) = explode('_', $field);
if (isset($noticeid)) { if (isset($noticeid)) {
if (!qa_check_form_security_code('notice-'.$noticeid, qa_post_text('code'))) if (!qa_check_form_security_code('notice-' . $noticeid, qa_post_text('code')))
$qa_page_error_html=qa_lang_html('misc/form_security_again'); $qa_page_error_html = qa_lang_html('misc/form_security_again');
else { else {
if ($noticeid=='visitor') if ($noticeid == 'visitor')
setcookie('qa_noticed', 1, time()+86400*3650, '/', QA_COOKIE_DOMAIN, (bool)ini_get('session.cookie_secure'), true); setcookie('qa_noticed', 1, time() + 86400 * 3650, '/', QA_COOKIE_DOMAIN, (bool)ini_get('session.cookie_secure'), true);
elseif ($noticeid=='welcome') { elseif ($noticeid == 'welcome') {
require_once QA_INCLUDE_DIR.'db/users.php'; require_once QA_INCLUDE_DIR . 'db/users.php';
qa_db_user_set_flag(qa_get_logged_in_userid(), QA_USER_FLAGS_WELCOME_NOTICE, false); qa_db_user_set_flag(qa_get_logged_in_userid(), QA_USER_FLAGS_WELCOME_NOTICE, false);
} else { } else {
require_once QA_INCLUDE_DIR.'db/notices.php'; require_once QA_INCLUDE_DIR . 'db/notices.php';
qa_db_usernotice_delete(qa_get_logged_in_userid(), $noticeid); qa_db_usernotice_delete(qa_get_logged_in_userid(), $noticeid);
} }
...@@ -182,13 +182,14 @@ ...@@ -182,13 +182,14 @@
} }
} }
} }
}
/** /**
* Run the appropriate qa-page-*.php file for this request and return back the $qa_content it passed * Run the appropriate qa-page-*.php file for this request and return back the $qa_content it passed
*/ */
function qa_get_request_content() function qa_get_request_content()
{ {
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
$requestlower = strtolower(qa_request()); $requestlower = strtolower(qa_request());
...@@ -198,19 +199,19 @@ ...@@ -198,19 +199,19 @@
if (isset($routing[$requestlower])) { if (isset($routing[$requestlower])) {
qa_set_template($firstlower); qa_set_template($firstlower);
$qa_content = require QA_INCLUDE_DIR.$routing[$requestlower]; $qa_content = require QA_INCLUDE_DIR . $routing[$requestlower];
} elseif (isset($routing[$firstlower.'/'])) { } elseif (isset($routing[$firstlower . '/'])) {
qa_set_template($firstlower); qa_set_template($firstlower);
$qa_content = require QA_INCLUDE_DIR.$routing[$firstlower.'/']; $qa_content = require QA_INCLUDE_DIR . $routing[$firstlower . '/'];
} elseif (is_numeric($requestparts[0])) { } elseif (is_numeric($requestparts[0])) {
qa_set_template('question'); qa_set_template('question');
$qa_content = require QA_INCLUDE_DIR.'pages/question.php'; $qa_content = require QA_INCLUDE_DIR . 'pages/question.php';
} else { } else {
qa_set_template(strlen($firstlower) ? $firstlower : 'qa'); // will be changed later qa_set_template(strlen($firstlower) ? $firstlower : 'qa'); // will be changed later
$qa_content = require QA_INCLUDE_DIR.'pages/default.php'; // handles many other pages, including custom pages and page modules $qa_content = require QA_INCLUDE_DIR . 'pages/default.php'; // handles many other pages, including custom pages and page modules
} }
if ($firstlower == 'admin') { if ($firstlower == 'admin') {
...@@ -222,14 +223,14 @@ ...@@ -222,14 +223,14 @@
qa_set_form_security_key(); qa_set_form_security_key();
return $qa_content; return $qa_content;
} }
/** /**
* Output the $qa_content via the theme class after doing some pre-processing, mainly relating to Javascript * Output the $qa_content via the theme class after doing some pre-processing, mainly relating to Javascript
*/ */
function qa_output_content($qa_content) function qa_output_content($qa_content)
{ {
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
global $qa_template; global $qa_template;
...@@ -248,11 +249,10 @@ ...@@ -248,11 +249,10 @@
if (isset($navlink['selected_on'])) { if (isset($navlink['selected_on'])) {
// match specified paths // match specified paths
foreach ($navlink['selected_on'] as $path) { foreach ($navlink['selected_on'] as $path) {
if (strpos($requestlower.'$', $path) === 0) if (strpos($requestlower . '$', $path) === 0)
$selected = true; $selected = true;
} }
} } elseif ($requestlower === $navprefix || $requestlower . '$' === $navprefix) {
elseif ($requestlower === $navprefix || $requestlower.'$' === $navprefix) {
// exact match for array key // exact match for array key
$selected = true; $selected = true;
} }
...@@ -263,46 +263,46 @@ ...@@ -263,46 +263,46 @@
if (!empty($qa_content['notices'])) if (!empty($qa_content['notices']))
foreach ($qa_content['notices'] as $notice) { foreach ($qa_content['notices'] as $notice) {
$qa_content['script_onloads'][]=array( $qa_content['script_onloads'][] = array(
"qa_reveal(document.getElementById(".qa_js($notice['id'])."), 'notice');", "qa_reveal(document.getElementById(" . qa_js($notice['id']) . "), 'notice');",
); );
} }
// Handle maintenance mode // Handle maintenance mode
if (qa_opt('site_maintenance') && ($requestlower!='login')) { if (qa_opt('site_maintenance') && ($requestlower != 'login')) {
if (qa_get_logged_in_level()>=QA_USER_LEVEL_ADMIN) { if (qa_get_logged_in_level() >= QA_USER_LEVEL_ADMIN) {
if (!isset($qa_content['error'])) if (!isset($qa_content['error']))
$qa_content['error']=strtr(qa_lang_html('admin/maintenance_admin_only'), array( $qa_content['error'] = strtr(qa_lang_html('admin/maintenance_admin_only'), array(
'^1' => '<a href="'.qa_path_html('admin/general').'">', '^1' => '<a href="' . qa_path_html('admin/general') . '">',
'^2' => '</a>', '^2' => '</a>',
)); ));
} else { } else {
$qa_content=qa_content_prepare(); $qa_content = qa_content_prepare();
$qa_content['error']=qa_lang_html('misc/site_in_maintenance'); $qa_content['error'] = qa_lang_html('misc/site_in_maintenance');
} }
} }
// Handle new users who must confirm their email now, or must be approved before continuing // Handle new users who must confirm their email now, or must be approved before continuing
$userid=qa_get_logged_in_userid(); $userid = qa_get_logged_in_userid();
if (isset($userid) && ($requestlower!='confirm') && ($requestlower!='account')) { if (isset($userid) && $requestlower != 'confirm' && $requestlower != 'account') {
$flags=qa_get_logged_in_flags(); $flags = qa_get_logged_in_flags();
if ( ($flags & QA_USER_FLAGS_MUST_CONFIRM) && (!($flags & QA_USER_FLAGS_EMAIL_CONFIRMED)) && qa_opt('confirm_user_emails') ) { if (($flags & QA_USER_FLAGS_MUST_CONFIRM) && !($flags & QA_USER_FLAGS_EMAIL_CONFIRMED) && qa_opt('confirm_user_emails')) {
$qa_content=qa_content_prepare(); $qa_content = qa_content_prepare();
$qa_content['title']=qa_lang_html('users/confirm_title'); $qa_content['title'] = qa_lang_html('users/confirm_title');
$qa_content['error']=strtr(qa_lang_html('users/confirm_required'), array( $qa_content['error'] = strtr(qa_lang_html('users/confirm_required'), array(
'^1' => '<a href="'.qa_path_html('confirm').'">', '^1' => '<a href="' . qa_path_html('confirm') . '">',
'^2' => '</a>', '^2' => '</a>',
)); ));
} elseif ( ($flags & QA_USER_FLAGS_MUST_APPROVE) && (qa_get_logged_in_level()<QA_USER_LEVEL_APPROVED) && qa_opt('moderate_users') ) { } elseif (($flags & QA_USER_FLAGS_MUST_APPROVE) && qa_get_logged_in_level() < QA_USER_LEVEL_APPROVED && qa_opt('moderate_users')) {
$qa_content=qa_content_prepare(); $qa_content = qa_content_prepare();
$qa_content['title']=qa_lang_html('users/approve_title'); $qa_content['title'] = qa_lang_html('users/approve_title');
$qa_content['error']=strtr(qa_lang_html('users/approve_required'), array( $qa_content['error'] = strtr(qa_lang_html('users/approve_required'), array(
'^1' => '<a href="'.qa_path_html('account').'">', '^1' => '<a href="' . qa_path_html('account') . '">',
'^2' => '</a>', '^2' => '</a>',
)); ));
} }
...@@ -314,7 +314,7 @@ ...@@ -314,7 +314,7 @@
if (isset($qa_content['script_var'])) if (isset($qa_content['script_var']))
foreach ($qa_content['script_var'] as $var => $value) foreach ($qa_content['script_var'] as $var => $value)
$script[] = 'var '.$var.' = '.qa_js($value).';'; $script[] = 'var ' . $var . ' = ' . qa_js($value) . ';';
if (isset($qa_content['script_lines'])) if (isset($qa_content['script_lines']))
foreach ($qa_content['script_lines'] as $scriptlines) { foreach ($qa_content['script_lines'] as $scriptlines) {
...@@ -327,28 +327,30 @@ ...@@ -327,28 +327,30 @@
if (isset($qa_content['script_rel'])) { if (isset($qa_content['script_rel'])) {
$uniquerel = array_unique($qa_content['script_rel']); // remove any duplicates $uniquerel = array_unique($qa_content['script_rel']); // remove any duplicates
foreach ($uniquerel as $script_rel) foreach ($uniquerel as $script_rel)
$script[] = '<script src="'.qa_html(qa_path_to_root().$script_rel).'"></script>'; $script[] = '<script src="' . qa_html(qa_path_to_root() . $script_rel) . '"></script>';
} }
if (isset($qa_content['script_src'])) { if (isset($qa_content['script_src'])) {
$uniquesrc = array_unique($qa_content['script_src']); // remove any duplicates $uniquesrc = array_unique($qa_content['script_src']); // remove any duplicates
foreach ($uniquesrc as $script_src) foreach ($uniquesrc as $script_src)
$script[] = '<script src="'.qa_html($script_src).'"></script>'; $script[] = '<script src="' . qa_html($script_src) . '"></script>';
} }
if (isset($qa_content['focusid'])) if (isset($qa_content['focusid'])) {
$qa_content['script_onloads'][] = array( $qa_content['script_onloads'][] = array(
'$(' . qa_js('#'.$qa_content['focusid']) . ').focus();', '$(' . qa_js('#' . $qa_content['focusid']) . ').focus();',
); );
}
// JS onloads must come after jQuery is loaded // JS onloads must come after jQuery is loaded
$script[] = '<script>'; $script[] = '<script>';
if (isset($qa_content['script_onloads'])) { if (isset($qa_content['script_onloads'])) {
$script[] = '$(window).load(function() {'; $script[] = '$(window).load(function() {';
foreach ($qa_content['script_onloads'] as $scriptonload) { foreach ($qa_content['script_onloads'] as $scriptonload) {
foreach ((array)$scriptonload as $scriptline) foreach ((array)$scriptonload as $scriptline)
$script[] = "\t".$scriptline; $script[] = "\t" . $scriptline;
} }
$script[] = '});'; $script[] = '});';
...@@ -363,37 +365,37 @@ ...@@ -363,37 +365,37 @@
$themeclass = qa_load_theme_class(qa_get_site_theme(), $tmpl, $qa_content, qa_request()); $themeclass = qa_load_theme_class(qa_get_site_theme(), $tmpl, $qa_content, qa_request());
$themeclass->initialize(); $themeclass->initialize();
header('Content-type: '.$qa_content['content_type']); header('Content-type: ' . $qa_content['content_type']);
$themeclass->doctype(); $themeclass->doctype();
$themeclass->html(); $themeclass->html();
$themeclass->finish(); $themeclass->finish();
} }
function qa_do_content_stats($qa_content) /**
/* * Update any statistics required by the fields in $qa_content, and return true if something was done
Update any statistics required by the fields in $qa_content, and return true if something was done */
*/ function qa_do_content_stats($qa_content)
{ {
if (isset($qa_content['inc_views_postid'])) { if (isset($qa_content['inc_views_postid'])) {
require_once QA_INCLUDE_DIR.'db/hotness.php'; require_once QA_INCLUDE_DIR . 'db/hotness.php';
qa_db_hotness_update($qa_content['inc_views_postid'], null, true); qa_db_hotness_update($qa_content['inc_views_postid'], null, true);
return true; return true;
} }
return false; return false;
} }
// Other functions which might be called from anywhere // Other functions which might be called from anywhere
function qa_page_routing() /**
/* * Return an array of the default Q2A requests and which qa-page-*.php file implements them
Return an array of the default Q2A requests and which qa-page-*.php file implements them * If the key of an element ends in /, it should be used for any request with that key as its prefix
If the key of an element ends in /, it should be used for any request with that key as its prefix */
*/ function qa_page_routing()
{ {
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
return array( return array(
...@@ -445,25 +447,25 @@ ...@@ -445,25 +447,25 @@
'users/new' => 'pages/users-newest.php', 'users/new' => 'pages/users-newest.php',
'users/special' => 'pages/users-special.php', 'users/special' => 'pages/users-special.php',
); );
} }
function qa_set_template($template) /**
/* * Sets the template which should be passed to the theme class, telling it which type of page it's displaying
Sets the template which should be passed to the theme class, telling it which type of page it's displaying */
*/ function qa_set_template($template)
{ {
global $qa_template; global $qa_template;
$qa_template=$template; $qa_template = $template;
} }
function qa_content_prepare($voting=false, $categoryids=null) /**
/* * Start preparing theme content in global $qa_content variable, with or without $voting support,
Start preparing theme content in global $qa_content variable, with or without $voting support, * in the context of the categories in $categoryids (if not null)
in the context of the categories in $categoryids (if not null) */
*/ function qa_content_prepare($voting=false, $categoryids=null)
{ {
if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); } if (qa_to_override(__FUNCTION__)) { $args=func_get_args(); return qa_call_override(__FUNCTION__, $args); }
global $qa_template, $qa_page_error_html; global $qa_template, $qa_page_error_html;
...@@ -473,21 +475,21 @@ ...@@ -473,21 +475,21 @@
$qa_usage->mark('control'); $qa_usage->mark('control');
} }
$request=qa_request(); $request = qa_request();
$requestlower=qa_request(); $requestlower = qa_request();
$navpages=qa_db_get_pending_result('navpages'); $navpages = qa_db_get_pending_result('navpages');
$widgets=qa_db_get_pending_result('widgets'); $widgets = qa_db_get_pending_result('widgets');
if (isset($categoryids) && !is_array($categoryids)) // accept old-style parameter if (isset($categoryids) && !is_array($categoryids)) // accept old-style parameter
$categoryids=array($categoryids); $categoryids = array($categoryids);
$lastcategoryid=count($categoryids) ? end($categoryids) : null; $lastcategoryid = count($categoryids) ? end($categoryids) : null;
$charset = 'utf-8'; $charset = 'utf-8';
$language = qa_opt('site_language'); $language = qa_opt('site_language');
$language = empty($language) ? 'en' : qa_html($language); $language = empty($language) ? 'en' : qa_html($language);
$qa_content=array( $qa_content = array(
'content_type' => 'text/html; charset='.$charset, 'content_type' => 'text/html; charset=' . $charset,
'charset' => $charset, 'charset' => $charset,
'language' => $language, 'language' => $language,
...@@ -529,104 +531,115 @@ ...@@ -529,104 +531,115 @@
} }
if (qa_opt('show_custom_in_head')) if (qa_opt('show_custom_in_head'))
$qa_content['head_lines'][]=qa_opt('custom_in_head'); $qa_content['head_lines'][] = qa_opt('custom_in_head');
if (qa_opt('show_custom_header')) if (qa_opt('show_custom_header'))
$qa_content['body_header']=qa_opt('custom_header'); $qa_content['body_header'] = qa_opt('custom_header');
if (qa_opt('show_custom_footer')) if (qa_opt('show_custom_footer'))
$qa_content['body_footer']=qa_opt('custom_footer'); $qa_content['body_footer'] = qa_opt('custom_footer');
if (isset($categoryids)) if (isset($categoryids))
$qa_content['categoryids']=$categoryids; $qa_content['categoryids'] = $categoryids;
foreach ($navpages as $page) foreach ($navpages as $page) {
if ($page['nav']=='B') if ($page['nav'] == 'B')
qa_navigation_add_page($qa_content['navigation']['main'], $page); qa_navigation_add_page($qa_content['navigation']['main'], $page);
}
if (qa_opt('nav_home') && qa_opt('show_custom_home')) if (qa_opt('nav_home') && qa_opt('show_custom_home')) {
$qa_content['navigation']['main']['$']=array( $qa_content['navigation']['main']['$'] = array(
'url' => qa_path_html(''), 'url' => qa_path_html(''),
'label' => qa_lang_html('main/nav_home'), 'label' => qa_lang_html('main/nav_home'),
); );
}
if (qa_opt('nav_activity')) if (qa_opt('nav_activity')) {
$qa_content['navigation']['main']['activity']=array( $qa_content['navigation']['main']['activity'] = array(
'url' => qa_path_html('activity'), 'url' => qa_path_html('activity'),
'label' => qa_lang_html('main/nav_activity'), 'label' => qa_lang_html('main/nav_activity'),
); );
}
$hascustomhome=qa_has_custom_home(); $hascustomhome = qa_has_custom_home();
if (qa_opt($hascustomhome ? 'nav_qa_not_home' : 'nav_qa_is_home')) if (qa_opt($hascustomhome ? 'nav_qa_not_home' : 'nav_qa_is_home')) {
$qa_content['navigation']['main'][$hascustomhome ? 'qa' : '$']=array( $qa_content['navigation']['main'][$hascustomhome ? 'qa' : '$'] = array(
'url' => qa_path_html($hascustomhome ? 'qa' : ''), 'url' => qa_path_html($hascustomhome ? 'qa' : ''),
'label' => qa_lang_html('main/nav_qa'), 'label' => qa_lang_html('main/nav_qa'),
); );
}
if (qa_opt('nav_questions')) if (qa_opt('nav_questions')) {
$qa_content['navigation']['main']['questions']=array( $qa_content['navigation']['main']['questions'] = array(
'url' => qa_path_html('questions'), 'url' => qa_path_html('questions'),
'label' => qa_lang_html('main/nav_qs'), 'label' => qa_lang_html('main/nav_qs'),
); );
}
if (qa_opt('nav_hot')) if (qa_opt('nav_hot')) {
$qa_content['navigation']['main']['hot']=array( $qa_content['navigation']['main']['hot'] = array(
'url' => qa_path_html('hot'), 'url' => qa_path_html('hot'),
'label' => qa_lang_html('main/nav_hot'), 'label' => qa_lang_html('main/nav_hot'),
); );
}
if (qa_opt('nav_unanswered')) if (qa_opt('nav_unanswered')) {
$qa_content['navigation']['main']['unanswered']=array( $qa_content['navigation']['main']['unanswered'] = array(
'url' => qa_path_html('unanswered'), 'url' => qa_path_html('unanswered'),
'label' => qa_lang_html('main/nav_unanswered'), 'label' => qa_lang_html('main/nav_unanswered'),
); );
}
if (qa_using_tags() && qa_opt('nav_tags')) if (qa_using_tags() && qa_opt('nav_tags')) {
$qa_content['navigation']['main']['tag']=array( $qa_content['navigation']['main']['tag'] = array(
'url' => qa_path_html('tags'), 'url' => qa_path_html('tags'),
'label' => qa_lang_html('main/nav_tags'), 'label' => qa_lang_html('main/nav_tags'),
'selected_on' => array('tags$', 'tag/'), 'selected_on' => array('tags$', 'tag/'),
); );
}
if (qa_using_categories() && qa_opt('nav_categories')) if (qa_using_categories() && qa_opt('nav_categories')) {
$qa_content['navigation']['main']['categories']=array( $qa_content['navigation']['main']['categories'] = array(
'url' => qa_path_html('categories'), 'url' => qa_path_html('categories'),
'label' => qa_lang_html('main/nav_categories'), 'label' => qa_lang_html('main/nav_categories'),
'selected_on' => array('categories$', 'categories/'), 'selected_on' => array('categories$', 'categories/'),
); );
}
if (qa_opt('nav_users')) if (qa_opt('nav_users')) {
$qa_content['navigation']['main']['user']=array( $qa_content['navigation']['main']['user'] = array(
'url' => qa_path_html('users'), 'url' => qa_path_html('users'),
'label' => qa_lang_html('main/nav_users'), 'label' => qa_lang_html('main/nav_users'),
'selected_on' => array('users$', 'users/', 'user/'), 'selected_on' => array('users$', 'users/', 'user/'),
); );
}
// Only the 'level' permission error prevents the menu option being shown - others reported on qa-page-ask.php // Only the 'level' permission error prevents the menu option being shown - others reported on qa-page-ask.php
if (qa_opt('nav_ask') && (qa_user_maximum_permit_error('permit_post_q')!='level')) if (qa_opt('nav_ask') && qa_user_maximum_permit_error('permit_post_q') != 'level') {
$qa_content['navigation']['main']['ask']=array( $qa_content['navigation']['main']['ask'] = array(
'url' => qa_path_html('ask', (qa_using_categories() && strlen($lastcategoryid)) ? array('cat' => $lastcategoryid) : null), 'url' => qa_path_html('ask', (qa_using_categories() && strlen($lastcategoryid)) ? array('cat' => $lastcategoryid) : null),
'label' => qa_lang_html('main/nav_ask'), 'label' => qa_lang_html('main/nav_ask'),
); );
}
if ( if (
(qa_get_logged_in_level()>=QA_USER_LEVEL_ADMIN) || qa_get_logged_in_level() >= QA_USER_LEVEL_ADMIN ||
(!qa_user_maximum_permit_error('permit_moderate')) || !qa_user_maximum_permit_error('permit_moderate') ||
(!qa_user_maximum_permit_error('permit_hide_show')) || !qa_user_maximum_permit_error('permit_hide_show') ||
(!qa_user_maximum_permit_error('permit_delete_hidden')) !qa_user_maximum_permit_error('permit_delete_hidden')
) ) {
$qa_content['navigation']['main']['admin']=array( $qa_content['navigation']['main']['admin'] = array(
'url' => qa_path_html('admin'), 'url' => qa_path_html('admin'),
'label' => qa_lang_html('main/nav_admin'), 'label' => qa_lang_html('main/nav_admin'),
'selected_on' => array('admin/'), 'selected_on' => array('admin/'),
); );
}
$qa_content['search'] = array(
$qa_content['search']=array( 'form_tags' => 'method="get" action="' . qa_path_html('search') . '"',
'form_tags' => 'method="get" action="'.qa_path_html('search').'"',
'form_extra' => qa_path_form_html('search'), 'form_extra' => qa_path_form_html('search'),
'title' => qa_lang_html('main/search_title'), 'title' => qa_lang_html('main/search_title'),
'field_tags' => 'name="q"', 'field_tags' => 'name="q"',
...@@ -636,17 +649,20 @@ ...@@ -636,17 +649,20 @@
if (!qa_opt('feedback_enabled')) if (!qa_opt('feedback_enabled'))
unset($qa_content['navigation']['footer']['feedback']); unset($qa_content['navigation']['footer']['feedback']);
foreach ($navpages as $page) foreach ($navpages as $page) {
if ( ($page['nav']=='M') || ($page['nav']=='O') || ($page['nav']=='F') ) if ($page['nav'] == 'M' || $page['nav'] == 'O' || $page['nav'] == 'F') {
qa_navigation_add_page($qa_content['navigation'][($page['nav']=='F') ? 'footer' : 'main'], $page); $loc = ($page['nav'] == 'F') ? 'footer' : 'main';
qa_navigation_add_page($qa_content['navigation'][$loc], $page);
}
}
$regioncodes=array( $regioncodes = array(
'F' => 'full', 'F' => 'full',
'M' => 'main', 'M' => 'main',
'S' => 'side', 'S' => 'side',
); );
$placecodes=array( $placecodes = array(
'T' => 'top', 'T' => 'top',
'H' => 'high', 'H' => 'high',
'L' => 'low', 'L' => 'low',
...@@ -679,131 +695,134 @@ ...@@ -679,131 +695,134 @@
} }
} }
$logoshow=qa_opt('logo_show'); $logoshow = qa_opt('logo_show');
$logourl=qa_opt('logo_url'); $logourl = qa_opt('logo_url');
$logowidth=qa_opt('logo_width'); $logowidth = qa_opt('logo_width');
$logoheight=qa_opt('logo_height'); $logoheight = qa_opt('logo_height');
if ($logoshow) if ($logoshow) {
$qa_content['logo']='<a href="'.qa_path_html('').'" class="qa-logo-link" title="'.qa_html(qa_opt('site_title')).'">'. $qa_content['logo'] = '<a href="' . qa_path_html('') . '" class="qa-logo-link" title="' . qa_html(qa_opt('site_title')) . '">' .
'<img src="'.qa_html(is_numeric(strpos($logourl, '://')) ? $logourl : qa_path_to_root().$logourl).'"'. '<img src="' . qa_html(is_numeric(strpos($logourl, '://')) ? $logourl : qa_path_to_root() . $logourl) . '"' .
($logowidth ? (' width="'.$logowidth.'"') : '').($logoheight ? (' height="'.$logoheight.'"') : ''). ($logowidth ? (' width="' . $logowidth . '"') : '') . ($logoheight ? (' height="' . $logoheight . '"') : '') .
' border="0" alt="'.qa_html(qa_opt('site_title')).'"/></a>'; ' border="0" alt="' . qa_html(qa_opt('site_title')) . '"/></a>';
else } else {
$qa_content['logo']='<a href="'.qa_path_html('').'" class="qa-logo-link">'.qa_html(qa_opt('site_title')).'</a>'; $qa_content['logo'] = '<a href="' . qa_path_html('') . '" class="qa-logo-link">' . qa_html(qa_opt('site_title')) . '</a>';
}
$topath=qa_get('to'); // lets user switch between login and register without losing destination page $topath = qa_get('to'); // lets user switch between login and register without losing destination page
$userlinks=qa_get_login_links(qa_path_to_root(), isset($topath) ? $topath : qa_path($request, $_GET, '')); $userlinks = qa_get_login_links(qa_path_to_root(), isset($topath) ? $topath : qa_path($request, $_GET, ''));
$qa_content['navigation']['user']=array(); $qa_content['navigation']['user'] = array();
if (qa_is_logged_in()) { if (qa_is_logged_in()) {
$qa_content['loggedin']=qa_lang_html_sub_split('main/logged_in_x', QA_FINAL_EXTERNAL_USERS $qa_content['loggedin'] = qa_lang_html_sub_split('main/logged_in_x', QA_FINAL_EXTERNAL_USERS
? qa_get_logged_in_user_html(qa_get_logged_in_user_cache(), qa_path_to_root(), false) ? qa_get_logged_in_user_html(qa_get_logged_in_user_cache(), qa_path_to_root(), false)
: qa_get_one_user_html(qa_get_logged_in_handle(), false) : qa_get_one_user_html(qa_get_logged_in_handle(), false)
); );
$qa_content['navigation']['user']['updates']=array( $qa_content['navigation']['user']['updates'] = array(
'url' => qa_path_html('updates'), 'url' => qa_path_html('updates'),
'label' => qa_lang_html('main/nav_updates'), 'label' => qa_lang_html('main/nav_updates'),
); );
if (!empty($userlinks['logout'])) if (!empty($userlinks['logout']))
$qa_content['navigation']['user']['logout']=array( $qa_content['navigation']['user']['logout'] = array(
'url' => qa_html(@$userlinks['logout']), 'url' => qa_html(@$userlinks['logout']),
'label' => qa_lang_html('main/nav_logout'), 'label' => qa_lang_html('main/nav_logout'),
); );
if (!QA_FINAL_EXTERNAL_USERS) { if (!QA_FINAL_EXTERNAL_USERS) {
$source=qa_get_logged_in_source(); $source = qa_get_logged_in_source();
if (strlen($source)) { if (strlen($source)) {
$loginmodules=qa_load_modules_with('login', 'match_source'); $loginmodules = qa_load_modules_with('login', 'match_source');
foreach ($loginmodules as $module) foreach ($loginmodules as $module)
if ($module->match_source($source) && method_exists($module, 'logout_html')) { if ($module->match_source($source) && method_exists($module, 'logout_html')) {
ob_start(); ob_start();
$module->logout_html(qa_path('logout', array(), qa_opt('site_url'))); $module->logout_html(qa_path('logout', array(), qa_opt('site_url')));
$qa_content['navigation']['user']['logout']=array('label' => ob_get_clean()); $qa_content['navigation']['user']['logout'] = array('label' => ob_get_clean());
} }
} }
} }
$notices=qa_db_get_pending_result('notices'); $notices = qa_db_get_pending_result('notices');
foreach ($notices as $notice) foreach ($notices as $notice)
$qa_content['notices'][]=qa_notice_form($notice['noticeid'], qa_viewer_html($notice['content'], $notice['format']), $notice); $qa_content['notices'][] = qa_notice_form($notice['noticeid'], qa_viewer_html($notice['content'], $notice['format']), $notice);
} else { } else {
require_once QA_INCLUDE_DIR.'util/string.php'; require_once QA_INCLUDE_DIR . 'util/string.php';
if (!QA_FINAL_EXTERNAL_USERS) { if (!QA_FINAL_EXTERNAL_USERS) {
$loginmodules=qa_load_modules_with('login', 'login_html'); $loginmodules = qa_load_modules_with('login', 'login_html');
foreach ($loginmodules as $tryname => $module) { foreach ($loginmodules as $tryname => $module) {
ob_start(); ob_start();
$module->login_html(isset($topath) ? (qa_opt('site_url').$topath) : qa_path($request, $_GET, qa_opt('site_url')), 'menu'); $module->login_html(isset($topath) ? (qa_opt('site_url') . $topath) : qa_path($request, $_GET, qa_opt('site_url')), 'menu');
$label=ob_get_clean(); $label = ob_get_clean();
if (strlen($label)) if (strlen($label))
$qa_content['navigation']['user'][implode('-', qa_string_to_words($tryname))]=array('label' => $label); $qa_content['navigation']['user'][implode('-', qa_string_to_words($tryname))] = array('label' => $label);
} }
} }
if (!empty($userlinks['login'])) if (!empty($userlinks['login'])) {
$qa_content['navigation']['user']['login']=array( $qa_content['navigation']['user']['login'] = array(
'url' => qa_html(@$userlinks['login']), 'url' => qa_html(@$userlinks['login']),
'label' => qa_lang_html('main/nav_login'), 'label' => qa_lang_html('main/nav_login'),
); );
}
if (!empty($userlinks['register'])) if (!empty($userlinks['register'])) {
$qa_content['navigation']['user']['register']=array( $qa_content['navigation']['user']['register'] = array(
'url' => qa_html(@$userlinks['register']), 'url' => qa_html(@$userlinks['register']),
'label' => qa_lang_html('main/nav_register'), 'label' => qa_lang_html('main/nav_register'),
); );
} }
}
if (QA_FINAL_EXTERNAL_USERS || !qa_is_logged_in()) { if (QA_FINAL_EXTERNAL_USERS || !qa_is_logged_in()) {
if (qa_opt('show_notice_visitor') && (!isset($topath)) && (!isset($_COOKIE['qa_noticed']))) if (qa_opt('show_notice_visitor') && (!isset($topath)) && (!isset($_COOKIE['qa_noticed'])))
$qa_content['notices'][]=qa_notice_form('visitor', qa_opt('notice_visitor')); $qa_content['notices'][] = qa_notice_form('visitor', qa_opt('notice_visitor'));
} else { } else {
setcookie('qa_noticed', 1, time()+86400*3650, '/', QA_COOKIE_DOMAIN, (bool)ini_get('session.cookie_secure'), true); // don't show first-time notice if a user has logged in setcookie('qa_noticed', 1, time() + 86400 * 3650, '/', QA_COOKIE_DOMAIN, (bool)ini_get('session.cookie_secure'), true); // don't show first-time notice if a user has logged in
if (qa_opt('show_notice_welcome') && (qa_get_logged_in_flags() & QA_USER_FLAGS_WELCOME_NOTICE) ) if (qa_opt('show_notice_welcome') && (qa_get_logged_in_flags() & QA_USER_FLAGS_WELCOME_NOTICE))
if ( ($requestlower!='confirm') && ($requestlower!='account') ) // let people finish registering in peace if (($requestlower != 'confirm') && ($requestlower != 'account')) // let people finish registering in peace
$qa_content['notices'][]=qa_notice_form('welcome', qa_opt('notice_welcome')); $qa_content['notices'][] = qa_notice_form('welcome', qa_opt('notice_welcome'));
} }
$qa_content['script_rel']=array('qa-content/jquery-1.11.3.min.js'); $qa_content['script_rel'] = array('qa-content/jquery-1.11.3.min.js');
$qa_content['script_rel'][]='qa-content/qa-page.js?'.QA_VERSION; $qa_content['script_rel'][] = 'qa-content/qa-page.js?' . QA_VERSION;
if ($voting) if ($voting)
$qa_content['error']=@$qa_page_error_html; $qa_content['error'] = @$qa_page_error_html;
$qa_content['script_var']=array( $qa_content['script_var'] = array(
'qa_root' => qa_path_to_root(), 'qa_root' => qa_path_to_root(),
'qa_request' => $request, 'qa_request' => $request,
); );
return $qa_content; return $qa_content;
} }
function qa_get_start() /**
/* * Get the start parameter which should be used, as constrained by the setting in qa-config.php
Get the start parameter which should be used, as constrained by the setting in qa-config.php */
*/ function qa_get_start()
{ {
return min(max(0, (int)qa_get('start')), QA_MAX_LIMIT_START); return min(max(0, (int)qa_get('start')), QA_MAX_LIMIT_START);
} }
function qa_get_state() /**
/* * Get the state parameter which should be used, as set earlier in qa_load_state()
Get the state parameter which should be used, as set earlier in qa_load_state() */
*/ function qa_get_state()
{ {
global $qa_state; global $qa_state;
return $qa_state; return $qa_state;
} }
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
http://www.question2answer.org/ http://www.question2answer.org/
File: qa-include/qa-page.php File: qa-include/qa-page.php
Description: Routing and utility functions for page requests Description: Initialization for page requests
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
...@@ -20,33 +20,33 @@ ...@@ -20,33 +20,33 @@
More about this license: http://www.question2answer.org/license.php More about this license: http://www.question2answer.org/license.php
*/ */
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
header('Location: ../'); header('Location: ../');
exit; exit;
} }
require_once QA_INCLUDE_DIR.'app/page.php'; require_once QA_INCLUDE_DIR . 'app/page.php';
// Below are the steps that actually execute for this file - all the above are function definitions // Below are the steps that actually execute for this file - all the above are function definitions
global $qa_usage; global $qa_usage;
qa_report_process_stage('init_page'); qa_report_process_stage('init_page');
qa_db_connect('qa_page_db_fail_handler'); qa_db_connect('qa_page_db_fail_handler');
qa_page_queue_pending(); qa_page_queue_pending();
qa_load_state(); qa_load_state();
qa_check_login_modules(); qa_check_login_modules();
if (QA_DEBUG_PERFORMANCE) if (QA_DEBUG_PERFORMANCE)
$qa_usage->mark('setup'); $qa_usage->mark('setup');
qa_check_page_clicks(); qa_check_page_clicks();
$qa_content = qa_get_request_content(); $qa_content = qa_get_request_content();
if (is_array($qa_content)) { if (is_array($qa_content)) {
if (QA_DEBUG_PERFORMANCE) if (QA_DEBUG_PERFORMANCE)
$qa_usage->mark('view'); $qa_usage->mark('view');
...@@ -60,11 +60,6 @@ ...@@ -60,11 +60,6 @@
if (QA_DEBUG_PERFORMANCE) if (QA_DEBUG_PERFORMANCE)
$qa_usage->output(); $qa_usage->output();
} }
qa_db_disconnect();
/* qa_db_disconnect();
Omit PHP closing tag to help avoid accidental output
*/
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