header('Location: ../'); exit; } require_once QA_INCLUDE_DIR . 'db/selects.php'; require_once QA_INCLUDE_DIR . 'app/format.php'; require_once QA_INCLUDE_DIR . 'app/favorites.php'; // Check that we're logged in $userid = qa_get_logged_in_userid(); if (!isset($userid)) { qa_redirect('login'); } // Get lists of favorites for this user $pagesize_qs = qa_opt('page_size_qs'); $pagesize_users = qa_opt('page_size_users'); $pagesize_tags = qa_opt('page_size_tags'); list($numQs, $questions, $numUsers, $users, $numTags, $tags, $categories) = qa_db_select_with_pending(qa_db_selectspec_count(qa_db_user_favorite_qs_selectspec($userid)), qa_db_user_favorite_qs_selectspec($userid, $pagesize_qs), QA_FINAL_EXTERNAL_USERS ? null : qa_db_selectspec_count(qa_db_user_favorite_users_selectspec($userid)), QA_FINAL_EXTERNAL_USERS ? null : qa_db_user_favorite_users_selectspec($userid, $pagesize_users), qa_db_selectspec_count(qa_db_user_favorite_tags_selectspec($userid)), qa_db_user_favorite_tags_selectspec($userid, $pagesize_tags), qa_db_user_favorite_categories_selectspec($userid)); $usershtml = qa_userids_handles_html(QA_FINAL_EXTERNAL_USERS ? $questions : array_merge($questions, $users)); // Prepare and return content for theme $qa_content = qa_content_prepare(true); $qa_content['title'] = qa_lang_html('misc/my_favorites_title'); // Favorite questions $qa_content['q_list'] = qa_favorite_q_list_view($questions, $usershtml); $qa_content['q_list']['title'] = count($questions) ? qa_lang_html('main/nav_qs') : qa_lang_html('misc/no_favorite_qs'); if ($numQs['count'] > count($questions)) { $url = qa_path_html('favorites/questions', array('start' => $pagesize_qs)); $qa_content['q_list']['footer'] = '<p class="qa-link-next"><a href="' . $url . '">' . qa_lang_html('misc/more_favorite_qs') . '</a></p>'; } // Favorite users if (!QA_FINAL_EXTERNAL_USERS) { $qa_content['ranking_users'] = qa_favorite_users_view($users, $usershtml); $qa_content['ranking_users']['title'] = count($users) ? qa_lang_html('main/nav_users') : qa_lang_html('misc/no_favorite_users');
// Data for functions to run $favswitch = array('questions' => array('page_opt' => 'page_size_qs', 'fn_spec' => 'qa_db_user_favorite_qs_selectspec', 'fn_view' => 'qa_favorite_q_list_view', 'key' => 'q_list'), 'users' => array('page_opt' => 'page_size_users', 'fn_spec' => 'qa_db_user_favorite_users_selectspec', 'fn_view' => 'qa_favorite_users_view', 'key' => 'ranking_users'), 'tags' => array('page_opt' => 'page_size_tags', 'fn_spec' => 'qa_db_user_favorite_tags_selectspec', 'fn_view' => 'qa_favorite_tags_view', 'key' => 'ranking_tags')); // Check that we're logged in $userid = qa_get_logged_in_userid(); if (!isset($userid)) { qa_redirect('login'); } // Get lists of favorites of this type $favtype = qa_request_part(1); $start = qa_get_start(); if (!array_key_exists($favtype, $favswitch) || $favtype === 'users' && QA_FINAL_EXTERNAL_USERS) { return include QA_INCLUDE_DIR . 'qa-page-not-found.php'; } extract($favswitch[$favtype]); // get switch variables $pagesize = qa_opt($page_opt); list($totalItems, $items) = qa_db_select_with_pending(qa_db_selectspec_count($fn_spec($userid)), $fn_spec($userid, $pagesize, $start)); $count = $totalItems['count']; $usershtml = qa_userids_handles_html($items); // Prepare and return content for theme $qa_content = qa_content_prepare(true); $qa_content['title'] = qa_lang_html('misc/my_favorites_title'); $qa_content[$key] = $fn_view($items, $usershtml); // Sub navigation for account pages and suggestion $qa_content['suggest_next'] = qa_lang_html_sub('misc/suggest_favorites_add', '<span class="qa-favorite-image"> </span>'); $qa_content['page_links'] = qa_html_page_links(qa_request(), $start, $pagesize, $count, qa_opt('pages_prev_next')); $qa_content['navigation']['sub'] = qa_user_sub_navigation(qa_get_logged_in_handle(), 'favorites', true); return $qa_content; /* Omit PHP closing tag to help avoid accidental output */
qa_fatal_error('User accounts are handled by external code'); } if (!isset($loginUserId)) { $qa_content = qa_content_prepare(); $qa_content['error'] = qa_insert_login_links(qa_lang_html('misc/message_must_login'), qa_request()); return $qa_content; } if (!qa_opt('allow_private_messages') || !qa_opt('show_message_history')) { return include QA_INCLUDE_DIR . 'qa-page-not-found.php'; } // Find the messages for this user $start = qa_get_start(); $pagesize = qa_opt('page_size_pms'); // get number of messages then actual messages for this page $func = $showOutbox ? 'qa_db_messages_outbox_selectspec' : 'qa_db_messages_inbox_selectspec'; $pmSpecCount = qa_db_selectspec_count($func('private', $loginUserId, true)); $pmSpec = $func('private', $loginUserId, true, $start, $pagesize); list($numMessages, $userMessages) = qa_db_select_with_pending($pmSpecCount, $pmSpec); $count = $numMessages['count']; // Prepare content for theme $qa_content = qa_content_prepare(); $qa_content['title'] = qa_lang_html($showOutbox ? 'misc/pm_outbox_title' : 'misc/pm_inbox_title'); $qa_content['script_rel'][] = 'qa-content/qa-user.js?' . QA_VERSION; $qa_content['message_list'] = array('tags' => 'id="privatemessages"', 'messages' => array(), 'form' => array('tags' => 'name="pmessage" method="post" action="' . qa_self_html() . '"', 'style' => 'tall', 'hidden' => array('qa_click' => '', 'handle' => qa_html($loginUserHandle), 'start' => qa_html($start), 'code' => qa_get_form_security_code('pm-' . $loginUserHandle)))); $htmlDefaults = qa_message_html_defaults(); if ($showOutbox) { $htmlDefaults['towhomview'] = true; } foreach ($userMessages as $message) { $msgFormat = qa_message_html_fields($message, $htmlDefaults); $replyHandle = $showOutbox ? $message['tohandle'] : $message['fromhandle'];
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser header('Location: ../'); exit; } require_once QA_INCLUDE_DIR . 'db/selects.php'; require_once QA_INCLUDE_DIR . 'app/users.php'; require_once QA_INCLUDE_DIR . '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 blocked users $start = qa_get_start(); $pagesize = qa_opt('page_size_users'); $userSpecCount = qa_db_selectspec_count(qa_db_users_with_flag_selectspec(QA_USER_FLAGS_USER_BLOCKED)); $userSpec = qa_db_users_with_flag_selectspec(QA_USER_FLAGS_USER_BLOCKED, $start, $pagesize); list($numUsers, $users) = qa_db_select_with_pending($userSpecCount, $userSpec); $count = $numUsers['count']; // 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'] = $count > 0 ? qa_lang_html('users/blocked_users') : qa_lang_html('users/no_blocked_users'); $qa_content['ranking'] = array('items' => array(), 'rows' => ceil(count($users) / qa_opt('columns_users')), 'type' => 'users');