Commit 222c300e by Scott

Set up pagination for favorite questions, users and tags

parent b111c087
......@@ -67,6 +67,9 @@
'message_must_login' => 'Please ^1log in^2 or ^3register^4 to send private messages.',
'message_recent_history' => 'Recent correspondence with ^',
'message_sent' => 'Your private message below was sent',
'more_favorite_qs' => 'More favorite questions...',
'more_favorite_tags' => 'More favorite tags...',
'more_favorite_users' => 'More favorite users...',
'my_favorites_title' => 'My favorites',
'nav_all_my_updates' => 'All my updates',
'nav_my_content' => 'My content',
......
<?php
/*
Question2Answer (c) Gideon Greenspan
http://www.question2answer.org/
File: qa-include/qa-page-favorites.php
Version: See define()s at top of qa-include/qa-base.php
Description: Controller for sub-page listing user's favorites of a certain type
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-favorites.php';
// 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);
$items = qa_db_select_with_pending(
$fn_spec($userid, $pagesize, $start)
);
$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">&nbsp;</span>');
$qa_content['page_links'] = qa_html_page_links(qa_request(), $start, $pagesize, 100, 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
*/
\ No newline at end of file
......@@ -44,10 +44,14 @@
// 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($questions, $users, $tags, $categories) = qa_db_select_with_pending(
qa_db_user_favorite_qs_selectspec($userid),
QA_FINAL_EXTERNAL_USERS ? null : qa_db_user_favorite_users_selectspec($userid),
qa_db_user_favorite_tags_selectspec($userid),
qa_db_user_favorite_qs_selectspec($userid, $pagesize_qs),
QA_FINAL_EXTERNAL_USERS ? null : qa_db_user_favorite_users_selectspec($userid, $pagesize_users),
qa_db_user_favorite_tags_selectspec($userid, $pagesize_tags),
qa_db_user_favorite_categories_selectspec($userid)
);
......@@ -65,6 +69,8 @@
$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');
$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
......@@ -72,6 +78,8 @@
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');
$url = qa_path_html('favorites/users', array('start'=>$pagesize_users));
$qa_content['ranking_users']['footer'] = '<p class="qa-link-next"><a href="'.$url.'">'.qa_lang_html('misc/more_favorite_users').'</a></p>';
}
......@@ -80,10 +88,12 @@
if (qa_using_tags()) {
$qa_content['ranking_tags'] = qa_favorite_tags_view($tags);
$qa_content['ranking_tags']['title'] = count($tags) ? qa_lang_html('main/nav_tags') : qa_lang_html('misc/no_favorite_tags');
$url = qa_path_html('favorites/tags', array('start'=>$pagesize_tags));
$qa_content['ranking_tags']['footer'] = '<p class="qa-link-next"><a href="'.$url.'">'.qa_lang_html('misc/more_favorite_tags').'</a></p>';
}
// Favorite categories
// Favorite categories (no pagination)
if (qa_using_categories()) {
$qa_content['nav_list_categories'] = qa_favorite_categories_view($categories);
......
......@@ -417,6 +417,9 @@
'comments/' => 'qa-page-comments.php',
'confirm' => 'qa-page-confirm.php',
'favorites' => 'qa-page-favorites.php',
'favorites/questions' => 'qa-page-favorites-list.php',
'favorites/users' => 'qa-page-favorites-list.php',
'favorites/tags' => 'qa-page-favorites-list.php',
'feedback' => 'qa-page-feedback.php',
'forgot' => 'qa-page-forgot.php',
'hot/' => 'qa-page-hot.php',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment