function get_role_marker($uid, $switch) { if (QA_FINAL_EXTERNAL_USERS) { $user = get_userdata($uid); if (isset($user->wp_capabilities['administrator']) || isset($user->caps['administrator']) || isset($user->allcaps['administrator'])) { $level = qa_lang('users/level_admin'); $img = 'admin'; } elseif (isset($user->wp_capabilities['moderator']) || isset($user->caps['moderator'])) { $level = qa_lang('users/level_moderator'); $img = 'moderator'; } elseif (isset($user->wp_capabilities['editor']) || isset($user->caps['editor'])) { $level = qa_lang('users/level_editor'); $img = 'editor'; } elseif (isset($user->wp_capabilities['contributor']) || isset($user->caps['contributor'])) { $level = qa_lang('users/level_expert'); $img = 'expert'; } else { return; } } else { $levelno = qa_db_read_one_value(qa_db_query_sub('SELECT level FROM ^users WHERE userid=#', $uid), true); $level = qa_user_level_string($levelno); if ($level == qa_lang('users/level_admin') || $level == qa_lang('users/level_super')) { $img = 'admin'; } elseif ($level == qa_lang('users/level_moderator')) { $img = 'moderator'; } elseif ($level == qa_lang('users/level_editor')) { $img = 'editor'; } elseif ($level == qa_lang('users/level_expert')) { $img = 'expert'; } else { return; } } if ($switch == 1) { return '<div class="qa-avatar-marker"><img title="' . qa_html($level) . '" width="20" src="' . QA_HTML_THEME_LAYER_URLTOROOT . $img . '.png"/></div>'; } else { return '<span class="qa-who-marker qa-who-marker-' . $img . '" title="' . qa_html($level) . '">' . qa_opt('marker_plugin_who_text') . '</span>'; } }
if (empty($errors)) { qa_db_user_set_password($userid, $innewpassword1); qa_db_user_set($userid, 'sessioncode', ''); // stop old 'Remember me' style logins from still working qa_set_logged_in_user($userid, $useraccount['handle'], false, $useraccount['sessionsource']); // reinstate this specific session qa_report_event('u_password', $userid, $useraccount['handle'], qa_cookie_get()); qa_redirect('account', array('state' => 'password-changed')); } } } // Prepare content for theme $qa_content = qa_content_prepare(); $qa_content['title'] = qa_lang_html('profile/my_account_title'); $qa_content['error'] = @$errors['page']; $qa_content['form_profile'] = array('tags' => 'enctype="multipart/form-data" method="post" action="' . qa_self_html() . '"', 'style' => 'wide', 'fields' => array('duration' => array('type' => 'static', 'label' => qa_lang_html('users/member_for'), 'value' => qa_time_to_string(qa_opt('db_time') - $useraccount['created'])), 'type' => array('type' => 'static', 'label' => qa_lang_html('users/member_type'), 'value' => qa_html(qa_user_level_string($useraccount['level'])), 'note' => $isblocked ? qa_lang_html('users/user_blocked') : null), 'handle' => array('label' => qa_lang_html('users/handle_label'), 'tags' => 'name="handle"', 'value' => qa_html(isset($inhandle) ? $inhandle : $useraccount['handle']), 'error' => qa_html(@$errors['handle']), 'type' => $changehandle && !$isblocked ? 'text' : 'static'), 'email' => array('label' => qa_lang_html('users/email_label'), 'tags' => 'name="email"', 'value' => qa_html(isset($inemail) ? $inemail : $useraccount['email']), 'error' => isset($errors['email']) ? qa_html($errors['email']) : ($doconfirms && !$isconfirmed ? qa_insert_login_links(qa_lang_html('users/email_please_confirm')) : null), 'type' => $isblocked ? 'static' : 'text'), 'messages' => array('label' => qa_lang_html('users/private_messages'), 'tags' => 'name="messages"', 'type' => 'checkbox', 'value' => !($useraccount['flags'] & QA_USER_FLAGS_NO_MESSAGES), 'note' => qa_lang_html('users/private_messages_explanation')), 'wall' => array('label' => qa_lang_html('users/wall_posts'), 'tags' => 'name="wall"', 'type' => 'checkbox', 'value' => !($useraccount['flags'] & QA_USER_FLAGS_NO_WALL_POSTS), 'note' => qa_lang_html('users/wall_posts_explanation')), 'mailings' => array('label' => qa_lang_html('users/mass_mailings'), 'tags' => 'name="mailings"', 'type' => 'checkbox', 'value' => !($useraccount['flags'] & QA_USER_FLAGS_NO_MAILINGS), 'note' => qa_lang_html('users/mass_mailings_explanation')), 'avatar' => null), 'buttons' => array('save' => array('tags' => 'onclick="qa_show_waiting_after(this, false);"', 'label' => qa_lang_html('users/save_profile'))), 'hidden' => array('dosaveprofile' => '1', 'code' => qa_get_form_security_code('account'))); if (qa_get_state() == 'profile-saved') { $qa_content['form_profile']['ok'] = qa_lang_html('users/profile_saved'); } if (!qa_opt('allow_private_messages')) { unset($qa_content['form_profile']['fields']['messages']); } if (!qa_opt('allow_user_walls')) { unset($qa_content['form_profile']['fields']['wall']); } if (!qa_opt('mailing_enabled')) { unset($qa_content['form_profile']['fields']['mailings']); } if ($isblocked) { unset($qa_content['form_profile']['buttons']['save']); $qa_content['error'] = qa_lang_html('users/no_permission');
$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 ? 8 : 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_BASIC, QA_USER_LEVEL_EXPERT, QA_USER_LEVEL_EDITOR, QA_USER_LEVEL_MODERATOR, QA_USER_LEVEL_ADMIN, QA_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'));
function cs_ajax_user_popover() { $handle_id = qa_post_text('handle'); $handle = qa_post_text('handle'); require_once QA_INCLUDE_DIR . 'qa-db-users.php'; if (isset($handle)) { $userid = qa_handle_to_userid($handle); //$badges = cs_user_badge($handle); if (defined('QA_WORDPRESS_INTEGRATE_PATH')) { $userid = qa_handle_to_userid($handle); $cover = get_user_meta($userid, 'cover'); $cover = $cover[0]; } else { $data = cs_user_data($handle); } ?> <div id="<?php echo $userid; ?> _popover" class="user-popover"> <div class="counts clearfix"> <div class="points"> <?php echo '<span>' . $data['points'] . '</span>Points'; ?> </div> <div class="qcount"> <?php echo '<span>' . $data['qposts'] . '</span>Questions'; ?> </div> <div class="acount"> <?php echo '<span>' . $data['aposts'] . '</span>Answers'; ?> </div> <div class="ccount"> <?php echo '<span>' . $data['cposts'] . '</span>Comments'; ?> </div> </div> <div class="bottom"> <div class="avatar pull-left"><?php echo cs_get_avatar($handle, 30); ?> </div> <span class="name"><?php echo cs_name($handle); ?> </span> <span class="level"><?php echo qa_user_level_string($data['level']); ?> </span> </div> </div> <?php } die; }
} else { $fieldnavcategories = $navcategories; } qa_set_up_category_field($qa_content, $qa_content['form_profile']['fields']['uc_' . $index . '_cat'], 'uc_' . $index . '_cat', $fieldnavcategories, @$userlevel['entityid'], true, true); unset($qa_content['form_profile']['fields']['uc_' . $index . '_cat']['note']); } } $qa_content['script_lines'][] = array("function qa_update_category_levels()", "{", "\tglob=document.getElementById('level_select');", "\tif (!glob)", "\t\treturn;", "\tvar opts=glob.options;", "\tvar lev=parseInt(opts[glob.selectedIndex].value);", "\tfor (var i=1; i<9999; i++) {", "\t\tvar sel=document.getElementById('ls_'+i);", "\t\tif (!sel)", "\t\t\tbreak;", "\t\tsel.qa_prev=sel.qa_prev || sel.options[sel.selectedIndex].value;", "\t\tsel.options.length=1;", "\t\tfor (var j=0; j<opts.length; j++)", "\t\t\tif (parseInt(opts[j].value)>lev)", "\t\t\t\tsel.options[sel.options.length]=new Option(opts[j].text, opts[j].value, false, (opts[j].value==sel.qa_prev));", "\t}", "}"); $qa_content['script_onloads'][] = array("qa_update_category_levels();"); $qa_content['form_profile']['fields']['level']['tags'] .= ' id="level_select" onchange="qa_update_category_levels();"'; } } } else { foreach ($userlevels as $userlevel) { if ($userlevel['entitytype'] == QA_ENTITY_CATEGORY && $userlevel['level'] > $useraccount['level']) { $qa_content['form_profile']['fields']['level']['value'] .= '<br/>' . strtr(qa_lang_html('users/level_for_category'), array('^1' => qa_html(qa_user_level_string($userlevel['level'])), '^2' => '<a href="' . qa_path_html(implode('/', array_reverse(explode('/', $userlevel['backpath'])))) . '">' . qa_html($userlevel['title']) . '</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_permit_error($permitoption, $userid, QA_USER_LEVEL_APPROVED, QA_USER_FLAGS_EMAIL_CONFIRMED, 0) && !qa_permit_error($permitoption, $userid, $useraccount['level'], $useraccount['flags'], $userpoints['points'])) { 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 }
function qa_other_to_q_html_fields($question, $userid, $cookieid, $usershtml, $dummy, $options) { if (qa_to_override(__FUNCTION__)) { $args = func_get_args(); return qa_call_override(__FUNCTION__, $args); } require_once QA_INCLUDE_DIR . 'app/updates.php'; $fields = qa_post_html_fields($question, $userid, $cookieid, $usershtml, null, $options); switch ($question['obasetype'] . '-' . @$question['oupdatetype']) { case 'Q-': $langstring = 'main/asked'; break; case 'Q-' . QA_UPDATE_VISIBLE: if (@$question['opersonal']) { $langstring = $question['hidden'] ? 'misc/your_q_hidden' : 'misc/your_q_reshown'; } else { $langstring = $question['hidden'] ? 'main/hidden' : 'main/reshown'; } break; case 'Q-' . QA_UPDATE_CLOSED: if (@$question['opersonal']) { $langstring = isset($question['closedbyid']) ? 'misc/your_q_closed' : 'misc/your_q_reopened'; } else { $langstring = isset($question['closedbyid']) ? 'main/closed' : 'main/reopened'; } break; case 'Q-' . QA_UPDATE_TAGS: $langstring = @$question['opersonal'] ? 'misc/your_q_retagged' : 'main/retagged'; break; case 'Q-' . QA_UPDATE_CATEGORY: $langstring = @$question['opersonal'] ? 'misc/your_q_recategorized' : 'main/recategorized'; break; case 'A-': $langstring = @$question['opersonal'] ? 'misc/your_q_answered' : 'main/answered'; break; case 'A-' . QA_UPDATE_SELECTED: $langstring = @$question['opersonal'] ? 'misc/your_a_selected' : 'main/answer_selected'; break; case 'A-' . QA_UPDATE_VISIBLE: if (@$question['opersonal']) { $langstring = $question['ohidden'] ? 'misc/your_a_hidden' : 'misc/your_a_reshown'; } else { $langstring = $question['ohidden'] ? 'main/hidden' : 'main/answer_reshown'; } break; case 'A-' . QA_UPDATE_CONTENT: $langstring = @$question['opersonal'] ? 'misc/your_a_edited' : 'main/answer_edited'; break; case 'Q-' . QA_UPDATE_FOLLOWS: $langstring = @$question['opersonal'] ? 'misc/your_a_questioned' : 'main/asked_related_q'; break; case 'C-': $langstring = 'main/commented'; break; case 'C-' . QA_UPDATE_C_FOR_Q: $langstring = @$question['opersonal'] ? 'misc/your_q_commented' : 'main/commented'; break; case 'C-' . QA_UPDATE_C_FOR_A: $langstring = @$question['opersonal'] ? 'misc/your_a_commented' : 'main/commented'; break; case 'C-' . QA_UPDATE_FOLLOWS: $langstring = @$question['opersonal'] ? 'misc/your_c_followed' : 'main/commented'; break; case 'C-' . QA_UPDATE_TYPE: $langstring = @$question['opersonal'] ? 'misc/your_c_moved' : 'main/comment_moved'; break; case 'C-' . QA_UPDATE_VISIBLE: if (@$question['opersonal']) { $langstring = $question['ohidden'] ? 'misc/your_c_hidden' : 'misc/your_c_reshown'; } else { $langstring = $question['ohidden'] ? 'main/hidden' : 'main/comment_reshown'; } break; case 'C-' . QA_UPDATE_CONTENT: $langstring = @$question['opersonal'] ? 'misc/your_c_edited' : 'main/comment_edited'; break; case 'Q-' . QA_UPDATE_CONTENT: default: $langstring = @$question['opersonal'] ? 'misc/your_q_edited' : 'main/edited'; break; } $fields['what'] = qa_lang_html($langstring); if (@$question['opersonal']) { $fields['what_your'] = true; } if ($question['obasetype'] != 'Q' || @$question['oupdatetype'] == QA_UPDATE_FOLLOWS) { $fields['what_url'] = qa_q_path_html($question['postid'], $question['title'], false, $question['obasetype'], $question['opostid']); } if (@$options['contentview'] && !empty($question['ocontent'])) { $viewer = qa_load_viewer($question['ocontent'], $question['oformat']); $fields['content'] = $viewer->get_html($question['ocontent'], $question['oformat'], array('blockwordspreg' => @$options['blockwordspreg'], 'showurllinks' => @$options['showurllinks'], 'linksnewwindow' => @$options['linksnewwindow'])); } if (@$options['whenview']) { $fields['when'] = qa_when_to_html($question['otime'], @$options['fulldatedays']); } if (@$options['whoview']) { $isbyuser = qa_post_is_by_user(array('userid' => $question['ouserid'], 'cookieid' => @$question['ocookieid']), $userid, $cookieid); $fields['who'] = qa_who_to_html($isbyuser, $question['ouserid'], $usershtml, @$options['ipview'] ? @$question['oip'] : null, false, @$question['oname']); if (isset($question['opoints'])) { if (@$options['pointsview']) { $fields['who']['points'] = $question['opoints'] == 1 ? qa_lang_html_sub_split('main/1_point', '1', '1') : qa_lang_html_sub_split('main/x_points', qa_html(number_format($question['opoints']))); } if (isset($options['pointstitle'])) { $fields['who']['title'] = qa_get_points_title_html($question['opoints'], $options['pointstitle']); } } if (isset($question['olevel'])) { $fields['who']['level'] = qa_html(qa_user_level_string($question['olevel'])); } } unset($fields['flags']); if (@$options['flagsview'] && @$question['oflagcount']) { $fields['flags'] = $question['oflagcount'] == 1 ? qa_lang_html_sub_split('main/1_flag', '1', '1') : qa_lang_html_sub_split('main/x_flags', $question['oflagcount']); } unset($fields['avatar']); if (@$options['avatarsize'] > 0) { if (QA_FINAL_EXTERNAL_USERS) { $fields['avatar'] = qa_get_external_avatar_html($question['ouserid'], $options['avatarsize'], false); } else { $fields['avatar'] = qa_get_user_avatar_html($question['oflags'], $question['oemail'], $question['ohandle'], $question['oavatarblobid'], $question['oavatarwidth'], $question['oavatarheight'], $options['avatarsize']); } } return $fields; }
exit; } require_once QA_INCLUDE_DIR . 'qa-db-selects.php'; require_once QA_INCLUDE_DIR . 'qa-app-users.php'; require_once QA_INCLUDE_DIR . 'qa-app-format.php'; // Check we're not using single-sign on integration if (QA_FINAL_EXTERNAL_USERS) { qa_fatal_error('User accounts are handled by external code'); } // Get list of special users $users = qa_db_select_with_pending(qa_db_users_from_level_selectspec(QA_USER_LEVEL_EXPERT)); // Check we have permission to view this page (moderator or above) if (qa_get_logged_in_level() < QA_USER_LEVEL_MODERATOR) { $qa_content = qa_content_prepare(); $qa_content['error'] = qa_lang_html('users/no_permission'); return $qa_content; } // Get userids and handles of retrieved users $usershtml = qa_userids_handles_html($users); // Prepare content for theme $qa_content = qa_content_prepare(); $qa_content['title'] = qa_lang_html('users/special_users'); $qa_content['ranking'] = array('items' => array(), 'rows' => ceil(qa_opt('page_size_users') / qa_opt('columns_users')), 'type' => 'users'); foreach ($users as $user) { $qa_content['ranking']['items'][] = array('label' => $usershtml[$user['userid']], 'score' => qa_html(qa_user_level_string($user['level']))); } $qa_content['navigation']['sub'] = qa_users_sub_navigation(); return $qa_content; /* Omit PHP closing tag to help avoid accidental output */
$errors['newpassword2'] = qa_lang('users/password_mismatch'); } if (empty($errors)) { qa_db_user_set_password($userid, $innewpassword1); qa_db_user_set($userid, 'sessioncode', ''); // stop old 'Remember me' style logins from still working qa_set_logged_in_user($userid, $useraccount['handle'], false, $useraccount['sessionsource']); // reinstate this specific session qa_report_event('u_password', $userid, $useraccount['handle'], qa_cookie_get()); qa_redirect('account', array('state' => 'password-changed')); } } // Prepare content for theme $qa_content = qa_content_prepare(); $qa_content['title'] = qa_lang_html('profile/my_account_title'); $qa_content['form_profile'] = array('tags' => 'ENCTYPE="multipart/form-data" METHOD="POST" ACTION="' . qa_self_html() . '"', 'style' => 'wide', 'fields' => array('duration' => array('type' => 'static', 'label' => qa_lang_html('users/member_for'), 'value' => qa_time_to_string(qa_opt('db_time') - $useraccount['created'])), 'type' => array('type' => 'static', 'label' => qa_lang_html('users/member_type'), 'value' => qa_html(qa_user_level_string($useraccount['level']))), 'handle' => array('label' => qa_lang_html('users/handle_label'), 'tags' => 'NAME="handle"', 'value' => qa_html(isset($inhandle) ? $inhandle : $useraccount['handle']), 'error' => qa_html(@$errors['handle']), 'type' => $changehandle ? 'text' : 'static'), 'email' => array('label' => qa_lang_html('users/email_label'), 'tags' => 'NAME="email"', 'value' => qa_html(isset($inemail) ? $inemail : $useraccount['email']), 'error' => isset($errors['email']) ? qa_html($errors['email']) : ($doconfirms && !$isconfirmed ? qa_insert_login_links(qa_lang_html('users/email_please_confirm')) : null)), 'messages' => array('label' => qa_lang_html('users/private_messages'), 'tags' => 'NAME="messages"', 'type' => 'checkbox', 'value' => !($useraccount['flags'] & QA_USER_FLAGS_NO_MESSAGES), 'note' => qa_lang_html('users/private_messages_explanation')), 'mailings' => array('label' => qa_lang_html('users/mass_mailings'), 'tags' => 'NAME="mailings"', 'type' => 'checkbox', 'value' => !($useraccount['flags'] & QA_USER_FLAGS_NO_MAILINGS), 'note' => qa_lang_html('users/mass_mailings_explanation')), 'avatar' => null), 'buttons' => array('save' => array('label' => qa_lang_html('users/save_profile'))), 'hidden' => array('dosaveprofile' => '1')); if (qa_get_state() == 'profile-saved') { $qa_content['form_profile']['ok'] = qa_lang_html('users/profile_saved'); } if (!qa_opt('allow_private_messages')) { unset($qa_content['form_profile']['fields']['messages']); } if (!qa_opt('mailing_enabled')) { unset($qa_content['form_profile']['fields']['mailings']); } // Avatar upload stuff if (qa_opt('avatar_allow_gravatar') || qa_opt('avatar_allow_upload')) { $avataroptions = array(); if (qa_opt('avatar_default_show') && strlen(qa_opt('avatar_default_blobid'))) { $avataroptions[''] = '<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> ' . qa_lang_html('users/avatar_default'); } else {
function cs_user_nav($handle) { $user = cs_user_data($handle); $this->output(' <div class="user-header"> <div class="user-header-inner clearfix"> <div class="user-thumb"> ' . cs_get_avatar($handle, 150) . ' </div> <div class="user-name-detail"> <h3>' . cs_name($handle) . '<small class="block m-t-mini">' . qa_user_level_string($user['level']) . '</small> </h3> '); $this->output('</div>'); $this->cs_user_profile_button($handle); $this->nav('sub'); $this->favorite(); $this->output('</div>'); $this->output('</div>'); }
function get_full_post($post, $options, $usershtml) { $fields['raw'] = $post; $userid = qa_get_logged_in_userid(); $cookieid = qa_cookie_get(); $fields['netvotes_raw'] = (int) $post['netvotes']; $postid = $post['postid']; $isquestion = $post['basetype'] == 'Q'; $isanswer = $post['basetype'] == 'A'; $isbyuser = @$post['userid'] == $userid; $anchor = urlencode(qa_anchor($post['basetype'], $postid)); $elementid = isset($options['elementid']) ? $options['elementid'] : $anchor; $microformats = false; $isselected = @$options['isselected']; // content if (@$options['contentview'] && !empty($post['content'])) { $viewer = qa_load_viewer($post['content'], $post['format']); $fields['content'] = $viewer->get_html($post['content'], $post['format'], array('blockwordspreg' => @$options['blockwordspreg'], 'showurllinks' => @$options['showurllinks'], 'linksnewwindow' => @$options['linksnewwindow'])); } if ($post['hidden']) { $fields['vote_state'] = 'disabled'; } elseif ($isbyuser) { $fields['vote_state'] = 'disabled'; } elseif (@$post['uservote'] > 0) { $fields['vote_state'] = 'voted_up'; } elseif (@$post['uservote'] < 0) { $fields['vote_state'] = 'voted_down'; } else { if (strpos($options['voteview'], '-uponly-level')) { $fields['vote_state'] = 'up_only'; } else { $fields['vote_state'] = 'enabled'; } } // Created when and by whom $fields['meta_order'] = qa_lang_html('main/meta_order'); // sets ordering of meta elements which can be language-specific if (@$options['whatview']) { $fields['what'] = qa_lang_html($isquestion ? 'main/asked' : ($isanswer ? 'main/answered' : 'main/commented')); if (@$options['whatlink'] && !$isquestion) { $fields['what_url'] = qa_path_html(qa_request(), array('show' => $postid), null, null, qa_anchor($post['basetype'], $postid)); } } if (isset($post['created']) && @$options['whenview']) { $fields['when'] = qa_when_to_html($post['created'], @$options['fulldatedays']); } if (@$options['whoview']) { $fields['who'] = qa_who_to_html($isbyuser, @$post['userid'], $usershtml, @$options['ipview'] ? @$post['createip'] : null, $microformats); if (isset($post['points'])) { if (@$options['pointsview']) { $fields['who']['points'] = $post['points'] == 1 ? qa_lang_html_sub_split('main/1_point', '1', '1') : qa_lang_html_sub_split('main/x_points', qa_html(number_format($post['points']))); } if (isset($options['pointstitle'])) { $fields['who']['title'] = qa_get_points_title_html($post['points'], $options['pointstitle']); } } if (isset($post['level'])) { $fields['who']['level'] = qa_html(qa_user_level_string($post['level'])); } } $isselected = @$options['isselected']; // Updated when and by whom if (isset($post['opostid'])) { // updated meta switch ($post['obasetype'] . '-' . @$post['oupdatetype']) { case 'Q-': $langstring = 'main/asked'; break; case 'Q-' . QA_UPDATE_VISIBLE: $langstring = $post['hidden'] ? 'main/hidden' : 'main/reshown'; break; case 'Q-' . QA_UPDATE_CLOSED: $langstring = isset($post['closedbyid']) ? 'main/closed' : 'main/reopened'; break; case 'Q-' . QA_UPDATE_TAGS: $langstring = 'main/retagged'; break; case 'Q-' . QA_UPDATE_CATEGORY: $langstring = 'main/recategorized'; break; case 'A-': $langstring = 'main/answered'; break; case 'A-' . QA_UPDATE_SELECTED: $langstring = 'main/answer_selected'; break; case 'A-' . QA_UPDATE_VISIBLE: $langstring = $post['ohidden'] ? 'main/hidden' : 'main/answer_reshown'; break; case 'A-' . QA_UPDATE_CONTENT: $langstring = 'main/answer_edited'; break; case 'Q-' . QA_UPDATE_FOLLOWS: $langstring = 'main/asked_related_q'; break; case 'C-': $langstring = 'main/commented'; break; case 'C-' . QA_UPDATE_TYPE: $langstring = 'main/comment_moved'; break; case 'C-' . QA_UPDATE_VISIBLE: $langstring = $post['ohidden'] ? 'main/hidden' : 'main/comment_reshown'; break; case 'C-' . QA_UPDATE_CONTENT: $langstring = 'main/comment_edited'; break; case 'Q-' . QA_UPDATE_CONTENT: default: $langstring = 'main/edited'; break; } $fields['what_2'] = qa_lang_html($langstring); if ($post['obasetype'] != 'Q' || @$post['oupdatetype'] == QA_UPDATE_FOLLOWS) { $fields['what_2_url'] = qa_q_path_html($post['postid'], $post['title'], false, $post['obasetype'], $post['opostid']); } if (@$options['contentview'] && !empty($post['ocontent'])) { $viewer = qa_load_viewer($post['ocontent'], $post['oformat']); $fields['content_2'] = $viewer->get_html($post['ocontent'], $post['oformat'], array('blockwordspreg' => @$options['blockwordspreg'], 'showurllinks' => @$options['showurllinks'], 'linksnewwindow' => @$options['linksnewwindow'])); } if (@$options['whenview']) { $fields['when_2'] = qa_when_to_html($post['otime'], @$options['fulldatedays']); } if (@$options['whoview']) { $isbyuser = qa_post_is_by_user(array('userid' => $post['ouserid'], 'cookieid' => @$post['ocookieid']), $userid, $cookieid); $fields['who_2'] = qa_who_to_html($isbyuser, $post['ouserid'], $usershtml, @$options['ipview'] ? @$post['oip'] : null, false); if (isset($post['opoints'])) { if (@$options['pointsview']) { $fields['who_2']['points'] = $post['opoints'] == 1 ? qa_lang_html_sub_split('main/1_point', '1', '1') : qa_lang_html_sub_split('main/x_points', qa_html(number_format($post['opoints']))); } if (isset($options['pointstitle'])) { $fields['who_2']['title'] = qa_get_points_title_html($post['opoints'], $options['pointstitle']); } } if (isset($post['olevel'])) { $fields['who_2']['level'] = qa_html(qa_user_level_string($post['olevel'])); } } } else { if (@$options['updateview'] && isset($post['updated']) && ($post['updatetype'] != QA_UPDATE_SELECTED || $isselected) && (!isset($post['created']) || $post['hidden'] && $post['updatetype'] == QA_UPDATE_VISIBLE || isset($post['closedbyid']) && $post['updatetype'] == QA_UPDATE_CLOSED || abs($post['updated'] - $post['created']) > 300 || $post['lastuserid'] != $post['userid'])) { switch ($post['updatetype']) { case QA_UPDATE_TYPE: case QA_UPDATE_PARENT: $langstring = 'main/moved'; break; case QA_UPDATE_CATEGORY: $langstring = 'main/recategorized'; break; case QA_UPDATE_VISIBLE: $langstring = $post['hidden'] ? 'main/hidden' : 'main/reshown'; break; case QA_UPDATE_CLOSED: $langstring = isset($post['closedbyid']) ? 'main/closed' : 'main/reopened'; break; case QA_UPDATE_TAGS: $langstring = 'main/retagged'; break; case QA_UPDATE_SELECTED: $langstring = 'main/selected'; break; default: $langstring = 'main/edited'; break; } $fields['what_2'] = qa_lang_html($langstring); if (@$options['whenview']) { $fields['when_2'] = qa_when_to_html($post['updated'], @$options['fulldatedays']); } if (isset($post['lastuserid']) && @$options['whoview']) { $fields['who_2'] = qa_who_to_html(isset($userid) && $post['lastuserid'] == $userid, $post['lastuserid'], $usershtml, @$options['ipview'] ? $post['lastip'] : null, false); } } } $fields['avatar'] = $this->get_post_avatar($post); return $fields; }
function ranking($ranking) { $class = @$ranking['type'] == 'users' ? 'qa-top-users' : 'qa-top-tags'; $item_count = min($ranking['rows'], count($ranking['items'])); if (@$ranking['type'] == 'users') { if (count($ranking['items'])) { $this->output('<div class="page-users-list clearfix"><div class="row">'); $columns = qa_opt('columns_users'); $pagesize = qa_opt('page_size_users'); $start = qa_get_start(); $users = qa_db_select_with_pending(qa_db_top_users_selectspec($start, qa_opt_if_loaded('page_size_users'))); $users = array_slice($users, 0, $pagesize); $usershtml = qa_userids_handles_html($users); foreach ($ranking['items'] as $user) { $this->output('<div class="user-box col-sm-' . ceil(12 / $columns) . ' col-xs-12">'); $user_raw = !empty($user['raw']) ? $user['raw'] : $user; $handle = @$user_raw['handle']; $handle_html = @$usershtml[$user_raw['userid']]; if (defined('QA_WORDPRESS_INTEGRATE_PATH')) { $level_html = $user['score']; unset($user['score']); } else { if (is_numeric($user['score'])) { $user_level = donut_get_user_level($user_raw['userid']); $level_html = qa_user_level_string($user_level); } else { $level_html = $user['score']; unset($user['score']); } } if (empty($handle_html)) { $handle_html = $user['label']; } $avatar = QA_FINAL_EXTERNAL_USERS ? qa_get_external_avatar_html(@$user_raw['userid'], qa_opt('avatar_users_size'), true) : qa_get_user_avatar_html(@$user_raw['flags'], @$user_raw['email'], @$user_raw['handle'], @$user_raw['avatarblobid'], @$user_raw['avatarwidth'], @$user_raw['avatarheight'], 70, true); if (isset($user['score'])) { $userpoints = $user['score']; $pointshtml = $userpoints === 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_lang_html_sub('main/x_points', qa_html($userpoints)); if (!empty($pointshtml)) { $pointshtml = '<p class="score">' . $pointshtml . '</p>'; } } $this->output(' <div class="user-box-inner"> <div class="user-avatar"> ' . $avatar . ' </div> <div class="user-data"> ' . $handle_html . ' <div class="user-level"> ' . $level_html . ' </div> <div class="counts clearfix"> ' . @$pointshtml . ' </div> </div>'); if (qa_opt('badge_active') && function_exists('qa_get_badge_list')) { $this->output('<div class="badge-list">' . donut_user_badge($handle) . '</div>'); } $this->output('</div>'); $this->output('</div>'); } $this->output('</div>'); $this->output('</div>'); } else { $title = isset($this->content['ranking_users']['title']) ? $this->content['ranking_users']['title'] : @$this->content['title']; $this->output(' <div class="no-items"> <div class="alert alert-info"><span class="fa fa-warning"></span> ' . $title . '</div> </div>'); } } elseif (@$ranking['type'] == 'tags') { if (count($ranking['items'])) { $this->output('<div id="tags-list" class="row ' . $class . '">'); $columns = qa_opt('columns_tags'); for ($column = 0; $column < $columns; $column++) { $this->set_context('ranking_column', $column); $this->output('<div class="col-md-' . ceil(12 / $columns) . ' col-xs-12" >'); $this->output('<ul class="donut-tags-list">'); for ($row = 0; $row < $item_count; $row++) { $this->set_context('ranking_row', $row); $this->donut_tags_item(@$ranking['items'][$column * $item_count + $row], $class, $column > 0); } $this->clear_context('ranking_column'); $this->output('</ul>'); $this->output('</div>'); } $this->clear_context('ranking_row'); $this->output('</div>'); } else { $this->output(' <div class="no-items"> <div class="alert alert-info"><span class="fa fa-warning"></span> ' . $this->content['ranking_tags']['title'] . '</div> </div>'); } } else { parent::ranking($ranking); } }
$this->content['ra_profile'][$k] = $c; } } foreach ($p as $k => $c) { if ($k == 'duration' || $k == 'lastlogin' || $k == 'lastwrite') { $this->content['ra_visit'][$k] = $c; } } ?> <div class="profile-fields clearfix"> <div class="profile-avatar pull-left"> <?php echo $p['avatar']['html']; ?> <h3><?php echo $this->content['raw']['account']['handle'] . '<span>' . qa_html(qa_user_level_string($this->content['raw']['account']['level'])); ?> </span></h3> <div class="points icon-radio-checked"><?php echo $user[0]['points']; ?> </div> <div class="badges"><?php echo ra_user_badge($handle); ?> </div> </div> <div class="user-info"> <div class="profile-buttons"> <?php
function qa_other_to_q_html_fields($question, $userid, $cookieid, $usershtml, $dummy, $options) { $fields = qa_post_html_fields($question, $userid, $cookieid, $usershtml, null, $options); switch ($question['obasetype']) { case 'Q': $fields['what'] = @$question['oedited'] ? qa_lang_html('main/edited') : null; break; case 'A': $fields['what'] = @$question['oedited'] ? qa_lang_html('main/answer_edited') : qa_lang_html('main/answered'); break; case 'C': $fields['what'] = @$question['oedited'] ? qa_lang_html('main/comment_edited') : qa_lang_html('main/commented'); break; } if ($question['obasetype'] != 'Q') { $fields['what_url'] = $fields['url'] . '#' . qa_html(urlencode(qa_anchor($question['obasetype'], $question['opostid']))); } if (@$options['whenview']) { $fields['when'] = qa_lang_html_sub_split('main/x_ago', qa_html(qa_time_to_string(qa_opt('db_time') - $question['otime']))); } if (@$options['whoview']) { $isbyuser = qa_post_is_by_user(array('userid' => $question['ouserid'], 'cookieid' => $question['ocookieid']), $userid, $cookieid); $fields['who'] = qa_who_to_html($isbyuser, $question['ouserid'], $usershtml, @$options['ipview'] ? $question['oip'] : null, false); if (isset($question['opoints'])) { if (@$options['pointsview']) { $fields['who']['points'] = $question['opoints'] == 1 ? qa_lang_html_sub_split('main/1_point', '1', '1') : qa_lang_html_sub_split('main/x_points', qa_html(number_format($question['opoints']))); } if (isset($options['pointstitle'])) { $fields['who']['title'] = qa_get_points_title_html($question['opoints'], $options['pointstitle']); } } if (isset($question['olevel'])) { $fields['who']['level'] = qa_html(qa_user_level_string($question['olevel'])); } } unset($fields['flags']); if (@$options['flagsview'] && @$post['oflagcount']) { $fields['flags'] = $post['oflagcount'] == 1 ? qa_lang_html_sub_split('main/1_flag', '1', '1') : qa_lang_html_sub_split('main/x_flags', $post['oflagcount']); } unset($fields['avatar']); if (!QA_FINAL_EXTERNAL_USERS && @$options['avatarsize'] > 0) { $fields['avatar'] = qa_get_user_avatar_html($question['oflags'], $question['oemail'], $question['ohandle'], $question['oavatarblobid'], $question['oavatarwidth'], $question['oavatarheight'], $options['avatarsize']); } return $fields; }
function ranking($ranking) { $class = @$ranking['type'] == 'users' ? 'qa-top-users' : 'qa-top-tags'; $rows = min($ranking['rows'], count($ranking['items'])); if (!$rows) { $rows = 1; } if (@$ranking['type'] == 'users') { $this->output('<div class="page-users-list clearfix"><div class="row">'); if (isset($ranking['items'])) { $columns = ceil(count($ranking['items']) / $rows); } if (isset($ranking['items'])) { $pagesize = qa_opt('page_size_users'); $start = qa_get_start(); $users = qa_db_select_with_pending(qa_db_top_users_selectspec($start, qa_opt_if_loaded('page_size_users'))); $users = array_slice($users, 0, $pagesize); $usershtml = qa_userids_handles_html($users); foreach ($ranking['items'] as $user) { $this->output('<div class="user-box col-sm-' . ceil(12 / $columns) . ' col-xs-12">'); $user_raw = !empty($user['raw']) ? $user['raw'] : $user; $handle = @$user_raw['handle']; $handle_html = @$usershtml[$user_raw['userid']]; if (isset($user_raw['userid'])) { $user_rank = qa_db_select_with_pending(qa_db_user_rank_selectspec($user_raw['userid'], true)); $level_html = qa_user_level_string($user_rank); } else { $level_html = $user['score']; unset($user['score']); } if (empty($handle_html)) { $handle_html = $user['label']; } $avatar = QA_FINAL_EXTERNAL_USERS ? qa_get_external_avatar_html(@$user_raw['userid'], qa_opt('avatar_users_size'), true) : qa_get_user_avatar_html(@$user_raw['flags'], @$user_raw['email'], @$user_raw['handle'], @$user_raw['avatarblobid'], @$user_raw['avatarwidth'], @$user_raw['avatarheight'], 70, true); if (isset($user['score'])) { $userpoints = $user['score']; $pointshtml = $userpoints === 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_lang_html_sub('main/x_points', qa_html($userpoints)); if (!empty($pointshtml)) { $pointshtml = '<p class="score">' . $pointshtml . '</p>'; } } $this->output(' <div class="user-box-inner"> <div class="user-avatar"> ' . $avatar . ' </div> <div class="user-data"> ' . $handle_html . ' <div class="user-level"> ' . $level_html . ' </div> <div class="counts clearfix"> ' . @$pointshtml . ' </div> </div>'); if (qa_opt('badge_active') && function_exists('qa_get_badge_list')) { $this->output('<div class="badge-list">' . donut_user_badge($handle) . '</div>'); } $this->output('</div>'); $this->output('</div>'); } } else { $this->output(' <div class="no-items"> <h3 class="">' . qa_lang_html('main/no_active_users') . '</h3> </div>'); } $this->output('</div>'); $this->output('</div>'); } elseif (@$ranking['type'] == 'tags') { if ($rows > 0) { $this->output('<div id="tags-list" class="row ' . $class . '">'); $tags = array(); foreach (@$ranking['items'] as $item) { $tags[] = strip_tags($item['label']); } $columns = ceil(count($ranking['items']) / $rows); for ($column = 0; $column < $columns; $column++) { $this->set_context('ranking_column', $column); $this->output('<div class="col-md-' . ceil(12 / $columns) . ' col-xs-12" >'); $this->output('<ul class="donut-tags-list">'); for ($row = 0; $row < $rows; $row++) { $this->set_context('ranking_row', $row); $this->donut_tags_item(@$ranking['items'][$column * $rows + $row], $class, $column > 0); } $this->clear_context('ranking_column'); $this->output('</ul>'); $this->output('</div>'); } $this->clear_context('ranking_row'); $this->output('</div>'); } else { $this->output(' <div class="no-items"> <h3 class="icon-warning">' . qa_lang('cleanstrap/no_tags') . '</h3> <p>' . qa_lang('cleanstrap/no_results_detail') . '</p> </div>'); } } else { if ($rows > 0) { $this->output('<table class="' . $class . '-table">'); $columns = ceil(count($ranking['items']) / $rows); for ($row = 0; $row < $rows; $row++) { $this->set_context('ranking_row', $row); $this->output('<tr>'); for ($column = 0; $column < $columns; $column++) { $this->set_context('ranking_column', $column); $this->ranking_item(@$ranking['items'][$column * $rows + $row], $class, $column > 0); } $this->clear_context('ranking_column'); $this->output('</tr>'); } $this->clear_context('ranking_row'); $this->output('</table>'); } else { $this->output(' <div class="no-items"> <h3 class="icon-warning">' . qa_lang_html('cleanstrap/no_results') . '</h3> <p>' . qa_lang_html('cleanstrap/no_results_detail') . '</p> </div>'); } } }
function activitylist() { // get points for each activity require_once QA_INCLUDE_DIR . 'qa-db-points.php'; require_once QA_INCLUDE_DIR . 'qa-db-users.php'; $optionnames = qa_db_points_option_names(); $options = qa_get_options($optionnames); $multi = (int) $options['points_multiple']; $upvote = ''; $downvote = ''; if (@$options['points_per_q_voted_up']) { $upvote = '_up'; $downvote = '_down'; } $event_point['in_q_vote_up'] = (int) $options['points_per_q_voted' . $upvote] * $multi; $event_point['in_q_vote_down'] = (int) $options['points_per_q_voted' . $downvote] * $multi * -1; $event_point['in_q_unvote_up'] = (int) $options['points_per_q_voted' . $upvote] * $multi * -1; $event_point['in_q_unvote_down'] = (int) $options['points_per_q_voted' . $downvote] * $multi; $event_point['in_a_vote_up'] = (int) $options['points_per_a_voted' . $upvote] * $multi; $event_point['in_a_vote_down'] = (int) $options['points_per_a_voted' . $downvote] * $multi * -1; $event_point['in_a_unvote_up'] = (int) $options['points_per_a_voted' . $upvote] * $multi * -1; $event_point['in_a_unvote_down'] = (int) $options['points_per_a_voted' . $downvote] * $multi; $event_point['in_a_select'] = (int) $options['points_a_selected'] * $multi; $event_point['in_a_unselect'] = (int) $options['points_a_selected'] * $multi * -1; $event_point['q_post'] = (int) $options['points_post_q'] * $multi; $event_point['a_post'] = (int) $options['points_post_a'] * $multi; $event_point['a_select'] = (int) $options['points_select_a'] * $multi; $event_point['q_vote_up'] = (int) $options['points_vote_up_q'] * $multi; $event_point['q_vote_down'] = (int) $options['points_vote_down_q'] * $multi; $event_point['a_vote_up'] = (int) $options['points_vote_up_a'] * $multi; $event_point['a_vote_down'] = (int) $options['points_vote_down_a'] * $multi; /* // Exclude Activities $exclude = array( 'u_login', 'u_logout', 'u_password', 'u_reset', 'u_save', 'u_edit', 'u_block', 'u_unblock', 'feedback', 'search', 'badge_awarded', ); $excludes = "'".implode("','",$exclude)."'"; $eventslist = qa_db_read_all_assoc( qa_db_query_sub( 'SELECT UNIX_TIMESTAMP(datetime) AS datetime, userid, postid, effecteduserid, event, params FROM ^userlog WHERE userid=# AND DATE_SUB(CURDATE(),INTERVAL # DAY) <= datetime AND event NOT IN (' . $excludes .') ORDER BY datetime DESC'.(qa_opt('qat_activity_number')?' LIMIT '.(int)qa_opt('qat_activity_number'):''), $userid, qa_opt('qat_activity_age') ) ); */ // Get Events $userid = qa_get_logged_in_userid(); $eventslist = qa_db_read_all_assoc(qa_db_query_sub('SELECT UNIX_TIMESTAMP(datetime) AS datetime, userid, postid, effecteduserid, event, params FROM ^userlog WHERE effecteduserid=# AND DATE_SUB(CURDATE(),INTERVAL # DAY) <= datetime ORDER BY datetime DESC' . (qa_opt('qat_activity_number') ? ' LIMIT ' . (int) qa_opt('qat_activity_number') : ''), $userid, qa_opt('qat_activity_age'))); $event = array(); $output = ''; $i = 0; // $userids = array(); foreach ($eventslist as $event) { $userids[$event['userid']] = $event['userid']; $userids[$event['effecteduserid']] = $event['effecteduserid']; } $handles = qa_db_user_get_userid_handles($userids); // get event's: time, type, parameters // get post id of questions foreach ($eventslist as $event) { $title = ''; $link = ''; $vote_status = ''; $handle = $handles[$event['userid']]; $user_link = qa_path('user/' . $handle); $datetime = $event['datetime']; $event['date'] = qa_html(qa_time_to_string(qa_opt('db_time') - $datetime)); $event['params'] = json_decode($event['params'], true); $output .= '<li>'; switch ($event['event']) { case 'related': // related question to an answer $url = qa_path_html(qa_q_request($event['postid'], $event['params']['title']), null, qa_opt('site_url'), null, null); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"><strong class="avatar"><a href="' . $user_link . '">' . $handle . '</a></strong> <span class="what">Asked a question related to your answer</span> </p> <a class="title" href="' . $url . '">' . $event['params']['title'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'a_post': // user's question had been answered $anchor = qa_anchor('A', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"><strong class="avatar"><a href="' . $user_link . '">' . $handle . '</a></strong> <span class="what">Answered</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'c_post': // user's question had been commented $anchor = qa_anchor('C', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"><strong class="avatar"><a href="' . $user_link . '">' . $handle . '</a></strong> <span class="what">Commented</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'q_reshow': // user's question had been answered $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, null); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your question had been accepted</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'a_reshow': // user's question had been answered $anchor = qa_anchor('A', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your answer had been made visible</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'c_reshow': // user's question had been answered $anchor = qa_anchor('C', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your comment had been accepted</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'a_select': // user's question had been answered $anchor = qa_anchor('A', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"><strong class="avatar"><a href="' . $user_link . '">' . $handle . '</a></strong> <span class="what">selected your answer</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'in_q_vote': // user's question had been answered $anchor = qa_anchor('Q', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); if ($event['params']['q_vote_up']) { $vote_status .= '<span>' . $event['params']['q_vote_up'] . ' upvotes</span>'; } if ($event['params']['q_vote_down']) { if (isset($vote_status)) { $vote_status .= ' - '; } $vote_status .= '<span>' . $event['params']['q_vote_down'] . ' downvotes</span>'; } if ($event['params']['favorite'] && $event['params']['favorite'] >= 1) { if (isset($vote_status)) { $vote_status .= ' - '; } $vote_status .= '<span>' . $event['params']['favorite'] . ' favourites</span>'; } $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your question received new votes: ' . $vote_status . '</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'in_a_vote': // user's question had been answered $anchor = qa_anchor('A', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); if ($event['params']['a_vote_up']) { $vote_status = '<span>' . $event['params']['a_vote_up'] . ' upvotes</span>'; } if ($event['params']['a_vote_down']) { if (isset($vote_status)) { $vote_status .= ' - '; } $vote_status .= '<span>' . $event['params']['a_vote_down'] . ' downvotes</span>'; } $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your answer received new votes: ' . $vote_status . '</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'q_approve': $anchor = qa_anchor('Q', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your question was approved</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'a_approve': $anchor = qa_anchor('A', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your answer was approved</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'c_approve': $anchor = qa_anchor('C', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your comment was approved</span> </p> <a class="title" href="' . $url . '">' . $event['params']['qtitle'] . '</a> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'q_reject': $anchor = qa_anchor('C', $event['postid']); $url = qa_path_html(qa_q_request($event['params']['qid'], $event['params']['qtitle']), null, qa_opt('site_url'), null, $anchor); $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">your question was rejected</span> </p> <span class="title">' . $event['params']['qtitle'] . '</span> <span class="date"> ' . $event['date'] . '</span> </div>'; break; case 'a_reject': case 'c_reject': break; case 'u_level': $output .= '<div class="event-icon pull-left icon-chat"></div> <div class="event-content"> <p class="title"> <span class="what">You level had been changed from' . qa_html(qa_user_level_string($event['params']['oldlevel'])) . ' to ' . qa_html(qa_user_level_string($event['params']['level'])) . '</span> </p> </div>'; break; case 'a_post': break; } } $output .= '</li>'; return $output; }