Вход Регистрация
Файл: qa-include/qa-page-user.php
Строк: 838
<?php
    
/*
    Question2Answer (c) Gideon Greenspan

    http://www.question2answer.org/

    
    File: qa-include/qa-page-user.php
    Version: See define()s at top of qa-include/qa-base.php
    Description: Controller for user profile page


    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-selects.php';
    require_once 
QA_INCLUDE_DIR.'qa-app-format.php';
    require_once 
QA_INCLUDE_DIR.'qa-app-updates.php';
    require_once 
QA_INCLUDE_DIR.'qa-app-users.php';
    
    
$handle=qa_request_part(1);
    if (!
strlen($handle))
        
qa_redirect('users');


//    Get the HTML to display for the handle, and if we're using external users, determine the userid 

    
if (QA_FINAL_EXTERNAL_USERS) {
        
$publictouserid=qa_get_userids_from_public(array($handle));
        
        if (!
count($publictouserid))
            return include 
QA_INCLUDE_DIR.'qa-page-not-found.php';
        
        
$userid=reset($publictouserid); // don't use $publictouserid[$handle] since $handle capitalization might be different
        
$usershtml=qa_get_users_html(array($userid), falseqa_path_to_root(), true);
        
$userhtml=@$usershtml[$userid];

    } else
        
$userhtml=qa_html($handle);

    
//    Find the user profile and questions and answers for this handle
    
    
$loginuserid=qa_get_logged_in_userid();
    
$identifier=QA_FINAL_EXTERNAL_USERS $userid $handle;

    @list(
$useraccount$userprofile$userfields$userpoints$userrank$questions$answerqs$commentqs$editqs$favorite)=
        
qa_db_select_with_pending(
            
QA_FINAL_EXTERNAL_USERS null qa_db_user_account_selectspec($handlefalse),
            
QA_FINAL_EXTERNAL_USERS null qa_db_user_profile_selectspec($handlefalse),
            
QA_FINAL_EXTERNAL_USERS null qa_db_userfields_selectspec(),
            
qa_db_user_points_selectspec($identifier),
            
qa_db_user_rank_selectspec($identifier),
            
qa_db_user_recent_qs_selectspec($loginuserid$identifierqa_opt_if_loaded('page_size_user_posts')),
            
qa_db_user_recent_a_qs_selectspec($loginuserid$identifier),
            
qa_db_user_recent_c_qs_selectspec($loginuserid$identifier),
            
qa_db_user_recent_edit_qs_selectspec($loginuserid$identifier),
            (isset(
$loginuserid) && !QA_FINAL_EXTERNAL_USERS) ? qa_db_is_favorite_selectspec($loginuseridQA_ENTITY_USER$handle) : null
        
);
    

//    Check the user exists and work out what can and can't be set (if not using single sign-on)
    
    
$loginlevel=qa_get_logged_in_level();

    if (!
QA_FINAL_EXTERNAL_USERS) { // if we're using integrated user management, we can know and show more
        
if ((!is_array($userpoints)) && !is_array($useraccount))
            return include 
QA_INCLUDE_DIR.'qa-page-not-found.php';
    
        
$userid=$useraccount['userid'];

        
$fieldseditable=false;
        
$maxlevelassign=null;
        
        if (
            
$loginuserid &&
            (
$loginuserid!=$userid) &&
            ((
$loginlevel>=QA_USER_LEVEL_SUPER) || ($loginlevel>$useraccount['level'])) &&
            (!
qa_user_permit_error())
        ) { 
// can't change self - or someone on your level (or higher, obviously) unless you're a super admin
        
            
if ($loginlevel>=QA_USER_LEVEL_SUPER)
                
$maxlevelassign=QA_USER_LEVEL_SUPER;

            elseif (
$loginlevel>=QA_USER_LEVEL_ADMIN)
                
$maxlevelassign=QA_USER_LEVEL_MODERATOR;

            elseif (
$loginlevel>=QA_USER_LEVEL_MODERATOR)
                
$maxlevelassign=QA_USER_LEVEL_EXPERT;
                
            if (
$loginlevel>=QA_USER_LEVEL_ADMIN)
                
$fieldseditable=true;
            
            if (isset(
$maxlevelassign) && ($useraccount['flags'] & QA_USER_FLAGS_USER_BLOCKED))
                
$maxlevelassign=min($maxlevelassignQA_USER_LEVEL_EDITOR); // if blocked, can't promote too high
        
}
        
        
$usereditbutton=$fieldseditable || isset($maxlevelassign);
        
$userediting=$usereditbutton && (qa_get_state()=='edit');
    }


//    Process edit or save button for user

    
if (!QA_FINAL_EXTERNAL_USERS) {
        
$reloaduser=false;
        
        if (
$usereditbutton) {
            if (
qa_clicked('docancel'))
                
qa_redirect(qa_request());
            
            elseif (
qa_clicked('doedit'))
                
qa_redirect(qa_request(), array('state' => 'edit'));
                
            elseif (
qa_clicked('dosave')) {
                require_once 
QA_INCLUDE_DIR.'qa-app-users-edit.php';
                require_once 
QA_INCLUDE_DIR.'qa-db-users.php';
                
                
$errors=array();
                
                if (
qa_post_text('removeavatar')) {
                    
qa_db_user_set_flag($useridQA_USER_FLAGS_SHOW_AVATARfalse);
                    
qa_db_user_set_flag($useridQA_USER_FLAGS_SHOW_GRAVATARfalse);

                    if (isset(
$useraccount['avatarblobid'])) {
                        require_once 
QA_INCLUDE_DIR.'qa-db-blobs.php';
                        
                        
qa_db_user_set($userid'avatarblobid'null);
                        
qa_db_user_set($userid'avatarwidth'null);
                        
qa_db_user_set($userid'avatarheight'null);
                        
qa_db_blob_delete($useraccount['avatarblobid']);
                    }
                }
                
                if (
$fieldseditable) {
                    
$inemail=qa_post_text('email');
                    
                    
$filterhandle=$handle// we're not filtering the handle...
                    
$errors=qa_handle_email_filter($filterhandle$inemail$useraccount);
                    unset(
$errors['handle']); // ...and we don't care about any errors in it
                    
                    
if (!isset($errors['email']))
                        if (
$inemail != $useraccount['email']) {
                            
qa_db_user_set($userid'email'$inemail);
                            
qa_db_user_set_flag($useridQA_USER_FLAGS_EMAIL_CONFIRMEDfalse);
                        }
                        
                    
$inprofile=array();
                    foreach (
$userfields as $userfield)
                        
$inprofile[$userfield['fieldid']]=qa_post_text('field_'.$userfield['fieldid']);
                        
                    
$filtermodules=qa_load_modules_with('filter''filter_profile');
                    foreach (
$filtermodules as $filtermodule)
                        
$filtermodule->filter_profile($inprofile$errors$useraccount$userprofile);
                
                    foreach (
$userfields as $userfield)
                        if (!isset(
$errors[$userfield['fieldid']]))
                            
qa_db_user_profile_set($userid$userfield['title'], $inprofile[$userfield['fieldid']]);
                    
                    if (
count($errors))
                        
$userediting=true;
                        
                    
qa_report_event('u_edit'$loginuseridqa_get_logged_in_handle(), qa_cookie_get(), array(
                        
'userid' => $userid,
                        
'handle' => $useraccount['handle'],
                    ));
                }
    
                if (isset(
$maxlevelassign)) {
                    
$inlevel=min($maxlevelassign, (int)qa_post_text('level')); // constrain based on maximum permitted to prevent simple browser-based attack
                    
                    
if ($inlevel != $useraccount['level']) {
                        
qa_db_user_set($userid'level'$inlevel);

                        
qa_report_event('u_level'$loginuseridqa_get_logged_in_handle(), qa_cookie_get(), array(
                            
'userid' => $userid,
                            
'handle' => $useraccount['handle'],
                            
'level' => $inlevel,
                            
'oldlevel' => $useraccount['level'],
                        ));
                    }
                }
                        
                
                if (empty(
$errors))
                    
qa_redirect(qa_request());
                
                list(
$useraccount$userprofile)=qa_db_select_with_pending(
                    
qa_db_user_account_selectspec($useridtrue),
                    
qa_db_user_profile_selectspec($useridtrue)
                );
            }
        }
        
        if (isset(
$maxlevelassign) && ($useraccount['level']<QA_USER_LEVEL_MODERATOR)) {
            if (
qa_clicked('doblock')) {
                require_once 
QA_INCLUDE_DIR.'qa-db-users.php';
                
                
qa_db_user_set_flag($useridQA_USER_FLAGS_USER_BLOCKEDtrue);

                
qa_report_event('u_block'$loginuseridqa_get_logged_in_handle(), qa_cookie_get(), array(
                    
'userid' => $userid,
                    
'handle' => $useraccount['handle'],
                ));

                
qa_redirect(qa_request());
            }

            if (
qa_clicked('dounblock')) {
                require_once 
QA_INCLUDE_DIR.'qa-db-users.php';
                
                
qa_db_user_set_flag($useridQA_USER_FLAGS_USER_BLOCKEDfalse);

                
qa_report_event('u_unblock'$loginuseridqa_get_logged_in_handle(), qa_cookie_get(), array(
                    
'userid' => $userid,
                    
'handle' => $useraccount['handle'],
                ));

                
qa_redirect(qa_request());
            }

            if (
qa_clicked('dohideall') && !qa_user_permit_error('permit_hide_show')) {
                require_once 
QA_INCLUDE_DIR.'qa-db-admin.php';
                require_once 
QA_INCLUDE_DIR.'qa-app-posts.php';
                
                
$postids=qa_db_get_user_visible_postids($userid);
                
                foreach (
$postids as $postid)
                    
qa_post_set_hidden($postidtrue$loginuserid);
                    
                
qa_redirect(qa_request());
            }
            
            if (
qa_clicked('dodelete') && ($loginlevel>=QA_USER_LEVEL_ADMIN)) {
                require_once 
QA_INCLUDE_DIR.'qa-app-users-edit.php';
                
                
qa_delete_user($userid);
                
                
qa_report_event('u_delete'$loginuseridqa_get_logged_in_handle(), qa_cookie_get(), array(
                    
'userid' => $userid,
                    
'handle' => $useraccount['handle'],
                ));
                
                
qa_redirect('users');
            }
        }
    }


//    Process bonus setting button

    
if ( ($loginlevel>=QA_USER_LEVEL_ADMIN) && qa_clicked('dosetbonus') ) {
        require_once 
QA_INCLUDE_DIR.'qa-db-points.php';
        
        
qa_db_points_set_bonus($userid, (int)qa_post_text('bonus'));
        
qa_db_points_update_ifuser($useridnull);
        
qa_redirect(qa_request(), nullnullnull'activity');
    }
    

//    Get information on user references in answers and other stuff need for page

    
$pagesize=qa_opt('page_size_user_posts');
    
$questions=qa_any_sort_and_dedupe(array_merge($questions$answerqs$commentqs$editqs));
    
$questions=array_slice($questions0$pagesize);
    
$usershtml=qa_userids_handles_html(qa_any_get_userids_handles($questions));
    
$usershtml[$userid]=$userhtml;

    
//    Prepare content for theme
    
    
$qa_content=qa_content_prepare(true);
    
    
$qa_content['title']=qa_lang_html_sub('profile/user_x'$userhtml);

    if (isset(
$loginuserid) && !QA_FINAL_EXTERNAL_USERS)
        
$qa_content['favorite']=qa_favorite_form(QA_ENTITY_USER$useraccount['userid'], $favorite,
            
qa_lang_sub($favorite 'main/remove_x_favorites' 'users/add_user_x_favorites'$handle));


//    General information about the user, only available if we're using internal user management
    
    
if (!QA_FINAL_EXTERNAL_USERS) {
        
$qa_content['form_profile']=array(
            
'tags' => 'METHOD="POST" ACTION="'.qa_self_html().'"',
            
            
'style' => 'wide',
            
            
'fields' => array(
                
'avatar' => array(
                    
'type' => 'image',
                    
'style' => 'tall',
                    
'label' => '',
                    
'html' => qa_get_user_avatar_html($useraccount['flags'], $useraccount['email'], $useraccount['handle'],
                        
$useraccount['avatarblobid'], $useraccount['avatarwidth'], $useraccount['avatarheight'], qa_opt('avatar_profile_size')),
                ),
                
                
'removeavatar' => null,
                
                
'duration' => array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('users/member_for'),
                    
'value' => qa_html(qa_time_to_string(qa_opt('db_time')-$useraccount['created'])),
                ),
                
                
'level' => array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('users/member_type'),
                    
'tags' => 'NAME="level"',
                    
'value' => qa_html(qa_user_level_string($useraccount['level'])),
                    
'note' => (($useraccount['flags'] & QA_USER_FLAGS_USER_BLOCKED) && isset($maxlevelassign)) ? qa_lang_html('users/user_blocked') : '',
                ),
            ),
        );
        
        if (empty(
$qa_content['form_profile']['fields']['avatar']['html']))
            unset(
$qa_content['form_profile']['fields']['avatar']);
        
    
    
//    Private message form
    
        
if ( qa_opt('allow_private_messages') && isset($loginuserid) && ($loginuserid!=$userid) && !($useraccount['flags'] & QA_USER_FLAGS_NO_MESSAGES) )
            
$qa_content['form_profile']['fields']['level']['value'].=strtr(qa_lang_html('profile/send_private_message'), array(
                
'^1' => '<A HREF="'.qa_path_html('message/'.$handle).'">',
                
'^2' => '</A>',
            ));
                
    
    
//    Show any extra privileges due to user's level or their points
    
        
$showpermits=array();
        
$permitoptions=qa_get_permit_options();
        
        foreach (
$permitoptions as $permitoption)
            if (
qa_opt($permitoption)<QA_PERMIT_CONFIRMED// if it's not available to all users (after they've confirmed their email address)
                
if (!qa_permit_error($permitoption$userid$useraccount['level'], $useraccount['flags'], $userpoints['points'])) { // but this user can
                    
if ($permitoption=='permit_retag_cat')
                        
$showpermits[]=qa_lang(qa_using_categories() ? 'profile/permit_recat' 'profile/permit_retag');
                    else
                        
$showpermits[]=qa_lang('profile/'.$permitoption); // then show it as an extra priviliege
                
}
                
        if (
count($showpermits))
            
$qa_content['form_profile']['fields']['permits']=array(
                
'type' => 'static',
                
'label' => qa_lang_html('profile/extra_privileges'),
                
'value' => qa_html(implode("n"$showpermits), true),
                
'rows' => count($showpermits),
            );
        
    
    
//    Show email address only if we're an administrator
        
        
if (($loginlevel>=QA_USER_LEVEL_ADMIN) && !qa_user_permit_error()) {
            
$doconfirms=qa_opt('confirm_user_emails') && ($useraccount['level']<QA_USER_LEVEL_EXPERT);
            
$isconfirmed=($useraccount['flags'] & QA_USER_FLAGS_EMAIL_CONFIRMED) ? true false;
    
            
$qa_content['form_profile']['fields']['email']=array(
                
'type' => $userediting 'text' 'static',
                
'label' => qa_lang_html('users/email_label'),
                
'tags' => 'NAME="email"',
                
'value' => qa_html(isset($inemail) ? $inemail $useraccount['email']),
                
'error' => qa_html(@$errors['email']),
                
'note' => ($doconfirms ? (qa_lang_html($isconfirmed 'users/email_confirmed' 'users/email_not_confirmed').' ') : '').
                    
qa_lang_html('users/only_shown_admins'),
            );

        }
            
    
    
//    Show IP addresses and times for last login or write - only if we're a moderator or higher
    
        
if (($loginlevel>=QA_USER_LEVEL_MODERATOR) && !qa_user_permit_error()) {
            
$qa_content['form_profile']['fields']['lastlogin']=array(
                
'type' => 'static',
                
'label' => qa_lang_html('users/last_login_label'),
                
'value' =>
                    
strtr(qa_lang_html('users/x_ago_from_y'), array(
                        
'^1' => qa_time_to_string(qa_opt('db_time')-$useraccount['loggedin']),
                        
'^2' => qa_ip_anchor_html($useraccount['loginip']),
                    )),
                
'note' => qa_lang_html('users/only_shown_moderators'),
            );

            if (isset(
$useraccount['written']))
                
$qa_content['form_profile']['fields']['lastwrite']=array(
                    
'type' => 'static',
                    
'label' => qa_lang_html('users/last_write_label'),
                    
'value' =>
                        
strtr(qa_lang_html('users/x_ago_from_y'), array(
                            
'^1' => qa_time_to_string(qa_opt('db_time')-$useraccount['written']),
                            
'^2' => qa_ip_anchor_html($useraccount['writeip']),
                        )),
                    
'note' => qa_lang_html('users/only_shown_moderators'),
                );
            else
                unset(
$qa_content['form_profile']['fields']['lastwrite']);

        }
        

    
//    Show other profile fields

        
$fieldsediting=$fieldseditable && $userediting;
        
        foreach (
$userfields as $userfield) {    
            if ((
$userfield['flags'] & QA_FIELD_FLAGS_LINK_URL) && !$fieldsediting)
                
$valuehtml=qa_url_to_html_link(@$userprofile[$userfield['title']], qa_opt('links_in_new_window'));

            else {
                
$value=@$inprofile[$userfield['fieldid']];
                if (!isset(
$value))
                    
$value=@$userprofile[$userfield['title']];

                
$valuehtml=qa_html($value, (($userfield['flags'] & QA_FIELD_FLAGS_MULTI_LINE) && !$fieldsediting) ? true false);
            }
                    
            
$label=trim(qa_user_userfield_label($userfield), ':');
            if (
strlen($label))
                
$label.=':';
                
            
$qa_content['form_profile']['fields'][$userfield['title']]=array(
                
'type' => $fieldsediting 'text' 'static',
                
'label' => qa_html($label),
                
'tags' => 'NAME="field_'.$userfield['fieldid'].'"',
                
'value' => $valuehtml,
                
'error' => qa_html(@$errors[$userfield['fieldid']]),
                
'rows' => ($userfield['flags'] & QA_FIELD_FLAGS_MULTI_LINE) ? null,
            );
        }
        

    
//    Edit form or button, if appropriate
        
        
if ($usereditbutton) {

            if (
$userediting) {

                if (
                    (
qa_opt('avatar_allow_gravatar') && ($useraccount['flags'] & QA_USER_FLAGS_SHOW_GRAVATAR)) ||
                    (
qa_opt('avatar_allow_upload') && (($useraccount['flags'] & QA_USER_FLAGS_SHOW_AVATAR)) && isset($useraccount['avatarblobid']))
                ) {
                    
$qa_content['form_profile']['fields']['removeavatar']=array(
                        
'type' => 'checkbox',
                        
'label' => qa_lang_html('users/remove_avatar'),
                        
'tags' => 'NAME="removeavatar"',
                    );
                }
                
                if (isset(
$maxlevelassign)) {
                    
$qa_content['form_profile']['fields']['level']['type']='select';
        
                    
$leveloptions=array(QA_USER_LEVEL_BASICQA_USER_LEVEL_EXPERTQA_USER_LEVEL_EDITORQA_USER_LEVEL_MODERATORQA_USER_LEVEL_ADMINQA_USER_LEVEL_SUPER);
    
                    foreach (
$leveloptions as $leveloption)
                        if (
$leveloption<=$maxlevelassign)
                            
$qa_content['form_profile']['fields']['level']['options'][$leveloption]=qa_html(qa_user_level_string($leveloption));
                }
                
                
$qa_content['form_profile']['buttons']=array(
                    
'save' => array(
                        
'tags' => 'onClick="qa_show_waiting_after(this, false);"',
                        
'label' => qa_lang_html('users/save_user'),
                    ),
                    
                    
'cancel' => array(
                        
'tags' => 'NAME="docancel"',
                        
'label' => qa_lang_html('main/cancel_button'),
                    ),
                );
                
                
$qa_content['form_profile']['hidden']=array(
                    
'dosave' => '1',
                );

            } else {
                
$qa_content['form_profile']['buttons']=array(
                    
'edit' => array(
                        
'tags' => 'NAME="doedit"',
                        
'label' => qa_lang_html('users/edit_user_button'),
                    ),
                );
                
                if (isset(
$maxlevelassign) && ($useraccount['level']<QA_USER_LEVEL_MODERATOR)) {
                    if (
$useraccount['flags'] & QA_USER_FLAGS_USER_BLOCKED) {
                        
$qa_content['form_profile']['buttons']['unblock']=array(
                            
'tags' => 'NAME="dounblock"',
                            
'label' => qa_lang_html('users/unblock_user_button'),
                        );
                        
                        if (
count($questions) && !qa_user_permit_error('permit_hide_show'))
                            
$qa_content['form_profile']['buttons']['hideall']=array(
                                
'tags' => 'NAME="dohideall" onClick="qa_show_waiting_after(this, false);"',
                                
'label' => qa_lang_html('users/hide_all_user_button'),
                            );
                            
                        if (
$loginlevel>=QA_USER_LEVEL_ADMIN)
                            
$qa_content['form_profile']['buttons']['delete']=array(
                                
'tags' => 'NAME="dodelete" onClick="qa_show_waiting_after(this, false);"',
                                
'label' => qa_lang_html('users/delete_user_button'),
                            );
                        
                    } else
                        
$qa_content['form_profile']['buttons']['block']=array(
                            
'tags' => 'NAME="doblock"',
                            
'label' => qa_lang_html('users/block_user_button'),
                        );
                }
            }
        }
        
        if (!
is_array($qa_content['form_profile']['fields']['removeavatar']))
            unset(
$qa_content['form_profile']['fields']['removeavatar']);
            
        
$qa_content['raw']['account']=$useraccount// for plugin layers to access
        
$qa_content['raw']['profile']=$userprofile;
    }
    

//    Information about user activity, available also with single sign-on integration

    
$qa_content['form_activity']=array(
        
'title' => '<A NAME="activity">'.qa_lang_html_sub('profile/activity_by_x'$userhtml).'</A>',
        
        
'style' => 'wide',
        
        
'fields' => array(
            
'bonus' => array(
                
'label' => qa_lang_html('profile/bonus_points'),
                
'tags' => 'NAME="bonus"',
                
'value' => qa_html($userpoints['bonus']),
                
'type' => 'number',
                
'note' => qa_lang_html('users/only_shown_admins'),
            ),
    
            
'points' => array(
                
'type' => 'static',
                
'label' => qa_lang_html('profile/score'),
                
'value' => (@$userpoints['points']==1)
                    ? 
qa_lang_html_sub('main/1_point''<SPAN CLASS="qa-uf-user-points">1</SPAN>''1')
                    : 
qa_lang_html_sub('main/x_points''<SPAN CLASS="qa-uf-user-points">'.qa_html(number_format(@$userpoints['points'])).'</SPAN>')
            ),
            
            
'title' => array(
                
'type' => 'static',
                
'label' => qa_lang_html('profile/title'),
                
'value' => qa_get_points_title_html(@$userpoints['points'], qa_get_points_to_titles()),
            ),
            
            
'questions' => array(
                
'type' => 'static',
                
'label' => qa_lang_html('profile/questions'),
                
'value' => '<SPAN CLASS="qa-uf-user-q-posts">'.qa_html(number_format(@$userpoints['qposts'])).'</SPAN>',
            ),
    
            
'answers' => array(
                
'type' => 'static',
                
'label' => qa_lang_html('profile/answers'),
                
'value' => '<SPAN CLASS="qa-uf-user-a-posts">'.qa_html(number_format(@$userpoints['aposts'])).'</SPAN>',
            ),
        ),
    );
    
    if (
$loginlevel>=QA_USER_LEVEL_ADMIN) {
        
$qa_content['form_activity']['tags']='METHOD="POST" ACTION="'.qa_self_html().'"';
        
        
$qa_content['form_activity']['buttons']=array(
            
'setbonus' => array(
                
'tags' => 'NAME="dosetbonus"',
                
'label' => qa_lang_html('profile/set_bonus_button'),
            ),
        );
        
    } else
        unset(
$qa_content['form_activity']['fields']['bonus']);
    
    if (!isset(
$qa_content['form_activity']['fields']['title']['value']))
        unset(
$qa_content['form_activity']['fields']['title']);
    
    if (
qa_opt('comment_on_qs') || qa_opt('comment_on_as')) { // only show comment count if comments are enabled
        
$qa_content['form_activity']['fields']['comments']=array(
            
'type' => 'static',
            
'label' => qa_lang_html('profile/comments'),
            
'value' => '<SPAN CLASS="qa-uf-user-c-posts">'.qa_html(number_format(@$userpoints['cposts'])).'</SPAN>',
        );
    }
    
    if (
qa_opt('voting_on_qs') || qa_opt('voting_on_as')) { // only show vote record if voting is enabled
        
$votedonvalue='';
        
        if (
qa_opt('voting_on_qs')) {
            
$qvotes=@$userpoints['qupvotes']+@$userpoints['qdownvotes'];

            
$innervalue='<SPAN CLASS="qa-uf-user-q-votes">'.number_format($qvotes).'</SPAN>';
            
$votedonvalue.=($qvotes==1) ? qa_lang_html_sub('main/1_question'$innervalue'1')
                : 
qa_lang_html_sub('main/x_questions'$innervalue);
                
            if (
qa_opt('voting_on_as'))
                
$votedonvalue.=', ';
        }
        
        if (
qa_opt('voting_on_as')) {
            
$avotes=@$userpoints['aupvotes']+@$userpoints['adownvotes'];
            
            
$innervalue='<SPAN CLASS="qa-uf-user-a-votes">'.number_format($avotes).'</SPAN>';
            
$votedonvalue.=($avotes==1) ? qa_lang_html_sub('main/1_answer'$innervalue'1')
                : 
qa_lang_html_sub('main/x_answers'$innervalue);
        }
        
        
$qa_content['form_activity']['fields']['votedon']=array(
            
'type' => 'static',
            
'label' => qa_lang_html('profile/voted_on'),
            
'value' => $votedonvalue,
        );
        
        
$upvotes=@$userpoints['qupvotes']+@$userpoints['aupvotes'];
        
$innervalue='<SPAN CLASS="qa-uf-user-upvotes">'.number_format($upvotes).'</SPAN>';
        
$votegavevalue=(($upvotes==1) ? qa_lang_html_sub('profile/1_up_vote'$innervalue'1') : qa_lang_html_sub('profile/x_up_votes'$innervalue)).', ';
        
        
$downvotes=@$userpoints['qdownvotes']+@$userpoints['adownvotes'];
        
$innervalue='<SPAN CLASS="qa-uf-user-downvotes">'.number_format($downvotes).'</SPAN>';
        
$votegavevalue.=($downvotes==1) ? qa_lang_html_sub('profile/1_down_vote'$innervalue'1') : qa_lang_html_sub('profile/x_down_votes'$innervalue);
        
        
$qa_content['form_activity']['fields']['votegave']=array(
            
'type' => 'static',
            
'label' => qa_lang_html('profile/gave_out'),
            
'value' => $votegavevalue,
        );

        
$innervalue='<SPAN CLASS="qa-uf-user-upvoteds">'.number_format(@$userpoints['upvoteds']).'</SPAN>';
        
$votegotvalue=((@$userpoints['upvoteds']==1) ? qa_lang_html_sub('profile/1_up_vote'$innervalue'1')
            : 
qa_lang_html_sub('profile/x_up_votes'$innervalue)).', ';
            
        
$innervalue='<SPAN CLASS="qa-uf-user-downvoteds">'.number_format(@$userpoints['downvoteds']).'</SPAN>';
        
$votegotvalue.=(@$userpoints['downvoteds']==1) ? qa_lang_html_sub('profile/1_down_vote'$innervalue'1')
            : 
qa_lang_html_sub('profile/x_down_votes'$innervalue);

        
$qa_content['form_activity']['fields']['votegot']=array(
            
'type' => 'static',
            
'label' => qa_lang_html('profile/received'),
            
'value' => $votegotvalue,
        );
    }
    
    if (@
$userpoints['points'])
        
$qa_content['form_activity']['fields']['points']['value'].=
            
qa_lang_html_sub('profile/ranked_x''<SPAN CLASS="qa-uf-user-rank">'.number_format($userrank).'</SPAN>');
    
    if (@
$userpoints['aselects'])
        
$qa_content['form_activity']['fields']['questions']['value'].=($userpoints['aselects']==1)
            ? 
qa_lang_html_sub('profile/1_with_best_chosen''<SPAN CLASS="qa-uf-user-q-selects">1</SPAN>''1')
            : 
qa_lang_html_sub('profile/x_with_best_chosen''<SPAN CLASS="qa-uf-user-q-selects">'.number_format($userpoints['aselects']).'</SPAN>');
    
    if (@
$userpoints['aselecteds'])
        
$qa_content['form_activity']['fields']['answers']['value'].=($userpoints['aselecteds']==1)
            ? 
qa_lang_html_sub('profile/1_chosen_as_best''<SPAN CLASS="qa-uf-user-a-selecteds">1</SPAN>''1')
            : 
qa_lang_html_sub('profile/x_chosen_as_best''<SPAN CLASS="qa-uf-user-a-selecteds">'.number_format($userpoints['aselecteds']).'</SPAN>');


//    For plugin layers to access

    
$qa_content['raw']['userid']=$userid;
    
$qa_content['raw']['points']=$userpoints;
    
$qa_content['raw']['rank']=$userrank;


//    Recent posts by this user

    
if ($pagesize>0) {
        if (
count($questions))
            
$qa_content['q_list']['title']=qa_lang_html_sub('profile/recent_activity_by_x'$userhtml);
        else
            
$qa_content['q_list']['title']=qa_lang_html_sub('profile/no_posts_by_x'$userhtml);
            
        
$qa_content['q_list']['form_profile']=array(
            
'tags' => 'METHOD="POST" ACTION="'.qa_self_html().'"',
        );
        
        
$qa_content['q_list']['qs']=array();
        
        
$htmloptions=qa_post_html_defaults('Q');
        
$htmloptions['whoview']=false;
        
$htmloptions['avatarsize']=0;
        
        foreach (
$questions as $question)
            
$qa_content['q_list']['qs'][]=qa_any_to_q_html_fields($question$loginuseridqa_cookie_get(), $usershtml,
                
null$htmloptions);
    }


    return 
$qa_content;


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