Вход Регистрация
Файл: qa-include/qa-page-admin-default.php
Строк: 1896
<?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(nulltrue));
    

//    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$heightqa_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(), $emailqa_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 '&ndash; ' '').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($optionfieldqa_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>&nbsp;'.
                            
'<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$valueQA_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=> 1=> 2=> 3=> 4=> 5), $value3);
                    break;
    
                case 
'columns_tags':
                case 
'columns_users':
                    
qa_optionfield_make_select($optionfield, array(=> 1=> 2=> 3=> 4=> 5), $value2);
                    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($optionfieldqa_admin_match_options(), $value3);
                    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'nullnullnullmd5('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'nullnullnullmd5('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').'&nbsp;';
                    
$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(01));
                    
                    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'nullnullnullmd5('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(qa_lang_html('admin/edit_field'), array(
                        
'^1' => '<A HREF="'.qa_path_html('admin/userfields', array('edit' => $userfield['fieldid'])).'">',
                        
'^2' => '</A>',
                    ));
    
                    
$listhtml.='</LI>';
                }
                
                
$listhtml.='<LI><B><A HREF="'.qa_path_html('admin/userfields').'">'.qa_lang_html('admin/add_new_field').'</A></B></LI>';
    
                
$qa_content['form']['fields'][]=array('type' => 'blank');
                
                
$qa_content['form']['fields']['userfields']=array(
                    
'label' => qa_lang_html('admin/profile_fields'),
                    
'style' => 'tall',
                    
'type' => 'custom',
                    
'html' => strlen($listhtml) ? '<UL STYLE="margin-bottom:0;">'.$listhtml.'</UL>' null,
                );
            }
            
            
$qa_content['form']['fields'][]=array('type' => 'blank');

            
$pointstitle=qa_get_points_to_titles();

            
$listhtml='';
            
            foreach (
$pointstitle as $points => $title) {
                
$listhtml.='<LI><B>'.$title.'</B> - '.(($points==1) ? qa_lang_html_sub('main/1_point''1''1')
                : 
qa_lang_html_sub('main/x_points'qa_html(number_format($points))));

                
$listhtml.=strtr(qa_lang_html('admin/edit_title'), array(
                    
'^1' => '<A HREF="'.qa_path_html('admin/usertitles', array('edit' => $points)).'">',
                    
'^2' => '</A>',
                ));

                
$listhtml.='</LI>';
            }

            
$listhtml.='<LI><B><A HREF="'.qa_path_html('admin/usertitles').'">'.qa_lang_html('admin/add_new_title').'</A></B></LI>';

            
$qa_content['form']['fields']['usertitles']=array(
                
'label' => qa_lang_html('admin/user_titles'),
                
'style' => 'tall',
                
'type' => 'custom',
                
'html' => strlen($listhtml) ? '<UL STYLE="margin-bottom:0;">'.$listhtml.'</UL>' null,
            );
            break;
            
        case 
'layout':
            
$listhtml='';
            
            
$widgetmodules=qa_load_modules_with('widget''allow_template');
            
            foreach (
$widgetmodules as $tryname => $trywidget)
                if (
method_exists($trywidget'allow_region')) {
                    
$listhtml.='<LI><B>'.qa_html($tryname).'</B>';
                    
                    
$listhtml.=strtr(qa_lang_html('admin/add_widget_link'), array(
                        
'^1' => '<A HREF="'.qa_path_html('admin/layoutwidgets', array('title' => $tryname)).'">',
                        
'^2' => '</A>',
                    ));
                    
                    if (
method_exists($trywidget'admin_form'))
                        
$listhtml.=strtr(qa_lang_html('admin/widget_global_options'), array(
                            
'^1' => '<A HREF="'.qa_path_html('admin/plugins'nullnullnullmd5('widget/'.$tryname)).'">',
                            
'^2' => '</A>',
                        ));
                        
                    
$listhtml.='</LI>';
                }
            
            if (
strlen($listhtml))
                
$qa_content['form']['fields']['plugins']=array(
                    
'label' => qa_lang_html('admin/widgets_explanation'),
                    
'style' => 'tall',
                    
'type' => 'custom',
                    
'html' => '<UL STYLE="margin-bottom:0;">'.$listhtml.'</UL>',
                );
            
            
