⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faq.php

📁 jsp程序开发系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
	$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 + -