/qa-include/qa-page-admin-default.php
PHP | 1648 lines | 1248 code | 362 blank | 38 comment | 137 complexity | 5c344c02cb71589808335d0ed5175230 MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- <?php
-
- /*
- Question2Answer (c) Gideon Greenspan
-
- http://www.question2answer.org/
-
-
- File: qa-include/qa-page-admin-default.php
- Version: See define()s at top of qa-include/qa-base.php
- Description: Controller for most admin pages which just contain options
-
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- 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
- header('Location: ../');
- exit;
- }
-
- require_once QA_INCLUDE_DIR.'qa-db-admin.php';
- require_once QA_INCLUDE_DIR.'qa-db-maxima.php';
- require_once QA_INCLUDE_DIR.'qa-db-selects.php';
- require_once QA_INCLUDE_DIR.'qa-app-options.php';
- require_once QA_INCLUDE_DIR.'qa-app-admin.php';
-
-
- $adminsection=strtolower(qa_request_part(1));
-
-
- // Get list of categories and all options
-
- $categories=qa_db_select_with_pending(qa_db_category_nav_selectspec(null, true));
-
-
- // See if we need to redirect
-
- if (empty($adminsection)) {
- $subnav=qa_admin_sub_navigation();
-
- if (isset($subnav[@$_COOKIE['qa_admin_last']]))
- qa_redirect($_COOKIE['qa_admin_last']);
- elseif (count($subnav)) {
- reset($subnav);
- qa_redirect(key($subnav));
- }
- }
-
-
- // Check admin privileges (do late to allow one DB query)
-
- if (!qa_admin_check_privileges($qa_content))
- return $qa_content;
-
-
- // For non-text options, lists of option types, minima and maxima
-
- $optiontype=array(
- 'avatar_profile_size' => 'number',
- 'avatar_q_list_size' => 'number',
- 'avatar_q_page_a_size' => 'number',
- 'avatar_q_page_c_size' => 'number',
- 'avatar_q_page_q_size' => 'number',
- 'avatar_store_size' => 'number',
- 'avatar_users_size' => 'number',
- 'columns_tags' => 'number',
- 'columns_users' => 'number',
- 'feed_number_items' => 'number',
- 'flagging_hide_after' => 'number',
- 'flagging_notify_every' => 'number',
- 'flagging_notify_first' => 'number',
- 'hot_weight_a_age' => 'number',
- 'hot_weight_answers' => 'number',
- 'hot_weight_q_age' => 'number',
- 'hot_weight_views' => 'number',
- 'hot_weight_votes' => 'number',
- 'logo_height' => 'number-blank',
- 'logo_width' => 'number-blank',
- 'mailing_per_minute' => 'number',
- 'max_len_q_title' => 'number',
- 'max_num_q_tags' => 'number',
- 'max_rate_ip_as' => 'number',
- 'max_rate_ip_cs' => 'number',
- 'max_rate_ip_flags' => 'number',
- 'max_rate_ip_logins' => 'number',
- 'max_rate_ip_messages' => 'number',
- 'max_rate_ip_qs' => 'number',
- 'max_rate_ip_registers' => 'number',
- 'max_rate_ip_uploads' => 'number',
- 'max_rate_ip_votes' => 'number',
- 'max_rate_user_as' => 'number',
- 'max_rate_user_cs' => 'number',
- 'max_rate_user_flags' => 'number',
- 'max_rate_user_messages' => 'number',
- 'max_rate_user_qs' => 'number',
- 'max_rate_user_uploads' => 'number',
- 'max_rate_user_votes' => 'number',
- 'min_len_a_content' => 'number',
- 'min_len_c_content' => 'number',
- 'min_len_q_content' => 'number',
- 'min_len_q_title' => 'number',
- 'min_num_q_tags' => 'number',
- 'page_size_activity' => 'number',
- 'page_size_ask_check_qs' => 'number',
- 'page_size_ask_tags' => 'number',
- 'page_size_home' => 'number',
- 'page_size_hot_qs' => 'number',
- 'page_size_q_as' => 'number',
- 'page_size_qs' => 'number',
- 'page_size_related_qs' => 'number',
- 'page_size_search' => 'number',
- 'page_size_tag_qs' => 'number',
- 'page_size_tags' => 'number',
- 'page_size_una_qs' => 'number',
- 'page_size_user_posts' => 'number',
- 'page_size_users' => 'number',
- 'pages_prev_next' => 'number',
- 'q_urls_title_length' => 'number',
- 'show_fewer_cs_count' => 'number',
- 'show_fewer_cs_from' => 'number',
- 'show_full_date_days' => 'number',
- 'smtp_port' => 'number',
-
- 'allow_change_usernames' => 'checkbox',
- 'allow_close_questions' => 'checkbox',
- 'allow_login_email_only' => 'checkbox',
- 'allow_multi_answers' => 'checkbox',
- 'allow_private_messages' => 'checkbox',
- 'allow_self_answer' => 'checkbox',
- 'allow_view_q_bots' => 'checkbox',
- 'avatar_allow_gravatar' => 'checkbox',
- 'avatar_allow_upload' => 'checkbox',
- 'avatar_default_show' => 'checkbox',
- 'captcha_on_anon_post' => 'checkbox',
- 'captcha_on_feedback' => 'checkbox',
- 'captcha_on_register' => 'checkbox',
- 'captcha_on_reset_password' => 'checkbox',
- 'captcha_on_unconfirmed' => 'checkbox',
- 'comment_on_as' => 'checkbox',
- 'comment_on_qs' => 'checkbox',
- 'confirm_user_emails' => 'checkbox',
- 'confirm_user_required' => 'checkbox',
- 'do_ask_check_qs' => 'checkbox',
- 'do_close_on_select' => 'checkbox',
- 'do_complete_tags' => 'checkbox',
- 'do_count_q_views' => 'checkbox',
- 'do_example_tags' => 'checkbox',
- 'extra_field_active' => 'checkbox',
- 'extra_field_display' => 'checkbox',
- 'feed_for_activity' => 'checkbox',
- 'feed_for_hot' => 'checkbox',
- 'feed_for_qa' => 'checkbox',
- 'feed_for_questions' => 'checkbox',
- 'feed_for_search' => 'checkbox',
- 'feed_for_tag_qs' => 'checkbox',
- 'feed_for_unanswered' => 'checkbox',
- 'feed_full_text' => 'checkbox',
- 'feed_per_category' => 'checkbox',
- 'feedback_enabled' => 'checkbox',
- 'flagging_of_posts' => 'checkbox',
- 'follow_on_as' => 'checkbox',
- 'links_in_new_window' => 'checkbox',
- 'logo_show' => 'checkbox',
- 'mailing_enabled' => 'checkbox',
- 'moderate_anon_post' => 'checkbox',
- 'moderate_by_points' => 'checkbox',
- 'moderate_notify_admin' => 'checkbox',
- 'moderate_points_limit' => 'number',
- 'moderate_unconfirmed' => 'checkbox',
- 'neat_urls' => 'checkbox',
- 'notify_admin_q_post' => 'checkbox',
- 'notify_users_default' => 'checkbox',
- 'q_urls_remove_accents' => 'checkbox',
- 'show_c_reply_buttons' => 'checkbox',
- 'show_custom_answer' => 'checkbox',
- 'show_custom_ask' => 'checkbox',
- 'show_custom_comment' => 'checkbox',
- 'show_custom_footer' => 'checkbox',
- 'show_custom_header' => 'checkbox',
- 'show_custom_home' => 'checkbox',
- 'show_custom_in_head' => 'checkbox',
- 'show_custom_register' => 'checkbox',
- 'show_custom_sidebar' => 'checkbox',
- 'show_custom_sidepanel' => 'checkbox',
- 'show_custom_welcome' => 'checkbox',
- 'show_home_description' => 'checkbox',
- 'show_message_history' => 'checkbox',
- 'show_notice_visitor' => 'checkbox',
- 'show_notice_welcome' => 'checkbox',
- 'show_selected_first' => 'checkbox',
- 'show_url_links' => 'checkbox',
- 'show_user_points' => 'checkbox',
- 'show_user_titles' => 'checkbox',
- 'show_view_counts' => 'checkbox',
- 'show_when_created' => 'checkbox',
- 'site_maintenance' => 'checkbox',
- 'smtp_active' => 'checkbox',
- 'smtp_authenticate' => 'checkbox',
- 'suspend_register_users' => 'checkbox',
- 'tag_separator_comma' => 'checkbox',
- 'votes_separated' => 'checkbox',
- 'voting_on_as' => 'checkbox',
- 'voting_on_q_page_only' => 'checkbox',
- 'voting_on_qs' => 'checkbox',
-
- 'smtp_password' => 'password',
- );
-
- $optionmaximum=array(
- 'feed_number_items' => QA_DB_RETRIEVE_QS_AS,
- 'max_len_q_title' => QA_DB_MAX_TITLE_LENGTH,
- 'page_size_activity' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_ask_check_qs' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_ask_tags' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_home' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_hot_qs' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_qs' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_related_qs' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_search' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_tag_qs' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_tags' => QA_DB_RETRIEVE_TAGS,
- 'page_size_una_qs' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_user_posts' => QA_DB_RETRIEVE_QS_AS,
- 'page_size_users' => QA_DB_RETRIEVE_USERS,
- );
-
- $optionminimum=array(
- 'flagging_hide_after' => 2,
- 'flagging_notify_every' => 1,
- 'flagging_notify_first' => 1,
- 'max_num_q_tags' => 2,
- 'max_rate_ip_logins' => 1,
- 'page_size_activity' => 1,
- 'page_size_ask_check_qs' => 3,
- 'page_size_ask_tags' => 3,
- 'page_size_home' => 1,
- 'page_size_hot_qs' => 1,
- 'page_size_q_as' => 1,
- 'page_size_qs' => 1,
- 'page_size_search' => 1,
- 'page_size_tag_qs' => 1,
- 'page_size_tags' => 1,
- 'page_size_users' => 1,
- );
-
-
- // Define the options to show (and some other visual stuff) based on request
-
- $formstyle='tall';
- $checkboxtodisplay=null;
-
- switch ($adminsection) {
- case 'general':
- $subtitle='admin/general_title';
- $showoptions=array('site_title', 'site_url', 'neat_urls', 'site_language', 'site_theme', 'site_theme_mobile', 'tags_or_categories', 'site_maintenance');
- break;
-
- case 'emails':
- $subtitle='admin/emails_title';
- $showoptions=array(
- 'from_email', 'feedback_email', 'notify_admin_q_post', 'feedback_enabled', 'email_privacy',
- 'smtp_active', 'smtp_address', 'smtp_port', 'smtp_secure', 'smtp_authenticate', 'smtp_username', 'smtp_password'
- );
-
- $checkboxtodisplay=array(
- 'smtp_address' => 'option_smtp_active',
- 'smtp_port' => 'option_smtp_active',
- 'smtp_secure' => 'option_smtp_active',
- 'smtp_authenticate' => 'option_smtp_active',
- 'smtp_username' => 'option_smtp_active && option_smtp_authenticate',
- 'smtp_password' => 'option_smtp_active && option_smtp_authenticate',
- );
- break;
-
- case 'users':
- $subtitle='admin/users_title';
-
- $showoptions=array('show_notice_visitor', 'notice_visitor');
-
- if (!QA_FINAL_EXTERNAL_USERS) {
- require_once QA_INCLUDE_DIR.'qa-util-image.php';
-
- array_push($showoptions, 'show_custom_register', 'custom_register', 'show_notice_welcome', 'notice_welcome', 'show_custom_welcome', 'custom_welcome');
-
- array_push($showoptions, '' ,'allow_login_email_only', 'allow_change_usernames', 'allow_private_messages', 'show_message_history', '', 'avatar_allow_gravatar');
-
- if (qa_has_gd_image())
- array_push($showoptions, 'avatar_allow_upload', 'avatar_store_size', 'avatar_default_show');
- }
-
- $showoptions[]='';
-
- if (!QA_FINAL_EXTERNAL_USERS)
- $showoptions[]='avatar_profile_size';
-
- array_push($showoptions, 'avatar_users_size', 'avatar_q_page_q_size', 'avatar_q_page_a_size', 'avatar_q_page_c_size', 'avatar_q_list_size');
-
- $checkboxtodisplay=array(
- 'custom_register' => 'option_show_custom_register',
- 'custom_welcome' => 'option_show_custom_welcome',
- 'notice_welcome' => 'option_show_notice_welcome',
- 'notice_visitor' => 'option_show_notice_visitor',
- 'show_message_history' => 'option_allow_private_messages',
- 'avatar_store_size' => 'option_avatar_allow_upload',
- 'avatar_default_show' => 'option_avatar_allow_gravatar || option_avatar_allow_upload',
- );
-
- if (!QA_FINAL_EXTERNAL_USERS)
- $checkboxtodisplay=array_merge($checkboxtodisplay, array(
- 'avatar_profile_size' => 'option_avatar_allow_gravatar || option_avatar_allow_upload',
- 'avatar_users_size' => 'option_avatar_allow_gravatar || option_avatar_allow_upload',
- 'avatar_q_page_q_size' => 'option_avatar_allow_gravatar || option_avatar_allow_upload',
- 'avatar_q_page_a_size' => 'option_avatar_allow_gravatar || option_avatar_allow_upload',
- 'avatar_q_page_c_size' => 'option_avatar_allow_gravatar || option_avatar_allow_upload',
- 'avatar_q_list_size' => 'option_avatar_allow_gravatar || option_avatar_allow_upload',
- ));
-
- $formstyle='wide';
- break;
-
- case 'layout':
- $subtitle='admin/layout_title';
- $showoptions=array('logo_show', 'logo_url', 'logo_width', 'logo_height', '', 'show_custom_sidebar', 'custom_sidebar', 'show_custom_sidepanel', 'custom_sidepanel', 'show_custom_header', 'custom_header', 'show_custom_footer', 'custom_footer', 'show_custom_in_head', 'custom_in_head', 'show_custom_home', 'custom_home_heading', 'custom_home_content', 'show_home_description', 'home_description', '');
-
- $checkboxtodisplay=array(
- 'logo_url' => 'option_logo_show',
- 'logo_width' => 'option_logo_show',
- 'logo_height' => 'option_logo_show',
- 'custom_sidebar' => 'option_show_custom_sidebar',
- 'custom_sidepanel' => 'option_show_custom_sidepanel',
- 'custom_header' => 'option_show_custom_header',
- 'custom_footer' => 'option_show_custom_footer',
- 'custom_in_head' => 'option_show_custom_in_head',
- 'custom_home_heading' => 'option_show_custom_home',
- 'custom_home_content' => 'option_show_custom_home',
- 'home_description' => 'option_show_home_description',
- );
- break;
-
- case 'viewing':
- $subtitle='admin/viewing_title';
- $showoptions=array('q_urls_title_length', 'q_urls_remove_accents', 'do_count_q_views', 'show_view_counts', '', 'voting_on_qs', 'voting_on_q_page_only', 'voting_on_as', 'votes_separated', '', 'show_url_links', 'links_in_new_window', 'show_when_created', 'show_full_date_days');
-
- if (count(qa_get_points_to_titles()))
- $showoptions[]='show_user_titles';
-
- array_push($showoptions, 'show_user_points', '', 'sort_answers_by', 'show_selected_first', 'page_size_q_as', 'show_a_form_immediate');
-
- if (qa_opt('comment_on_qs') || qa_opt('comment_on_as'))
- array_push($showoptions, 'show_fewer_cs_from', 'show_fewer_cs_count', 'show_c_reply_buttons');
-
- $showoptins[]='';
-
- $widgets=qa_db_single_select(qa_db_widgets_selectspec());
-
- foreach ($widgets as $widget)
- if ($widget['title']=='Related Questions') {
- array_push($showoptions, 'match_related_qs', 'page_size_related_qs', '');
- break;
- }
-
- $showoptions[]='pages_prev_next';
-
- $formstyle='wide';
-
- $checkboxtodisplay=array(
- 'show_view_counts' => 'option_do_count_q_views',
- 'votes_separated' => 'option_voting_on_qs || option_voting_on_as',
- 'voting_on_q_page_only' => 'option_voting_on_qs',
- 'show_full_date_days' => 'option_show_when_created',
- );
- break;
-
- case 'lists':
- $subtitle='admin/lists_title';
-
- $showoptions=array('page_size_home', 'page_size_activity', 'page_size_qs', 'page_size_hot_qs', 'page_size_una_qs');
-
- if (qa_using_tags())
- $showoptions[]='page_size_tag_qs';
-
- array_push($showoptions, 'page_size_user_posts', '');
-
- if (qa_using_tags())
- array_push($showoptions, 'page_size_tags', 'columns_tags');
-
- array_push($showoptions, 'page_size_users', 'columns_users', '');
-
- $searchmodules=qa_load_modules_with('search', 'process_search');
-
- if (count($searchmodules))
- $showoptions[]='search_module';
-
- $showoptions[]='page_size_search';
-
- array_push($showoptions, '', 'admin/hotness_factors', 'hot_weight_q_age', 'hot_weight_a_age', 'hot_weight_answers', 'hot_weight_votes');
-
- if (qa_opt('do_count_q_views'))
- $showoptions[]='hot_weight_views';
-
- $formstyle='wide';
-
- break;
-
- case 'posting':
- $getoptions=qa_get_options(array('tags_or_categories'));
-
- $subtitle='admin/posting_title';
-
- $showoptions=array('do_close_on_select', 'allow_close_questions', 'allow_self_answer', 'allow_multi_answers', 'follow_on_as', 'comment_on_qs', 'comment_on_as', '');
-
- if (count(qa_list_modules('editor'))>1)
- array_push($showoptions, 'editor_for_qs', 'editor_for_as', 'editor_for_cs', '');
-
- array_push($showoptions, 'show_custom_ask', 'custom_ask', 'extra_field_active', 'extra_field_prompt', 'extra_field_display', 'extra_field_label', 'show_custom_answer', 'custom_answer', 'show_custom_comment', 'custom_comment', '');
-
- array_push($showoptions, 'min_len_q_title', 'max_len_q_title', 'min_len_q_content');
-
- if (qa_using_tags())
- array_push($showoptions, 'min_num_q_tags', 'max_num_q_tags', 'tag_separator_comma');
-
- array_push($showoptions, 'min_len_a_content', 'min_len_c_content', 'notify_users_default', '', 'block_bad_words', '', 'do_ask_check_qs', 'match_ask_check_qs', 'page_size_ask_check_qs', '');
-
- if (qa_using_tags())
- array_push($showoptions, 'do_example_tags', 'match_example_tags', 'do_complete_tags', 'page_size_ask_tags');
-
- $formstyle='wide';
-
- $checkboxtodisplay=array(
- 'editor_for_cs' => 'option_comment_on_qs || option_comment_on_as',
- 'custom_ask' => 'option_show_custom_ask',
- 'extra_field_prompt' => 'option_extra_field_active',
- 'extra_field_display' => 'option_extra_field_active',
- 'extra_field_label' => 'option_extra_field_active && option_extra_field_display',
- 'extra_field_label_hidden' => '!option_extra_field_display',
- 'extra_field_label_shown' => 'option_extra_field_display',
- 'custom_answer' => 'option_show_custom_answer',
- 'show_custom_comment' => 'option_comment_on_qs || option_comment_on_as',
- 'custom_comment' => 'option_show_custom_comment && (option_comment_on_qs || option_comment_on_as)',
- 'min_len_c_content' => 'option_comment_on_qs || option_comment_on_as',
- 'match_ask_check_qs' => 'option_do_ask_check_qs',
- 'page_size_ask_check_qs' => 'option_do_ask_check_qs',
- 'match_example_tags' => 'option_do_example_tags',
- 'page_size_ask_tags' => 'option_do_example_tags || option_do_complete_tags',
- );
- break;
-
- case 'permissions':
- $subtitle='admin/permissions_title';
-
- $permitoptions=qa_get_permit_options();
-
- $showoptions=array();
- $checkboxtodisplay=array();
-
- foreach ($permitoptions as $permitoption) {
- $showoptions[]=$permitoption;
-
- if ($permitoption=='permit_view_q_page') {
- $showoptions[]='allow_view_q_bots';
- $checkboxtodisplay['allow_view_q_bots']='option_permit_view_q_page<'.qa_js(QA_PERMIT_ALL);
-
- } else {
- $showoptions[]=$permitoption.'_points';
- $checkboxtodisplay[$permitoption.'_points']='(option_'.$permitoption.'=='.qa_js(QA_PERMIT_POINTS).') ||(option_'.$permitoption.'=='.qa_js(QA_PERMIT_POINTS_CONFIRMED).')';
- }
- }
-
- $formstyle='wide';
- break;
-
- case 'feeds':
- $subtitle='admin/feeds_title';
-
- $showoptions=array('feed_for_questions', 'feed_for_qa', 'feed_for_activity');
-
- array_push($showoptions, 'feed_for_hot', 'feed_for_unanswered');
-
- if (qa_using_tags())
- $showoptions[]='feed_for_tag_qs';
-
- if (qa_using_categories())
- $showoptions[]='feed_per_category';
-
- array_push($showoptions, 'feed_for_search', '', 'feed_number_items', 'feed_full_text');
-
- $formstyle='wide';
-
- $checkboxtodisplay=array(
- 'feed_per_category' => 'option_feed_for_qa || option_feed_for_questions || option_feed_for_unanswered || option_feed_for_activity',
- );
- break;
-
- case 'spam':
- $subtitle='admin/spam_title';
-
- $showoptions=array();
-
- $getoptions=qa_get_options(array('feedback_enabled', 'permit_post_q', 'permit_post_a', 'permit_post_c'));
-
- if (!QA_FINAL_EXTERNAL_USERS)
- array_push($showoptions, 'confirm_user_emails', 'confirm_user_required', 'suspend_register_users', '');
-
- $maxpermitpost=max($getoptions['permit_post_q'], $getoptions['permit_post_a']);
- if (qa_opt('comment_on_qs') || qa_opt('comment_on_as'))
- $maxpermitpost=max($maxpermitpost, $getoptions['permit_post_c']);
-
- $captchamodules=qa_list_modules('captcha');
-
- if (count($captchamodules)) {
- if (!QA_FINAL_EXTERNAL_USERS)
- array_push($showoptions, 'captcha_on_register', 'captcha_on_reset_password');
-
- if ($maxpermitpost > QA_PERMIT_USERS)
- $showoptions[]='captcha_on_anon_post';
-
- if ($maxpermitpost > QA_PERMIT_CONFIRMED)
- $showoptions[]='captcha_on_unconfirmed';
-
- if ($getoptions['feedback_enabled'])
- $showoptions[]='captcha_on_feedback';
-
- $showoptions[]='captcha_module';
- }
-
- $showoptions[]='';
-
- if ($maxpermitpost > QA_PERMIT_USERS)
- $showoptions[]='moderate_anon_post';
-
- if ($maxpermitpost > QA_PERMIT_CONFIRMED)
- $showoptions[]='moderate_unconfirmed';
-
- if ($maxpermitpost > QA_PERMIT_EXPERTS)
- array_push($showoptions, 'moderate_by_points', 'moderate_points_limit', 'moderate_notify_admin', '');
-
- array_push($showoptions, 'flagging_of_posts', 'flagging_notify_first', 'flagging_notify_every', 'flagging_hide_after', '');
-
- array_push($showoptions, 'block_ips_write', '');
-
- if (!QA_FINAL_EXTERNAL_USERS)
- array_push($showoptions, 'max_rate_ip_registers', 'max_rate_ip_logins', '');
-
- array_push($showoptions, 'max_rate_ip_qs', 'max_rate_user_qs', 'max_rate_ip_as', 'max_rate_user_as');
-
- if (qa_opt('comment_on_qs') || qa_opt('comment_on_as'))
- array_push($showoptions, 'max_rate_ip_cs', 'max_rate_user_cs');
-
- $showoptions[]='';
-
- if (qa_opt('voting_on_qs') || qa_opt('voting_on_as'))
- array_push($showoptions, 'max_rate_ip_votes', 'max_rate_user_votes');
-
- array_push($showoptions, 'max_rate_ip_flags', 'max_rate_user_flags', 'max_rate_ip_uploads', 'max_rate_user_uploads');
-
- if (qa_opt('allow_private_messages'))
- array_push($showoptions, 'max_rate_ip_messages', 'max_rate_user_messages');
-
- $formstyle='wide';
-
- $checkboxtodisplay=array(
- 'confirm_user_required' => 'option_confirm_user_emails',
- 'captcha_on_unconfirmed' => 'option_confirm_user_emails',
- 'captcha_module' => 'option_captcha_on_register || option_captcha_on_anon_post || (option_confirm_user_emails && option_captcha_on_unconfirmed) || option_captcha_on_reset_password || option_captcha_on_feedback',
- 'moderate_unconfirmed' => 'option_confirm_user_emails',
- 'moderate_points_limit' => 'option_moderate_by_points',
- 'moderate_points_label_off' => '!option_moderate_by_points',
- 'moderate_points_label_on' => 'option_moderate_by_points',
- 'flagging_hide_after' => 'option_flagging_of_posts',
- 'flagging_notify_every' => 'option_flagging_of_posts',
- 'flagging_notify_first' => 'option_flagging_of_posts',
- 'max_rate_ip_flags' => 'option_flagging_of_posts',
- 'max_rate_user_flags' => 'option_flagging_of_posts',
- );
- break;
-
- case 'mailing':
- require_once QA_INCLUDE_DIR.'qa-app-mailing.php';
-
- $subtitle='admin/mailing_title';
-
- $showoptions=array('mailing_enabled', 'mailing_from_name', 'mailing_from_email', 'mailing_subject', 'mailing_body', 'mailing_per_minute');
- break;
-
- default:
- $pagemodules=qa_load_modules_with('page', 'match_request');
- $request=qa_request();
-
- foreach ($pagemodules as $pagemodule)
- if ($pagemodule->match_request($request))
- return $pagemodule->process_request($request);
-
- return include QA_INCLUDE_DIR.'qa-page-not-found.php';
- break;
- }
-
-
- // Filter out blanks to get list of valid options
-
- $getoptions=array();
- foreach ($showoptions as $optionname)
- if (strlen($optionname) && (strpos($optionname, '/')===false)) // empties represent spacers in forms
- $getoptions[]=$optionname;
-
-
- // Process user actions
-
- $errors=array();
-
- $recalchotness=false;
- $startmailing=false;
-
- $formokhtml=null;
-
- if (qa_clicked('doresetoptions')) {
- qa_reset_options($getoptions);
- $formokhtml=qa_lang_html('admin/options_reset');
-
- } elseif (qa_clicked('dosaveoptions')) {
- foreach ($getoptions as $optionname) {
- $optionvalue=qa_post_text('option_'.$optionname);
-
- if (
- (@$optiontype[$optionname]=='number') ||
- (@$optiontype[$optionname]=='checkbox') ||
- ((@$optiontype[$optionname]=='number-blank') && strlen($optionvalue))
- )
- $optionvalue=(int)$optionvalue;
-
- if (isset($optionmaximum[$optionname]))
- $optionvalue=min($optionmaximum[$optionname], $optionvalue);
-
- if (isset($optionminimum[$optionname]))
- $optionvalue=max($optionminimum[$optionname], $optionvalue);
-
- switch ($optionname) {
- case 'site_url':
- if (substr($optionvalue, -1)!='/') // seems to be a very common mistake and will mess up URLs
- $optionvalue.='/';
- break;
-
- case 'hot_weight_views':
- case 'hot_weight_answers':
- case 'hot_weight_votes':
- case 'hot_weight_q_age':
- case 'hot_weight_a_age':
- if (qa_opt($optionname) != $optionvalue)
- $recalchotness=true;
- break;
-
- case 'block_ips_write':
- require_once QA_INCLUDE_DIR.'qa-app-limits.php';
- $optionvalue=implode(' , ', qa_block_ips_explode($optionvalue));
- break;
-
- case 'block_bad_words':
- require_once QA_INCLUDE_DIR.'qa-util-string.php';
- $optionvalue=implode(' , ', qa_block_words_explode($optionvalue));
- break;
- }
-
- qa_set_option($optionname, $optionvalue);
- }
-
- $formokhtml=qa_lang_html('admin/options_saved');
-
- // Uploading default avatar
-
- if (is_array(@$_FILES['avatar_default_file']) && $_FILES['avatar_default_file']['size']) {
- require_once QA_INCLUDE_DIR.'qa-util-image.php';
-
- $oldblobid=qa_opt('avatar_default_blobid');
-
- $toobig=qa_image_file_too_big($_FILES['avatar_default_file']['tmp_name'], qa_opt('avatar_store_size'));
-
- if ($toobig)
- $errors['avatar_default_show']=qa_lang_sub('main/image_too_big_x_pc', (int)($toobig*100));
-
- else {
- $imagedata=qa_image_constrain_data(file_get_contents($_FILES['avatar_default_file']['tmp_name']), $width, $height, qa_opt('avatar_store_size'));
-
- if (isset($imagedata)) {
- require_once QA_INCLUDE_DIR.'qa-db-blobs.php';
-
- $newblobid=qa_db_blob_create($imagedata, 'jpeg');
-
- if (isset($newblobid)) {
- qa_set_option('avatar_default_blobid', $newblobid);
- qa_set_option('avatar_default_width', $width);
- qa_set_option('avatar_default_height', $height);
- qa_set_option('avatar_default_show', 1);
- }
-
- if (strlen($oldblobid))
- qa_db_blob_delete($oldblobid);
-
- } else
- $errors['avatar_default_show']=qa_lang_sub('main/image_not_read', implode(', ', qa_gd_image_formats()));
- }
- }
- }
-
-
- // Mailings management
-
- if ($adminsection=='mailing') {
- if (qa_clicked('domailingtest')) {
- $email=qa_get_logged_in_email();
-
- if (qa_mailing_send_one(qa_get_logged_in_userid(), qa_get_logged_in_handle(), $email, qa_get_logged_in_user_field('emailcode')))
- $formokhtml=qa_lang_html_sub('admin/test_sent_to_x', qa_html($email));
- else
- $formokhtml=qa_lang_html('main/general_error');
- }
-
- if (qa_clicked('domailingstart')) {
- qa_mailing_start();
- $startmailing=true;
- }
-
- if (qa_clicked('domailingresume'))
- $startmailing=true;
-
- if (qa_clicked('domailingcancel'))
- qa_mailing_stop();
-
- $mailingprogress=qa_mailing_progress_message();
-
- if (isset($mailingprogress)) {
- $formokhtml=qa_html($mailingprogress);
-
- $checkboxtodisplay=array(
- 'mailing_enabled' => '0',
- );
-
- } else {
- $checkboxtodisplay=array(
- 'mailing_from_name' => 'option_mailing_enabled',
- 'mailing_from_email' => 'option_mailing_enabled',
- 'mailing_subject' => 'option_mailing_enabled',
- 'mailing_body' => 'option_mailing_enabled',
- 'mailing_per_minute' => 'option_mailing_enabled',
- 'domailingtest' => 'option_mailing_enabled',
- 'domailingstart' => 'option_mailing_enabled',
- );
- }
- }
-
-
- // Get the actual options
-
- $options=qa_get_options($getoptions);
-
-
- // Prepare content for theme
-
- $qa_content=qa_content_prepare();
-
- $qa_content['title']=qa_lang_html('admin/admin_title').' - '.qa_lang_html($subtitle);
-
- $qa_content['error']=qa_admin_page_error();
-
- $qa_content['script_rel'][]='qa-content/qa-admin.js?'.QA_VERSION;
-
- $qa_content['form']=array(
- 'ok' => $formokhtml,
-
- 'tags' => 'METHOD="POST" ACTION="'.qa_self_html().'" NAME="admin_form" onsubmit="document.forms.admin_form.has_js.value=1; return true;"',
-
- 'style' => $formstyle,
-
- 'fields' => array(),
-
- 'buttons' => array(
- 'save' => array(
- 'label' => qa_lang_html('admin/save_options_button'),
- ),
-
- 'reset' => array(
- 'tags' => 'NAME="doresetoptions"',
- 'label' => qa_lang_html('admin/reset_options_button'),
- ),
- ),
-
- 'hidden' => array(
- 'dosaveoptions' => '1', // for IE
- 'has_js' => '0',
- ),
- );
-
- if ($recalchotness) {
- $qa_content['form']['ok']='<SPAN ID="recalc_ok"></SPAN>';
-
- $qa_content['script_var']['qa_warning_recalc']=qa_lang('admin/stop_recalc_warning');
-
- $qa_content['script_onloads'][]=array(
- "qa_recalc_click('dorecountposts', document.getElementById('recalc_ok'), null, 'recalc_ok');"
- );
-
- } elseif ($startmailing) {
-
- if (qa_post_text('has_js')) {
- $qa_content['form']['ok']='<SPAN ID="mailing_ok">'.qa_html($mailingprogress).'</SPAN>';
-
- $qa_content['script_onloads'][]=array(
- "qa_mailing_start('mailing_ok', 'domailingpause');"
- );
-
- } else { // rudimentary non-Javascript version of mass mailing loop
- echo '<TT>';
-
- while (true) {
- qa_mailing_perform_step();
-
- $message=qa_mailing_progress_message();
-
- if (!isset($message))
- break;
-
- echo qa_html($message).str_repeat(' ', 1024)."<BR>\n";
-
- flush();
- sleep(1);
- }
-
- echo qa_lang_html('admin/mailing_complete').'</TT><P><A HREF="'.qa_path_html('admin/mailing').'">'.qa_lang_html('admin/admin_title').' - '.qa_lang_html('admin/mailing_title').'</A>';
-
- qa_exit();
- }
- }
-
-
- function qa_optionfield_make_select(&$optionfield, $options, $value, $default)
- {
- $optionfield['type']='select';
- $optionfield['options']=$options;
- $optionfield['value']=isset($options[qa_html($value)]) ? $options[qa_html($value)] : @$options[$default];
- }
-
- $indented=false;
-
- foreach ($showoptions as $optionname)
- if (empty($optionname)) {
- $indented=false;
-
- $qa_content['form']['fields'][]=array(
- 'type' => 'blank'
- );
-
- } elseif (strpos($optionname, '/')!==false) {
- $qa_content['form']['fields'][]=array(
- 'type' => 'static',
- 'label' => qa_lang_html($optionname),
- );
-
- $indented=true;
-
- } else {
- $type=@$optiontype[$optionname];
- if ($type=='number-blank')
- $type='number';
-
- $value=$options[$optionname];
-
- $optionfield=array(
- 'id' => $optionname,
- 'label' => ($indented ? '– ' : '').qa_lang_html('options/'.$optionname),
- 'tags' => 'NAME="option_'.$optionname.'" ID="option_'.$optionname.'"',
- 'value' => qa_html($value),
- 'type' => $type,
- 'error' => qa_html(@$errors[$optionname]),
- );
-
- if (isset($optionmaximum[$optionname]))
- $optionfield['note']=qa_lang_html_sub('admin/maximum_x', $optionmaximum[$optionname]);
-
- $feedrequest=null;
- $feedisexample=false;
-
- switch ($optionname) { // special treatment for certain options
- case 'site_language':
- require_once QA_INCLUDE_DIR.'qa-util-string.php';
-
- qa_optionfield_make_select($optionfield, qa_admin_language_options(), $value, '');
-
- $optionfield['suffix']=strtr(qa_lang_html('admin/check_language_suffix'), array(
- '^1' => '<A HREF="'.qa_html(qa_path_to_root().'qa-include/qa-check-lang.php').'">',
- '^2' => '</A>',
- ));
-
- if (!qa_has_multibyte())
- $optionfield['error']=qa_lang_html('admin/no_multibyte');
- break;
-
- case 'neat_urls':
- $neatoptions=array();
-
- $rawoptions=array(
- QA_URL_FORMAT_NEAT,
- QA_URL_FORMAT_INDEX,
- QA_URL_FORMAT_PARAM,
- QA_URL_FORMAT_PARAMS,
- QA_URL_FORMAT_SAFEST,
- );
-
- foreach ($rawoptions as $rawoption)
- $neatoptions[$rawoption]=
- '<IFRAME SRC="'.qa_path_html('url/test/'.QA_URL_TEST_STRING, array('dummy' => '', 'param' => QA_URL_TEST_STRING), null, $rawoption).'" WIDTH="20" HEIGHT="16" STYLE="vertical-align:middle; border:0" SCROLLING="no" FRAMEBORDER="0"></IFRAME> '.
- '<SMALL>'.
- qa_html(urldecode(qa_path('123/why-do-birds-sing', null, '/', $rawoption))).
- (($rawoption==QA_URL_FORMAT_NEAT) ? strtr(qa_lang_html('admin/neat_urls_note'), array(
- '^1' => '<A HREF="http://www.question2answer.org/htaccess.php" TARGET="_blank">',
- '^2' => '</A>',
- )) : '').
- '</SMALL>';
-
- qa_optionfield_make_select($optionfield, $neatoptions, $value, QA_URL_FORMAT_SAFEST);
-
- $optionfield['type']='select-radio';
- $optionfield['note']=qa_lang_html_sub('admin/url_format_note', '<SPAN STYLE=" '.qa_admin_url_test_html().'/SPAN>');
- break;
-
- case 'site_theme':
- case 'site_theme_mobile':
- $themeoptions=qa_admin_theme_options();
- if (!isset($themeoptions[$value]))
- $value='Classic'; // check here because we also need $value for qa_admin_addon_metadata()
-
- qa_optionfield_make_select($optionfield, $themeoptions, $value, 'Classic');
-
- $contents=file_get_contents(QA_THEME_DIR.$value.'/qa-styles.css');
-
- $metadata=qa_admin_addon_metadata($contents, array(
- 'uri' => 'Theme URI',
- 'version' => 'Theme Version',
- 'date' => 'Theme Date',
- 'author' => 'Theme Author',
- 'author_uri' => 'Theme Author URI',
- 'license' => 'Theme License',
- 'update' => 'Theme Update Check URI',
- ));
-
- if (strlen(@$metadata['version']))
- $namehtml='v'.qa_html($metadata['version']);
- else
- $namehtml='';
-
- if (strlen(@$metadata['uri'])) {
- if (!strlen($namehtml))
- $namehtml=qa_html($value);
-
- $namehtml='<A HREF="'.qa_html($metadata['uri']).'">'.$namehtml.'</A>';
- }
-
- if (strlen(@$metadata['author'])) {
- $authorhtml=qa_html($metadata['author']);
-
- if (strlen(@$metadata['author_uri']))
- $authorhtml='<A HREF="'.qa_html($metadata['author_uri']).'">'.$authorhtml.'</A>';
-
- $authorhtml=qa_lang_html_sub('main/by_x', $authorhtml);
-
- } else
- $authorhtml='';
-
- if (strlen(@$metadata['version']) && strlen(@$metadata['update'])) {
- $elementid='version_check_'.$optionname;
-
- $updatehtml='(<SPAN ID="'.$elementid.'">...</SPAN>)';
-
- $qa_content['script_onloads'][]=array(
- "qa_version_check(".qa_js($metadata['update']).", 'Theme Version', ".qa_js($metadata['version'], true).", 'Theme URI', ".qa_js($elementid).");"
- );
-
- } else
- $updatehtml='';
-
- $optionfield['suffix']=$namehtml.' '.$authorhtml.' '.$updatehtml;
- break;
-
- case 'tags_or_categories':
- qa_optionfield_make_select($optionfield, array(
- '' => qa_lang_html('admin/no_classification'),
- 't' => qa_lang_html('admin/tags'),
- 'c' => qa_lang_html('admin/categories'),
- 'tc' => qa_lang_html('admin/tags_and_categories'),
- ), $value, 'tc');
-
- $optionfield['error']='';
-
- if (qa_opt('cache_tagcount') && !qa_using_tags())
- $optionfield['error'].=qa_lang_html('admin/tags_not_shown').' ';
-
- if (!qa_using_categories())
- foreach ($categories as $category)
- if ($category['qcount']) {
- $optionfield['error'].=qa_lang_html('admin/categories_not_shown');
- break;
- }
- break;
-
- case 'smtp_secure':
- qa_optionfield_make_select($optionfield, array(
- '' => qa_lang_html('options/smtp_secure_none'),
- 'ssl' => 'SSL',
- 'tls' => 'TLS',
- ), $value, '');
- break;
-
- case 'custom_sidebar':
- case 'custom_sidepanel':
- case 'custom_header':
- case 'custom_footer':
- case 'custom_in_head':
- case 'home_description':
- unset($optionfield['label']);
- $optionfield['rows']=6;
- break;
-
- case 'custom_home_content':
- $optionfield['rows']=16;
- break;
-
- case 'show_custom_register':
- case 'show_custom_welcome':
- case 'show_notice_welcome':
- case 'show_notice_visitor':
- $optionfield['style']='tall';
- break;
-
- case 'custom_register':
- case 'custom_welcome':
- case 'notice_welcome':
- case 'notice_visitor':
- unset($optionfield['label']);
- $optionfield['style']='tall';
- $optionfield['rows']=3;
- break;
-
- case 'avatar_allow_gravatar':
- $optionfield['label']=strtr($optionfield['label'], array(
- '^1' => '<A HREF="http://www.gravatar.com/" TARGET="_blank">',
- '^2' => '</A>',
- ));
-
- if (!qa_has_gd_image()) {
- $optionfield['style']='tall';
- $optionfield['error']=qa_lang_html('admin/no_image_gd');
- }
- break;
-
- case 'avatar_store_size':
- case 'avatar_profile_size':
- case 'avatar_users_size':
- case 'avatar_q_page_q_size':
- case 'avatar_q_page_a_size':
- case 'avatar_q_page_c_size':
- case 'avatar_q_list_size':
- $optionfield['note']=qa_lang_html('admin/pixels');
- break;
-
- case 'avatar_default_show';
- $qa_content['form']['tags'].='ENCTYPE="multipart/form-data"';
- $optionfield['label'].=' <SPAN STYLE="margin:2px 0; display:inline-block;">'.
- qa_get_avatar_blob_html(qa_opt('avatar_default_blobid'), qa_opt('avatar_default_width'), qa_opt('avatar_default_height'), 32).
- '</SPAN> <INPUT NAME="avatar_default_file" TYPE="file" STYLE="width:16em;">';
- break;
-
- case 'logo_width':
- case 'logo_height':
- $optionfield['suffix']=qa_lang_html('admin/pixels');
- break;
-
- case 'pages_prev_next':
- qa_optionfield_make_select($optionfield, array(0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5), $value, 3);
- break;
-
- case 'columns_tags':
- case 'columns_users':
- qa_optionfield_make_select($optionfield, array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5), $value, 2);
- break;
-
- case 'min_len_q_title':
- case 'q_urls_title_length':
- case 'min_len_q_content':
- case 'min_len_a_content':
- case 'min_len_c_content':
- $optionfield['note']=qa_lang_html('admin/characters');
- break;
-
- case 'min_num_q_tags':
- case 'max_num_q_tags':
- $optionfield['note']=qa_lang_html_sub('main/x_tags', '');
- break;
-
- case 'show_full_date_days':
- $optionfield['note']=qa_lang_html_sub('main/x_days', '');
- break;
-
- case 'sort_answers_by':
- qa_optionfield_make_select($optionfield, array(
- 'created' => qa_lang_html('options/sort_time'),
- 'votes' => qa_lang_html('options/sort_votes'),
- ), $value, 'created');
- break;
-
- case 'page_size_q_as':
- $optionfield['note']=qa_lang_html_sub('main/x_answers', '');
- break;
-
- case 'show_a_form_immediate':
- qa_optionfield_make_select($optionfield, array(
- 'always' => qa_lang_html('options/show_always'),
- 'if_no_as' => qa_lang_html('options/show_if_no_as'),
- 'never' => qa_lang_html('options/show_never'),
- ), $value, 'if_no_as');
- break;
-
- case 'show_fewer_cs_from':
- case 'show_fewer_cs_count':
- $optionfield['note']=qa_lang_html_sub('main/x_comments', '');
- break;
-
- case 'match_related_qs':
- case 'match_ask_check_qs':
- case 'match_example_tags':
- qa_optionfield_make_select($optionfield, qa_admin_match_options(), $value, 3);
- break;
-
- case 'block_bad_words':
- $optionfield['style']='tall';
- $optionfield['rows']=4;
- $optionfield['note']=qa_lang_html('admin/block_words_note');
- break;
-
- case 'editor_for_qs':
- case 'editor_for_as':
- case 'editor_for_cs':
- $editors=qa_list_modules('editor');
-
- $selectoptions=array();
- $optionslinks=false;
-
- foreach ($editors as $editor) {
- $selectoptions[qa_html($editor)]=strlen($editor) ? qa_html($editor) : qa_lang_html('admin/basic_editor');
-
- if ($editor==$value) {
- $module=qa_load_module('editor', $editor);
-
- if (method_exists($module, 'admin_form'))
- $optionfield['note']='<A HREF="'.qa_path_html('admin/plugins', null, null, null, md5('editor/'.$editor)).'">'.qa_lang_html('admin/options').'</A>';
- }
- }
-
- qa_optionfield_make_select($optionfield, $selectoptions, $value, '');
- break;
-
- case 'show_custom_ask':
- case 'extra_field_active':
- case 'show_custom_answer':
- case 'show_custom_comment':
- $optionfield['style']='tall';
- break;
-
- case 'custom_ask':
- case 'custom_answer':
- case 'custom_comment':
- $optionfield['style']='tall';
- unset($optionfield['label']);
- $optionfield['rows']=3;
- break;
-
- case 'extra_field_display':
- $optionfield['style']='tall';
- $optionfield['label']='<SPAN ID="extra_field_label_hidden" STYLE="display:none;">'.$optionfield['label'].'</SPAN><SPAN ID="extra_field_label_shown">'.qa_lang_html('options/extra_field_display_label').'</SPAN>';
- break;
-
- case 'extra_field_prompt':
- case 'extra_field_label':
- $optionfield['style']='tall';
- unset($optionfield['label']);
- break;
-
- case 'search_module':
- foreach ($searchmodules as $modulename => $module) {
- $selectoptions[qa_html($modulename)]=strlen($modulename) ? qa_html($modulename) : qa_lang_html('options/option_default');
-
- if (($modulename==$value) && method_exists($module, 'admin_form'))
- $optionfield['note']='<A HREF="'.qa_path_html('admin/plugins', null, null, null, md5('search/'.$modulename)).'">'.qa_lang_html('admin/options').'</A>';
- }
-
- qa_optionfield_make_select($optionfield, $selectoptions, $value, '');
- break;
-
- case 'hot_weight_q_age':
- case 'hot_weight_a_age':
- case 'hot_weight_answers':
- case 'hot_weight_votes':
- case 'hot_weight_views':
- $optionfield['note']='/ 100';
- break;
-
- case 'moderate_by_points':
- $optionfield['label']='<SPAN ID="moderate_points_label_off" STYLE="display:none;">'.$optionfield['label'].'</SPAN><SPAN ID="moderate_points_label_on">'.qa_lang_html('options/moderate_points_limit').'</SPAN>';
- break;
-
- case 'moderate_points_limit';
- unset($optionfield['label']);
- $optionfield['note']=qa_lang_html('admin/points');
- break;
-
- case 'flagging_hide_after':
- case 'flagging_notify_every':
- case 'flagging_notify_first':
- $optionfield['note']=qa_lang_html_sub('main/x_flags', '');
- break;
-
- case 'block_ips_write':
- $optionfield['style']='tall';
- $optionfield['rows']=4;
- $optionfield['note']=qa_lang_html('admin/block_ips_note');
- break;
-
- case 'allow_view_q_bots':
- $optionfield['note']=$optionfield['label'];
- unset($optionfield['label']);
- break;
-
- case 'permit_view_q_page':
- case 'permit_post_q':
- case 'permit_post_a':
- case 'permit_post_c':
- case 'permit_vote_q':
- case 'permit_vote_a':
- case 'permit_vote_down':
- case 'permit_edit_q':
- case 'permit_retag_cat':
- case 'permit_edit_a':
- case 'permit_edit_c':
- case 'permit_flag':
- case 'permit_close_q':
- case 'permit_select_a':
- case 'permit_hide_show':
- case 'permit_moderate':
- case 'permit_delete_hidden':
- case 'permit_anon_view_ips':
- if ($optionname=='permit_retag_cat')
- $optionfield['label']=qa_lang_html(qa_using_categories() ? 'profile/permit_recat' : 'profile/permit_retag').':';
- else
- $optionfield['label']=qa_lang_html('profile/'.$optionname).':';
-
- if ( ($optionname=='permit_view_q_page') || ($optionname=='permit_post_q') || ($optionname=='permit_post_a') || ($optionname=='permit_post_c') || ($optionname=='permit_anon_view_ips') )
- $widest=QA_PERMIT_ALL;
- elseif ( ($optionname=='permit_close_q') || ($optionname=='permit_select_a') || ($optionname=='permit_moderate')|| ($optionname=='permit_hide_show') )
- $widest=QA_PERMIT_POINTS;
- elseif ($optionname=='permit_delete_hidden')
- $widest=QA_PERMIT_EDITORS;
- else
- $widest=QA_PERMIT_USERS;
-
- if ($optionname=='permit_view_q_page')
- $narrowest=QA_PERMIT_CONFIRMED;
- elseif ( ($optionname=='permit_edit_c') || ($optionname=='permit_close_q') || ($optionname=='permit_select_a') || ($optionname=='permit_moderate')|| ($optionname=='permit_hide_show') || ($optionname=='permit_anon_view_ips') )
- $narrowest=QA_PERMIT_MODERATORS;
- elseif ( ($optionname=='permit_post_c') || ($optionname=='permit_edit_q') || ($optionname=='permit_retag_cat') || ($optionname=='permit_edit_a') || ($optionname=='permit_flag') )
- $narrowest=QA_PERMIT_EDITORS;
- elseif ( ($optionname=='permit_vote_q') || ($optionname=='permit_vote_a') )
- $narrowest=QA_PERMIT_POINTS_CONFIRMED;
- elseif ($optionname=='permit_delete_hidden')
- $narrowest=QA_PERMIT_ADMINS;
- else
- $narrowest=QA_PERMIT_EXPERTS;
-
- $permitoptions=qa_admin_permit_options($widest, $narrowest, (!QA_FINAL_EXTERNAL_USERS) && qa_opt('confirm_user_emails'));
-
- if (count($permitoptions)>1)
- qa_optionfield_make_select($optionfield, $permitoptions, $value,
- ($value==QA_PERMIT_CONFIRMED) ? QA_PERMIT_USERS : min(array_keys($permitoptions)));
- else {
- $optionfield['type']='static';
- $optionfield['value']=reset($permitoptions);
- }
- break;
-
- case 'permit_post_q_points':
- case 'permit_post_a_points':
- case 'permit_post_c_points':
- case 'permit_vote_q_points':
- case 'permit_vote_a_points':
- case 'permit_vote_down_points':
- case 'permit_flag_points':
- case 'permit_edit_q_points':
- case 'permit_retag_cat_points':
- case 'permit_edit_a_points':
- case 'permit_edit_c_points':
- case 'permit_close_q_points':
- case 'permit_select_a_points':
- case 'permit_hide_show_points':
- case 'permit_moderate_points':
- case 'permit_delete_hidden_points':
- case 'permit_anon_view_ips_points':
- unset($optionfield['label']);
- $optionfield['type']='number';
- $optionfield['prefix']=qa_lang_html('admin/users_must_have').' ';
- $optionfield['note']=qa_lang_html('admin/points');
- break;
-
- case 'feed_for_qa':
- $feedrequest='qa';
- break;
-
- case 'feed_for_questions':
- $feedrequest='questions';
- break;
-
- case 'feed_for_hot':
- $feedrequest='hot';
- break;
-
- case 'feed_for_unanswered':
- $feedrequest='unanswered';
- break;
-
- case 'feed_for_activity':
- $feedrequest='activity';
- break;
-
- case 'feed_per_category':
- if (count($categories)) {
- $category=reset($categories);
- $categoryslug=$category['tags'];
-
- } else
- $categoryslug='example-category';
-
- if (qa_opt('feed_for_qa'))
- $feedrequest='qa';
- elseif (qa_opt('feed_for_questions'))
- $feedrequest='questions';
- else
- $feedrequest='activity';
-
- $feedrequest.='/'.$categoryslug;
- $feedisexample=true;
- break;
-
- case 'feed_for_tag_qs':
- $populartags=qa_db_select_with_pending(qa_db_popular_tags_selectspec(0, 1));
-
- if (count($populartags)) {
- reset($populartags);
- $feedrequest='tag/'.key($populartags);
- } else
- $feedrequest='tag/singing';
-
- $feedisexample=true;
- break;
-
- case 'feed_for_search':
- $feedrequest='search/why do birds sing';
- $feedisexample=true;
- break;
-
- case 'captcha_module':
- $captchaoptions=array();
-
- foreach ($captchamodules as $modulename) {
- $captchaoptions[qa_html($modulename)]=qa_html($modulename);
-
- if ($modulename==$value) {
- $module=qa_load_module('captcha', $modulename);
-
- if (method_exists($module, 'admin_form'))
- $optionfield['note']='<A HREF="'.qa_path_html('admin/plugins', null, null, null, md5('captcha/'.$modulename)).'">'.qa_lang_html('admin/options').'</A>';
- }
- }
-
- qa_optionfield_make_select($optionfield, $captchaoptions, $value, '');
- break;
-
- case 'max_rate_ip_as':
- case 'max_rate_ip_cs':
- case 'max_rate_ip_flags':
- case 'max_rate_ip_logins':
- case 'max_rate_ip_messages':
- case 'max_rate_ip_qs':
- case 'max_rate_ip_registers':
- case 'max_rate_ip_uploads':
- case 'max_rate_ip_votes':
- $optionfield['note']=qa_lang_html('admin/per_ip_hour');
- break;
-
- case 'max_rate_user_as':
- case 'max_rate_user_cs':
- case 'max_rate_user_flags':
- case 'max_rate_user_messages':
- case 'max_rate_user_qs':
- case 'max_rate_user_uploads':
- case 'max_rate_user_votes':
- unset($optionfield['label']);
- $optionfield['note']=qa_lang_html('admin/per_user_hour');
- break;
-
- case 'mailing_per_minute':
- $optionfield['suffix']=qa_lang_html('admin/emails_per_minute');
- break;
- }
-
- if (isset($feedrequest) && $value)
- $optionfield['note']='<A HREF="'.qa_path_html(qa_feed_request($feedrequest)).'">'.qa_lang_html($feedisexample ? 'admin/feed_link_example' : 'admin/feed_link').'</A>';
-
- $qa_content['form']['fields'][$optionname]=$optionfield;
- }
-
-
- // Extra items for specific pages
-
- switch ($adminsection) {
- case 'users':
- if (!QA_FINAL_EXTERNAL_USERS) {
- $userfields=qa_db_single_select(qa_db_userfields_selectspec());
-
- $listhtml='';
-
- foreach ($userfields as $userfield) {
- $listhtml.='<LI><B>'.qa_html(qa_user_userfield_label($userfield)).'</B>';
-
- $listhtml.=strtr(…
Large files files are truncated, but you can click here to view the full file