favorites.php 4.19 KB
Newer Older
Scott committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
<?php
/*
	Question2Answer by Gideon Greenspan and contributors
	http://www.question2answer.org/

	Description: Controller for page listing user's favorites


	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
*/

Scott committed
22
if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser
23
	header('Location: ../../');
Scott committed
24 25
	exit;
}
Scott committed
26

Scott committed
27 28 29
require_once QA_INCLUDE_DIR . 'db/selects.php';
require_once QA_INCLUDE_DIR . 'app/format.php';
require_once QA_INCLUDE_DIR . 'app/favorites.php';
Scott committed
30 31


Scott committed
32
// Check that we're logged in
Scott committed
33

Scott committed
34
$userid = qa_get_logged_in_userid();
Scott committed
35

Scott committed
36 37
if (!isset($userid))
	qa_redirect('login');
Scott committed
38 39


Scott committed
40
// Get lists of favorites for this user
Scott committed
41

Scott committed
42 43 44
$pagesize_qs = qa_opt('page_size_qs');
$pagesize_users = qa_opt('page_size_users');
$pagesize_tags = qa_opt('page_size_tags');
Scott committed
45

Scott committed
46 47 48
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),
Scott committed
49

Scott committed
50 51
	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),
Scott committed
52

Scott committed
53 54
	qa_db_selectspec_count(qa_db_user_favorite_tags_selectspec($userid)),
	qa_db_user_favorite_tags_selectspec($userid, $pagesize_tags),
Scott committed
55

Scott committed
56 57
	qa_db_user_favorite_categories_selectspec($userid)
);
Scott committed
58

Scott committed
59
$usershtml = qa_userids_handles_html(QA_FINAL_EXTERNAL_USERS ? $questions : array_merge($questions, $users));
Scott committed
60 61


Scott committed
62
// Prepare and return content for theme
Scott committed
63

Scott committed
64
$qa_content = qa_content_prepare(true);
Scott committed
65

Scott committed
66
$qa_content['title'] = qa_lang_html('misc/my_favorites_title');
Scott committed
67 68


Scott committed
69
// Favorite questions
Scott committed
70

Scott committed
71 72 73 74 75 76
$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>';
}
Scott committed
77 78


Scott committed
79
// Favorite users
Scott committed
80

Scott committed
81 82 83 84 85 86
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');
	if ($numUsers['count'] > count($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>';
Scott committed
87
	}
Scott committed
88
}
Scott committed
89 90


Scott committed
91
// Favorite tags
Scott committed
92

Scott committed
93 94 95 96 97 98
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');
	if ($numTags['count'] > count($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>';
Scott committed
99
	}
Scott committed
100
}
Scott committed
101 102


Scott committed
103
// Favorite categories (no pagination)
Scott committed
104

Scott committed
105 106 107 108
if (qa_using_categories()) {
	$qa_content['nav_list_categories'] = qa_favorite_categories_view($categories);
	$qa_content['nav_list_categories']['title'] = count($categories) ? qa_lang_html('main/nav_categories') : qa_lang_html('misc/no_favorite_categories');
}
Scott committed
109 110


Scott committed
111
// Sub navigation for account pages and suggestion
Scott committed
112

Scott committed
113
$qa_content['suggest_next'] = qa_lang_html_sub('misc/suggest_favorites_add', '<span class="qa-favorite-image">&nbsp;</span>');
Scott committed
114

Scott committed
115
$qa_content['navigation']['sub'] = qa_user_sub_navigation(qa_get_logged_in_handle(), 'favorites', true);
Scott committed
116 117


Scott committed
118
return $qa_content;