$widgets=qa_db_single_select(qa_db_widgets_selectspec());
            
            
$listhtml='';
            
            
$placeoptions=qa_admin_place_options();
            
            foreach (
$widgets as $widget) {
                
$listhtml.='<LI><B>'.qa_html($widget['title']).'</B> - '.
                    
'<A HREF="'.qa_path_html('admin/layoutwidgets', array('edit' => $widget['widgetid'])).'">'.
                    @
$placeoptions[$widget['place']].'</A>';
            
                
$listhtml.='</LI>';
            }
            
            if (
strlen($listhtml))
                
$qa_content['form']['fields']['widgets']=array(
                    
'label' => qa_lang_html('admin/active_widgets_explanation'),
                    
'type' => 'custom',
                    
'html' => '<UL STYLE="margin-bottom:0;">'.$listhtml.'</UL>',
                );
            
            break;
        
        case 
'permissions':
            
$qa_content['form']['fields']['permit_block']=array(
                
'type' => 'static',
                
'label' => qa_lang_html('options/permit_block'),
                
'value' => qa_lang_html('options/permit_moderators'),
            );
            
            if (!
QA_FINAL_EXTERNAL_USERS) {
                
$qa_content['form']['fields']['permit_create_experts']=array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('options/permit_create_experts'),
                    
'value' => qa_lang_html('options/permit_moderators'),
                );
    
                
$qa_content['form']['fields']['permit_see_emails']=array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('options/permit_see_emails'),
                    
'value' => qa_lang_html('options/permit_admins'),
                );
        
                
$qa_content['form']['fields']['permit_delete_users']=array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('options/permit_delete_users'),
                    
'value' => qa_lang_html('options/permit_admins'),
                );
        
                
$qa_content['form']['fields']['permit_create_eds_mods']=array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('options/permit_create_eds_mods'),
                    
'value' => qa_lang_html('options/permit_admins'),
                );
        
                
$qa_content['form']['fields']['permit_create_admins']=array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('options/permit_create_admins'),
                    
'value' => qa_lang_html('options/permit_supers'),
                );
    
            }
            break;
            
        case 
'mailing':
            require_once 
QA_INCLUDE_DIR.'qa-util-sort.php';
            
            if (isset(
$mailingprogress)) {
                unset(
$qa_content['form']['buttons']['save']);
                unset(
$qa_content['form']['buttons']['reset']);
                
                if (
$startmailing) {
                    unset(
$qa_content['form']['hidden']['dosaveoptions']);

                    foreach (
$showoptions as $optionname)
                        
$qa_content['form']['fields'][$optionname]['type']='static';
                        
                    
$qa_content['form']['fields']['mailing_body']['value']=qa_html(qa_opt('mailing_body'), true);

                    
$qa_content['form']['buttons']['stop']=array(
                        
'tags' => 'NAME="domailingpause" ID="domailingpause"',
                        
'label' => qa_lang_html('admin/pause_mailing_button'),
                    );

                } else {
                    
$qa_content['form']['buttons']['resume']=array(
                        
'tags' => 'NAME="domailingresume"',
                        
'label' => qa_lang_html('admin/resume_mailing_button'),
                    );

                    
$qa_content['form']['buttons']['cancel']=array(
                        
'tags' => 'NAME="domailingcancel"',
                        
'label' => qa_lang_html('admin/cancel_mailing_button'),
                    );
                }
            
            } else {
                
$qa_content['form']['buttons']['spacer']=array();
    
                
$qa_content['form']['buttons']['test']=array(
                    
'tags' => 'NAME="domailingtest" ID="domailingtest"',
                    
'label' => qa_lang_html('admin/send_test_button'),
                );

                
$qa_content['form']['buttons']['start']=array(
                    
'tags' => 'NAME="domailingstart" ID="domailingstart"',
                    
'label' => qa_lang_html('admin/start_mailing_button'),
                );
            }
            
            if (!
$startmailing) {
                
$qa_content['form']['fields']['mailing_enabled']['note']=qa_lang_html('admin/mailing_explanation');
                
$qa_content['form']['fields']['mailing_body']['rows']=12;
                
$qa_content['form']['fields']['mailing_body']['note']=qa_lang_html('admin/mailing_unsubscribe');
            }
            break;
    }
    

    if (isset(
$checkboxtodisplay))
        
qa_set_display_rules($qa_content$checkboxtodisplay);

    
$qa_content['navigation']['sub']=qa_admin_sub_navigation();

    
    return 
$qa_content;


/*
    Omit PHP closing tag to help avoid accidental output
*/
Онлайн: 0
Реклама