📄 faq.php
字号:
$article = $db->query_return("
SELECT faq_articles.*
FROM faq_articles
WHERE faq_articles.id = '" . intval($attachment['articleid']) . "'
" . iff($permission, "AND faq_articles.category $permission") . "
AND NOT to_validate
");
if ($db->num_rows() < 1) {
error('error_q_a_article_exist');
}
get_attachment($_REQUEST['id'], 'faq_attachments');
}
############################### VIEW ARTICLE / PRINTABLE ARTICLE ###############################
if ($_REQUEST['do'] == "article" OR $_REQUEST['do'] == "printarticle") {
if (!$articleid) {
error('error_q_a_article_exist');
}
$article = $db->query_return("
SELECT faq_articles.*
FROM faq_articles
WHERE faq_articles.id = '" . intval($articleid) . "'
" . iff($permission, "AND faq_articles.category $permission") . "
AND NOT to_validate
");
if ($db->num_rows() < 1) {
error('error_q_a_article_exist');
}
// update number of views
$db->query("UPDATE faq_articles SET views = views+1 WHERE id = '" . intval($articleid) . "'");
if ($article[date_made] > (mktime() - (60 * 60 * 24 * $settings[faq_days]))) {
$article[is_new] = 1;
}
// sort article elements
if ($article[date_modified]) {
$article[date_modified] = our_date($article[date_modified]);
}
$article[title] = dp_code($article[title]);
$article[question] = iff($article[question_html], $article[question], dp_code($article[question]));
$article[answer] = iff($article[answer_html], $article[answer], dp_code($article[answer]));
$article[date_made] = our_date($article[date_made]);
// get names of tech/user who made
if ($article[techid_made]) {
$tmp = $db->query_return("SELECT username FROM tech WHERE id = '$article[techid_made]'");
$article[tech_made] = $tmp['username'];
} else {
$tmp = $db->query_return("SELECT username FROM user WHERE id = '$article[userid]'");
$article[tech_made] = $tmp['username'];
}
$tmp = $db->query_return("SELECT username FROM tech WHERE id = '$article[techid_modified]'");
$article[tech_modified] = $tmp['username'];
// faq attachments
$attachments = $db->query_return_array("
SELECT * FROM faq_attachments WHERE articleid = '" . intval($articleid) . "'
");
// faq attachments
$db->query("
SELECT *
FROM faq_attachments
WHERE articleid = '" . intval($articleid) . "'
");
while ($result = $db->row_array()) {
$result['filesize'] = number_format($result['filesize'] / 1024, 2);
$attachment[] = $result;
}
// related articles
$db->query("
SELECT faq_articles.*
FROM faq_articles_related
LEFT JOIN faq_articles ON (faq_articles_related.related_article = faq_articles.id)
WHERE show_article = '" . intval($articleid) . "'
" . iff($permission, "AND faq_articles.category $permission") . "
AND NOT to_validate
");
$related_article = array();
while ($result = $db->row_array()) {
if ($result['date_modified']) {
$result['date'] = our_date($result['date_modified'], 'day');
} else {
$result['date'] = our_date($result['date_made'], 'day');
}
$related_article[] = $result;
}
$navigation .= breadcrumbs($article[category]);
$navigation .= add_navigation($article[title], "faq.php?do=article&articleid=$article[id]");
// Update the category jump widget to show the current category
$cat_jump = form_select('categoryid', $catarray, $article['category']);
$categoryid = $article['category'];
if ($_REQUEST['do'] == 'printarticle') {
eval(makeeval('echo', 'FAQ_article_print'));
} else {
eval(makeeval('header', 'HF_header'));
eval(makeeval('footer', 'HF_footer'));
eval(makeeval('faq_header', 'FAQ_header'));
eval(makeeval('echo', 'FAQ_article'));
}
}
############################### NEW ARTICLE (2) ###############################
if ($_REQUEST['do'] == "new2") {
max_limits('faq');
if (!$settings['faq_new']) {
error('error_no_faq_submit');
}
if (!$_REQUEST[category]) {
$error_category = 1;
$stop = 1;
}
if (strlen($_REQUEST[title]) < 10) {
$error_title = 1;
$stop = 1;
}
if (strlen($_REQUEST[question]) < 10) {
$error_question = 1;
$stop = 1;
}
if (strlen($_REQUEST[answer]) < 10) {
$error_answer = 1;
$stop = 1;
}
if (!$stop) {
$ref = make_ticket_ref('faq_articles');
$db->query("INSERT INTO faq_articles SET
title = '" . mysql_escape_string(htmlspecialchars_uni($_REQUEST[title])) . "',
question = '" . mysql_escape_string(htmlspecialchars_uni($_REQUEST[question])) . "',
answer = '" . mysql_escape_string(htmlspecialchars_uni($_REQUEST[answer])) . "',
category = '" . mysql_escape_string(htmlspecialchars_uni($_REQUEST[category])) . "',
to_validate = '1',
date_made = " . mktime() . ",
ref = '" . mysql_escape_string($ref) . "',
userid = '$session[userid]'
");
$id = $db->last_id();
// now lets email techs
$db->query("
SELECT username, email
FROM tech
WHERE email_faq
");
while ($result = $db->row_array()) {
eval(makeemaileval('message', 'TECHBODY_faq', $subject));
dp_mail($result[email], $subject, $message);
}
jump('faq.php', 'redirect_faq_new', 5);
// fix any errors
} else {
$_REQUEST['do'] = "new";
}
}
############################### NEW ARTICLE ###############################
if ($_REQUEST['do'] == "new") {
max_limits('faq');
if (!$settings['faq_new']) {
error('error_no_faq_submit');
}
$subpage = 'newarticle';
$catarray2 = $catarray;
unset($catarray2[0]);
if ($_POST['category']) {
$thiscategory = $_POST['category'];
} elseif ($categoryid) {
$thiscategory = $categoryid; // from category
}
$category_select = form_select('category', $catarray2, $thiscategory);
$navigation .= add_navigation($dplang[new_article], "faq.php?do=new");
eval(makeeval('header', 'HF_header'));
eval(makeeval('footer', 'HF_footer'));
eval(makeeval('faq_header', 'FAQ_header'));
eval(makeeval('echo', 'FAQ_new'));
}
############################### ADD ARTICLE SUBSCRIPTION ###############################
if ($_REQUEST['do'] == "addarticlesub") {
check_user();
$articleid = mysql_escape_string($articleid);
$article = $db->query_return("SELECT category FROM faq_articles WHERE id = '" . intval($articleid) . "'");
if (!$db->num_rows()) {
error('error_q_a_article_exist');
}
$db->query("
DELETE FROM faq_subscriptions
WHERE articleid = '" . intval($articleid) . "'
AND userid = '$session[userid]'
");
$db->query("
INSERT INTO faq_subscriptions SET
articleid = '" . intval($articleid) . "',
userid = '$session[userid]',
edit = 1
");
jump('faq.php?do=subscriptions', 'redirect_faq_subscription');
}
############################### ADD CATEGORY SUBSCRIPTION ###############################
if ($_REQUEST['do'] == "addcategorysub") {
check_user();
$category = $db->query_return("
SELECT * FROM faq_cats
WHERE id = '" . intval($categoryid) . "'" . iff($permission, "AND id $permission"));
if (!$db->num_rows()) {
error('error_q_a_category_exist');
}
$db->query("
DELETE FROM faq_subscriptions WHERE
catid = '" . intval($categoryid) . "'
AND userid = '$session[userid]'
");
$db->query("
INSERT INTO faq_subscriptions SET
catid = '" . intval($categoryid) . "',
new = 1,
userid = '$session[userid]'
");
jump('faq.php?do=subscriptions', 'redirect_faq_subscription');
}
############################### SUBSCRIPTIONS (2) ###############################
if ($_REQUEST['do'] == "subscriptions2") {
check_user();
$subpage = 'subscription';
// need to be logged in
if (!$session[userid]) {
login_form();
}
// delete current data
$db->query("DELETE FROM faq_subscriptions WHERE userid = '$session[userid]'");
// deal with categories
if (is_array($_REQUEST[cat])) {
foreach($_REQUEST[cat] AS $key => $var) {
if ($_REQUEST[cat_edit][$key] OR $_REQUEST[cat_new][$key]) {
$data[] = array(
$key,
$_REQUEST[cat_new][$key],
$_REQUEST[cat_edit][$key],
$session[userid]
);
}
}
}
if (is_array($data)) {
$db->query(" INSERT INTO faq_subscriptions
(catid, new, edit, userid)
VALUES " . insertsql($data) . "
");
}
unset($data);
// deal with articles
if (is_array($_REQUEST[article])) {
foreach($_REQUEST[article] AS $key => $var) {
if ($_REQUEST[article_edit][$key] OR $_REQUEST[article_comment][$key]) {
$data[] = array(
$key,
$_REQUEST[article_edit][$key],
$session[userid]
);
}
}
}
if (is_array($data)) {
$db->query(" INSERT INTO faq_subscriptions
(articleid, edit , userid)
VALUES " . insertsql($data) . "
");
}
// view subscriptions
$_REQUEST['do'] = "subscriptions";
}
############################### SUBSCRIPTIONS ###############################
if ($_REQUEST['do'] == "subscriptions") {
check_user();
$subpage = 'subscription';
// need to be logged in
if (!$session[userid]) {
login_form();
}
$category_select = form_select('category', $catarray, $thiscategory);
function getcatpath($catid) {
global $categorycache;
$parent = $categorycache[$catid][parent];
while ($parent > 0) {
$nav = " >> " . $categorycache[$parent]['name'] . $nav;
$parent = $categorycache[$parent]['parent'];
}
return $nav;
}
// category subscriptions
$db->query("
SELECT faq_subscriptions.*, faq_cats.name AS name, faq_articles.*
FROM faq_subscriptions
LEFT JOIN faq_cats ON (faq_cats.id = faq_subscriptions.catid)
LEFT JOIN faq_articles ON (faq_articles.id = faq_subscriptions.articleid)
WHERE faq_subscriptions.userid = '$session[userid]'
ORDER by faq_cats.show_order
");
while ($result = $db->row_array()) {
if (!$result['articleid']) {
$cat_subscription[] = array(
'id' => $result['catid'],
'name' => $result['name'],
'path' => getcatpath($result['catid']) . " >> $result[name]",
'new' => iff($result['new'], ' checked=checked'),
'edit' => iff($result['edit'], ' checked=checked')
);
} else {
$article_subscription[] = array(
'id' => $result['articleid'],
'name' => $result['title'],
'category' => $categorycache[$result[category]][name],
'category_id' => $result[category],
'category_path' => getcatpath($result['category']),
'edit' => iff($result['edit'], ' checked=checked')
);
}
}
$nav = breadcrumbs($cat);
eval(makeeval('header', 'HF_header'));
eval(makeeval('footer', 'HF_footer'));
eval(makeeval('faq_header', 'FAQ_header'));
eval(makeeval('echo', 'FAQ_subscriptions'));
}
#################################### FAQ ONLY FUNCTIONS ###################################
###################### FUNCTION FAQ_CATEGORYJUMP() #######################
function faq_categoryjump($catid=0, $prepend='--') {
global $categorycache_parent, $jumpbox, $x;
if (!$x) {
$jumpbox = array('0' => 'Top Level');
$x=1;
}
if (is_array($categorycache_parent[$catid])) {
while (list($key,$val) = each($categorycache_parent[$catid])) {
while (list($categoryid, $category) = each($val)) {
$jumpbox[$categoryid] = $prepend . " " . $category;
if (is_array($categorycache_parent[$categoryid])) {
faq_categoryjump($categoryid, $prepend . "--");
}
}
}
}
return $jumpbox;
}
###################### FUNCTION BREADCRUMBS() #######################
/* creates a bread crumb navigation for categories */
function breadcrumbs($catid='') {
global $categorycache, $r;
while ($catid > 0) {
$name = $categorycache[$catid]['name'];
$id = $catid;
$tmp = add_navigation($name, "faq.php?categoryid=$catid") . $tmp;
$catid = $categorycache[$catid]['parent'];
}
return $tmp;
}
###################### FUNCTION gen_pdf_faq() #######################
/* recursive function for creating the PDF documentation */
function gen_pdf_faq($catid, $depth = 0, $section = '', $secnum = 1) {
global $query, $pdf, $db, $groups;
switch ($depth) {
case 0:
$font = 20;
break;
case 1:
$font = 18;
break;
case 2:
$font = 16;
break;
case 3:
$font = 14;
break;
case 4:
$font = 12;
break;
case 5:
default:
$font = 10;
break;
}
if (!$catid) {
$catid = 0;
} else {
$secnum = 1;
}
$pdepth = $depth + 1;
if ($section != '') {
$section .= '.';
}
if ($catid > 0 AND (in_array($catid, $groups))) {
$db->query("SELECT id, name FROM faq_cats WHERE id = '" . mysql_escape_string($catid));
$result = $db->row_array();
$pdf->SetFont('Times', 'B', $font);
$pdf->MultiCell(0, 8, "$section $result[name]\n");
}
// First, get the subtopics and process them.
$categories = array();
$db->query("SELECT id, name FROM faq_cats WHERE parent = '" . mysql_escape_string($catid));
while ($result = $db->row_array()) {
$categories[] = $result[id];
}
if (is_array($categories)) {
foreach ($categories AS $key => $val) {
if ($catid > 0) {
gen_pdf_faq($val, $depth+1, "$section$secnum", $secnum);
} else {
gen_pdf_faq($val, $depth+1, "$secnum", $secnum);
}
$secnum++;
}
}
if ($font > 10) {
$font = $font - 2;
}
// Then print all this category's FAQs
$db->query("SELECT question, answer FROM faq_articles WHERE
NOT to_validate AND category = '$catid' ORDER BY show_order");
$count = 0;
while ($result = $db->row_array()) {
$count++;
$pdf->SetFont('Times', 'B', $font);
$pdf->MultiCell(0, 8, "$section$count: $result[question]\n");
$pdf->SetFont('Times', '', 10);
$pdf->MultiCell(0, 4, "$result[answer]\n");
}
return;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -