<?php
require_once file_exists('maincore.php') ? 'maincore.php' : __DIR__."/../../maincore.php";
include INFUSIONS."figurelib/infusion_db.php";
require_once THEMES."templates/header.php";
require_once INCLUDES."infusions_include.php";
if (!db_exists(DB_FIGURE_ITEMS)) { redirect(BASEDIR."error.php?code=404"); }
require_once INFUSIONS."figurelib/_functions.inc.php";
// Handle Admin Catcher
if (
(iADMIN || iSUPERADMIN) && checkrights("FI") &&
(isset($_GET['action']) && $_GET['action'] == "admincatcher") &&
(isset($_GET['figure_id']) && isNum($_GET['figure_id']) && dbcount("(figure_id)", DB_FIGURE_ITEMS, "figure_id='".$_GET['figure_id']."'"))
) {
redirect(INFUSIONS."figurelib/admin.php".$aidlink."&section=figurelib_form&action=edit&figure_id=".$_GET['figure_id']);
}
// GET GLOBAL VARIABLES
global $aidlink;
global $settings;
// LANGUAGE
if (file_exists(INFUSIONS."figurelib/locale/".LOCALESET."locale_figurelib.php")) {
include INFUSIONS."figurelib/locale/".LOCALESET."locale_figurelib.php";
} else {
include INFUSIONS."figurelib/locale/English/locale_figurelib.php";
}
include INFUSIONS."figurelib/templates/template_render_figure.php"; // TEMPLATE FOR FIGURE OVERVIEW PER CATEGORY
include INFUSIONS."figurelib/templates/template_render_figure_cats.php"; // TEMPLATE FOR CATEGORIES OVERVIEW
include INFUSIONS."figurelib/templates/template_render_figure_items.php"; // TEMPLATE FOR DETAILS OF A FIGURE
include INFUSIONS."figurelib/templates/template_render_figure_manufacturers.php"; // TEMPLATE FOR MANUFACTURERS
// Get Settings
$figurelibSettings = get_settings("figurelib");
// Figure Cat Index
$figure_cat_index = dbquery_tree(DB_FIGURE_CATS, 'figure_cat_id', 'figure_cat_parent');
// Add Breadcrumb
add_breadcrumb(["link" => INFUSIONS."figurelib/figures.php", "title" => \PHPFusion\SiteLinks::get_current_SiteLinks("", "link_name")]);
// Display a Figure
if (
isset($_GET['figure_id']) &&
isnum($_GET['figure_id']) &&
dbcount("(figure_id)", DB_FIGURE_ITEMS, "figure_id='".intval($_GET['figure_id'])."'
AND figure_freigabe='1'
AND ".groupaccess("figure_visibility")."")
) {
// Comments and Ratings
include INCLUDES."comments_include.php";
include INCLUDES."ratings_include.php";
// Update Counter
dbquery("UPDATE ".DB_FIGURE_ITEMS." SET figure_clickcount=figure_clickcount+1 WHERE figure_id='".intval($_GET['figure_id'])."'");
// Get Figure Title and Category ID
@list(
$_GET['figure_cat_id'],
$figureTitle
) = dbarraynum(dbquery("
SELECT figure_cat, figure_title FROM ".DB_FIGURE_ITEMS."
WHERE figure_id='".intval($_GET['figure_id'])."'
AND figure_freigabe='1'
AND ".groupaccess("figure_visibility")."
"));
// Add Sitetitle
add_to_title($locale['INF_TITLE']);
// Add Breadcrumbs
figure_cat_breadcrumbs($figure_cat_index);
add_breadcrumb(["link" => INFUSIONS."figurelib/figures.php?figure_id=".$_GET['figure_id'], "title" => trimlink($figureTitle, 40)]);
// Add Sitetitle
add_to_title(": ".$figureTitle);
// Display Figure
$info = array();
$info['item'] = array();
render_figure_items($info);
// Display a Category
} elseif (
isset($_GET['figure_cat_id']) &&
isnum($_GET['figure_cat_id']) &&
dbcount("(figure_cat_id)", DB_FIGURE_CATS, "figure_cat_id='".intval($_GET['figure_cat_id'])."'")
) {
// Get Figure Category Datas
$cdata = dbarray(dbquery("
SELECT
figure_cat_id,
figure_cat_name,
figure_cat_sorting
FROM ".DB_FIGURE_CATS."
WHERE figure_cat_id='".intval($_GET['figure_cat_id'])."'
"));
// Add Sitetitle
add_to_title($locale['INF_TITLE']);
// Add Breadcrumbs
figure_cat_breadcrumbs($figure_cat_index);
// Check if a Manufacturer is setted
if (
isset($_GET['figure_manufacturer']) &&
isNum($_GET['figure_manufacturer']) &&
dbcount("(figure_manufacturer_id)", DB_FIGURE_MANUFACTURERS, "figure_manufacturer_id='".$_GET['figure_manufacturer']."'")
) {
// Set Empty Arrays
$info = array("figure_rows" => 0, "page_nav" => false);
$info['item'] = array();
// Get Figure Manufacturer Datas
$mdata = dbarray(dbquery("
SELECT
figure_manufacturer_id,
figure_manufacturer_name
FROM ".DB_FIGURE_MANUFACTURERS."
WHERE figure_manufacturer_id='".intval($_GET['figure_manufacturer'])."'
"));
// Merge Info Array with Category Data Array and Manufacturer Data Array
$info = array_merge($info, $cdata, $mdata);
// Add Sitetitle And Meta Description
add_to_meta("description", $info['figure_manufacturer_name']);
// Count all Figures
$max_rows = dbcount("(figure_id)", DB_FIGURE_ITEMS, "figure_cat='".$info['figure_cat_id']."'
AND figure_manufacturer='".$info['figure_manufacturer_id']."'
AND figure_freigabe='1'
AND ".groupaccess('figure_visibility'));
// Breadcrumbs
add_breadcrumb(["link" => INFUSIONS."figurelib/figures.php?figure_id=".$info['figure_cat_id']."&figure_manufacturer=".$info['figure_manufacturer_id'], "title" => trimlink($info['figure_manufacturer_name'], 20)]);
// Check Rowstart
$_GET['rowstart'] = isset($_GET['rowstart']) && isnum($_GET['rowstart']) && $_GET['rowstart'] <= $max_rows ? $_GET['rowstart'] : 0;
// If there are Items, handle it.
if ($max_rows) {
/*
// Get Figure Datas
$result = dbquery("
SELECT
f.figure_id, f.figure_title, f.figure_brand, f.figure_scale, f.figure_manufacturer, f.figure_submitter, f.figure_variant, f.figure_pubdate, f.figure_series, f.figure_clickcount, f.figure_datestamp,
fm.figure_manufacturer_name, fm.figure_manufacturer_id,
fb.figure_brand_name, fb.figure_brand_id,
fs.figure_scale_name, fs.figure_scale_id,
fu.user_id, fu.user_name, fu.user_status
FROM ".DB_FIGURE_ITEMS." AS f
LEFT JOIN ".DB_FIGURE_MANUFACTURERS." AS fm ON fm.figure_manufacturer_id=f.figure_manufacturer
LEFT JOIN ".DB_FIGURE_BRANDS." AS fb ON fb.figure_brand_id=f.figure_brand
LEFT JOIN ".DB_FIGURE_SCALES." AS fs ON fs.figure_scale_id=f.figure_scale
LEFT JOIN ".DB_USERS." AS fu ON fu.user_id=f.figure_submitter
WHERE f.figure_freigabe='1'
AND figure_cat='".intval($_GET['figure_cat_id'])."'
AND figure_manufacturer='".intval($_GET['figure_manufacturer'])."'
AND ".groupaccess("figure_visibility")."
ORDER BY ".$cdata['figure_cat_sorting']."
LIMIT ".$_GET['rowstart'].",".$figurelibSettings['figure_per_page']."
");
*/
// Get Figure Datas
$result = dbquery("
SELECT
f.figure_id, f.figure_title, f.figure_brand, f.figure_scale, f.figure_manufacturer, f.figure_submitter, f.figure_variant, f.figure_pubdate, f.figure_series, f.figure_clickcount, f.figure_datestamp,
fm.figure_manufacturer_name, fm.figure_manufacturer_id,
fb.figure_brand_name, fb.figure_brand_id,
fs.figure_scale_name, fs.figure_scale_id,
fu.user_id, fu.user_name, fu.user_status
FROM ".DB_FIGURE_ITEMS." AS f
LEFT JOIN ".DB_FIGURE_MANUFACTURERS." AS fm ON fm.figure_manufacturer_id=f.figure_manufacturer
LEFT JOIN ".DB_FIGURE_BRANDS." AS fb ON fb.figure_brand_id=f.figure_brand
LEFT JOIN ".DB_FIGURE_SCALES." AS fs ON fs.figure_scale_id=f.figure_scale
LEFT JOIN ".DB_USERS." AS fu ON fu.user_id=f.figure_submitter
WHERE f.figure_freigabe='1'
AND figure_cat='".intval($_GET['figure_cat_id'])."'
AND figure_manufacturer='".intval($_GET['figure_manufacturer'])."'
AND ".groupaccess("figure_visibility")."
ORDER BY f.figure_title ASC
LIMIT ".$_GET['rowstart'].",".$figurelibSettings['figure_per_page']."
");
// Count Items
$info['figure_rows'] = dbrows($result);
// Pagenav
$info['page_nav'] = $max_rows > $figurelibSettings['figure_per_page'] ?
makepagenav($_GET['rowstart'], $figurelibSettings['figure_per_page'], $max_rows, 3,
INFUSIONS."figurelib/figures.php?figure_cat_id=".$info['figure_cat_id']."&figure_manufacturer=".$_GET['figure_manufacturer']."&") : false;
// Add Figure Informations into Array
while ($data = dbarray($result)) {
$data['new'] = ($data['figure_datestamp']+604800 > time()+($settings['timeoffset']*3600)) ? 1 : 0;
$data['figure'] = array(
'link' => INFUSIONS."figurelib/figures.php?figure_id=".$data['figure_id'],
'name' => $data['figure_title'],
'manufacturer' => $data['figure_manufacturer_name'],
'scale' => $data['figure_scale_name'],
'year' => $data['figure_pubdate'],
'brand' => $data['figure_brand_name'],
'series' => $data['figure_series'],
'variant' => $data['figure_variant'],
'submitter' => $data['user_id'],
'views' => $data['figure_clickcount'],
'userid' => $data['user_id'],
'username' => $data['user_name'],
'userstatus' => $data['user_status']
);
$info['item'][$data['figure_id']] = $data;
}
}
// Display
render_figure($info);
// Otherwise display Manufacturers Overview
} else {
// Set Standard Array
$info = array("rows" => "0", "items" => []);
// Get all Manufacturers
$result = dbquery("
SELECT
fm.figure_manufacturer_id, fm.figure_manufacturer_name, COUNT(f.figure_id) AS figure_counter
FROM ".DB_FIGURE_ITEMS." AS f
LEFT JOIN ".DB_FIGURE_MANUFACTURERS." AS fm ON fm.figure_manufacturer_id=f.figure_manufacturer
WHERE f.figure_cat='".$_GET['figure_cat_id']."'
AND ".groupaccess("f.figure_visibility")."
AND f.figure_freigabe='1'
GROUP BY fm.figure_manufacturer_id
ORDER BY fm.figure_manufacturer_name ASC
");
$info['rows'] = dbrows($result);
// Merge Arrays
$info = array_merge($info, $cdata);
// Save Datas to Array
while ($data = dbarray($result)) {
$info['items'][$data['figure_manufacturer_id']] = [
"manufacturer-id" => $data['figure_manufacturer_id'],
"manufacturer-title" => $data['figure_manufacturer_name'],
"manufacturer-counter" => $data['figure_counter'],
"manufacturer-link" => FUSION_SELF."?figure_cat_id=".$info['figure_cat_id']."&figure_manufacturer=".$data['figure_manufacturer_id'],
"manufacturer-image" => figures_getImagePath("manufacturers", "thumb", $data['figure_manufacturer_id'])
];
}
// Display
render_manufacturer($info);
}
// Display Index
} else {
// Add Sitetitle
add_to_title($locale['INF_TITLE']);
// Set empty Array
$info['item'] = array();
// Get Category Datas
$result = dbquery("
SELECT
f.figure_cat,
f.figure_visibility,
fc.figure_cat_id,
fc.figure_cat_name,
fc.figure_cat_description,
count(f.figure_id) 'figure_anzahl'
FROM ".DB_FIGURE_CATS." fc
LEFT JOIN ".DB_FIGURE_ITEMS." f on f.figure_cat = fc.figure_cat_id and ".groupaccess("figure_visibility")."
AND figure_freigabe = '1'
".(multilang_table("FI") ? "WHERE fc.figure_cat_language='".LANGUAGE."'" : "")."
GROUP BY figure_cat_id
ORDER BY figure_cat_name
");
// Add Rows to Array
$info['figure_cat_rows'] = dbrows($result);
// Add Categories to Array
if ($info['figure_cat_rows']) {
while ($data = dbarray($result)) {
$data['figure_item'] = array(
'link' => INFUSIONS."figurelib/figures.php?figure_cat_id=".$data['figure_cat_id'],
'name' => $data['figure_cat_name'],
'image' => figures_getImagePath("cats", "thumb", $data['figure_cat_id'])
);
$info['item'][$data['figure_cat_id']] = $data;
}
}
// Display
render_figure_cats($info);
}
require_once THEMES."templates/footer.php";
/**
* FigureLib Category Breadcrumbs Generator
* @param $forum_index
*/
function figure_cat_breadcrumbs($figure_cat_index) {
global $locale;
/* Make an infinity traverse */
function breadcrumb_arrays($index, $id) {
$crumb = & $crumb;
if (isset($index[get_parent($index, $id)])) {
$_name = dbarray(dbquery("SELECT figure_cat_id, figure_cat_name, figure_cat_parent FROM ".DB_FIGURE_CATS." WHERE figure_cat_id='".$id."'"));
$crumb = array(
'link' => INFUSIONS."figurelib/figures.php?figure_cat_id=".$_name['figure_cat_id'],
'title' => $_name['figure_cat_name']
);
if (isset($index[get_parent($index, $id)])) {
if (get_parent($index, $id) == 0) {
return $crumb;
}
$crumb_1 = breadcrumb_arrays($index, get_parent($index, $id));
$crumb = array_merge_recursive($crumb, $crumb_1); // convert so can comply to Fusion Tab API.
}
}
return $crumb;
}
// then we make a infinity recursive function to loop/break it out.
$crumb = breadcrumb_arrays($figure_cat_index, $_GET['figure_cat_id']);
// then we sort in reverse.
if (count($crumb['title']) > 1) {
krsort($crumb['title']);
krsort($crumb['link']);
}
if (count($crumb['title']) > 1) {
foreach ($crumb['title'] as $i => $value) {
add_breadcrumb(array('link' => $crumb['link'][$i], 'title' => $value));
if ($i == count($crumb['title'])-1) {
add_to_title($locale['global_201'].$value);
}
}
} elseif (isset($crumb['title'])) {
add_to_title($locale['global_201'].$crumb['title']);
add_breadcrumb(array('link' => $crumb['link'], 'title' => $crumb['title']));
}
}