mirror of
https://github.com/godotengine/godot-question2answer.git
synced 2026-01-04 22:10:37 +03:00
This project lived only on the server without version control. This is now the starting point for the repository.
115 lines
3.6 KiB
PHP
115 lines
3.6 KiB
PHP
<?php
|
|
/*
|
|
Question2Answer by Gideon Greenspan and contributors
|
|
http://www.question2answer.org/
|
|
|
|
Description: Controller for page listing categories
|
|
|
|
|
|
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 . 'db/selects.php';
|
|
require_once QA_INCLUDE_DIR . 'app/format.php';
|
|
|
|
|
|
$categoryslugs = qa_request_parts(1);
|
|
$countslugs = count($categoryslugs);
|
|
|
|
|
|
// Get information about appropriate categories and redirect to questions page if category has no sub-categories
|
|
|
|
$userid = qa_get_logged_in_userid();
|
|
list($categories, $categoryid, $favoritecats) = qa_db_select_with_pending(
|
|
qa_db_category_nav_selectspec($categoryslugs, false, false, true),
|
|
$countslugs ? qa_db_slugs_to_category_id_selectspec($categoryslugs) : null,
|
|
isset($userid) ? qa_db_user_favorite_categories_selectspec($userid) : null
|
|
);
|
|
|
|
if ($countslugs && !isset($categoryid)) {
|
|
return include QA_INCLUDE_DIR . 'qa-page-not-found.php';
|
|
}
|
|
|
|
|
|
// Function for recursive display of categories
|
|
|
|
function qa_category_nav_to_browse(&$navigation, $categories, $categoryid, $favoritemap)
|
|
{
|
|
foreach ($navigation as $key => $navlink) {
|
|
$category = $categories[$navlink['categoryid']];
|
|
|
|
if (!$category['childcount']) {
|
|
unset($navigation[$key]['url']);
|
|
} elseif ($navlink['selected']) {
|
|
$navigation[$key]['state'] = 'open';
|
|
$navigation[$key]['url'] = qa_path_html('categories/' . qa_category_path_request($categories, $category['parentid']));
|
|
} else
|
|
$navigation[$key]['state'] = 'closed';
|
|
|
|
if (@$favoritemap[$navlink['categoryid']]) {
|
|
$navigation[$key]['favorited'] = true;
|
|
}
|
|
|
|
$navigation[$key]['note'] =
|
|
' - <a href="'.qa_path_html('questions/'.implode('/', array_reverse(explode('/', $category['backpath'])))).'">'.( ($category['qcount']==1)
|
|
? qa_lang_html_sub('main/1_question', '1', '1')
|
|
: qa_lang_html_sub('main/x_questions', number_format($category['qcount']))
|
|
).'</a>';
|
|
|
|
if (strlen($category['content']))
|
|
$navigation[$key]['note'] .= qa_html(' - ' . $category['content']);
|
|
|
|
if (isset($navlink['subnav']))
|
|
qa_category_nav_to_browse($navigation[$key]['subnav'], $categories, $categoryid, $favoritemap);
|
|
}
|
|
}
|
|
|
|
|
|
// Prepare content for theme
|
|
|
|
$qa_content = qa_content_prepare(false, array_keys(qa_category_path($categories, $categoryid)));
|
|
|
|
$qa_content['title'] = qa_lang_html('misc/browse_categories');
|
|
|
|
if (count($categories)) {
|
|
$navigation = qa_category_navigation($categories, $categoryid, 'categories/', false);
|
|
|
|
unset($navigation['all']);
|
|
|
|
$favoritemap = array();
|
|
if (isset($favoritecats)) {
|
|
foreach ($favoritecats as $category) {
|
|
$favoritemap[$category['categoryid']] = true;
|
|
}
|
|
}
|
|
|
|
qa_category_nav_to_browse($navigation, $categories, $categoryid, $favoritemap);
|
|
|
|
$qa_content['nav_list'] = array(
|
|
'nav' => $navigation,
|
|
'type' => 'browse-cat',
|
|
);
|
|
|
|
} else {
|
|
$qa_content['title'] = qa_lang_html('main/no_categories_found');
|
|
$qa_content['suggest_next'] = qa_html_suggest_qs_tags(qa_using_tags());
|
|
}
|
|
|
|
|
|
return $qa_content;
|