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

📄 faq.php

📁 jsp程序开发系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php
// +-------------------------------------------------------------+
// | DeskPRO v [2.0.1 Production]
// | Copyright (C) 2001 - 2004 Headstart Solutions Limited
// | Supplied by WTN-WDYL
// | Nullified by WTN-WDYL
// | Distribution via WebForum, ForumRU and associated file dumps
// +-------------------------------------------------------------+
// | DESKPRO IS NOT FREE SOFTWARE
// +-------------------------------------------------------------+
// | License ID : Full Enterprise License =) ...
// | License Owner : WTN-WDYL Team
// +-------------------------------------------------------------+
// | $RCSfile: faq.php,v $
// | $Date: 2004/02/12 21:16:57 $
// | $Revision: 1.71 $
// +-------------------------------------------------------------+
// | File Details:
// | - FAQ display and search.
// +-------------------------------------------------------------+

require_once('./global.php');
//Nullify WTN-WDYL Team

// globalise variables
$global = array	(
			array('categoryid', 'number', '0'),
			array('articleid', 'number', '0'),
);
rg($global);

$template_cache = templatecache('HF_header,HF_footer,FAQ_header,FAQ_search,FAQ_home,FAQ_category,FAQ_article_print,FAQ_article,FAQ_subscriptions,FAQ_new,FAQ_search');

############################### PERMISSIONS ###############################

if ($settings[faq_restrict] AND !$session[userid]) {
	error('error_q_a_restrict');
}

// category permissions
$db->query("SELECT catid FROM faq_permissions WHERE groupid = '$session[usergroup]'");
while ($result = $db->row_array()) {
	$groups[] = $result[catid];
}

if (!is_array($groups)) {
	$error_nocats = 1;
} else {
	$permission = " IN " . array2sql($groups);
}

############################### PDF GENERATION ###############################

if ($_REQUEST['do'] == 'pdf') {

	if ($_REQUEST['do'] == 'pdf') {
		define('PDF', '1');
	}

	if (!$_REQUEST['categoryid']) {
		$_REQUEST['categoryid'] = 0;
	}
	define('FPDF_FONTPATH','./includes/fpdf/font/');
	require('./includes/fpdf/fpdf.php');

	$pdf = new FPDF('P', 'mm', 'Letter');
	$pdf->Open();
	$pdf->AddPage();
	$pdf->SetTitle('Knowledge Base');
	$pdf->SetCreator('DeskPro v2.0');
	$pdf->SetFont('Times', 'B', 24);
	$pdf->Cell(0, 10, 'Knowledge Base', 0, 1, 'C');
	gen_pdf_faq($_REQUEST[categoryid]);
	$pdf->Output();
	exit;
}

############################### START PAGE ###############################

$page = 'qanda';
$navigation = add_navigation('Questions and Answers', 'faq.php');

// get templates
$template_cache = templatecache('FAQ_search_category,FAQ_search_articles,FAQ_search,FAQ_related,FAQ_article,FAQ_category_alternate1,FAQ_category_alternate2,FAQ_main_category,FAQ_article_alternate1,FAQ_main,FAQ_main_article,FAQ_article_alternate2,FAQ_nav_bit_category,FAQ_nav_bit_article,FAQ_nav');

// default do
$_REQUEST['do'] = trim($_REQUEST['do']);
if (!isset($_REQUEST['do']) or $_REQUEST['do'] == "") {
	if ($categoryid) {
		$_REQUEST['do'] = "category";
	} else {
		$_REQUEST['do'] = "home";
	}
}

############################### SORT CATEGORY DATA ###############################

// create a category jump
$db->query("SELECT * FROM faq_cats 
			" . iff ($permission, "WHERE id $permission") . "
			ORDER BY parent,show_order,id
		");

while ($cats = $db->row_array()) {
	// generates totals (based on permissions)
	$parents = explode(',', $cats[parentlist]);
	foreach ($parents AS $key => $var) {
		$cattotals[$var] += $cats[articles];
	}
	$cattotals[$cats[id]] += $cats[articles];
		
	// used for "nav bits"
	$categorycache_parent[$cats[parent]][$cats[show_order]][$cats[id]] = $cats[name];

	// used for category data display in templates
	$categorycache_data[$cats[parent]][] = $cats;
	
	// used for categry jump and getting data for category (e.g. name/parent etc)
	$categorycache[$cats[id]] = array(
		'id' => $cats[id],
		'parent' => $cats[parent], 
		'order' => $cats[show_order], 
		'name' => $cats[name],
		'parentlist' =>$cats[parentlist],
		'parentarray' => split(',', $cats[parentlist])
	);
}

$catarray = faq_categoryjump();
$category_count = count($catarray) - 1;
$cat_jump = form_select('categoryid', $catarray, $_REQUEST['categoryid']);

############################### SEARCH FAQ ###############################

if ($_REQUEST['do'] == "search") {

	$catarray[0] = $dplang[all_categories];	

	$search_cats = form_select('cat', $catarray, -1, '', '', 6);

	give_default($_REQUEST['search_in'], 'all');
	give_default($_REQUEST['search_by'], 'AND');

	if ($_REQUEST['search_by'] == 'AND') {
		$AND = 1;
		$search_option = 'AND';
	} elseif ($_REQUEST['search_by']  == 'OR') {
		$OR = 1;
		$search_option = 'OR';
	} else {
		$PHRASE = 1;
		$search_option = 'PHRASE';
	}

	///////// sort search words /////////
	if ($_REQUEST['searchwords']) { 
		
		if ($OR OR $AND) {
			$tmp = split(' ', $_REQUEST['searchwords']);
			foreach ($tmp AS $key => $var) {
				if (trim($var)) {
					$searchwords[] = trim($var);
				}
			}
		} else {
			// make into an array for later processing
			if (!is_array($_REQUEST['searchwords'])) {
				$searchwords = array($_REQUEST['searchwords']);
			}
		}

		$number_searchwords = count($searchwords);
		
		///////// make keywords /////////

		if ($_REQUEST['search_in'] == 'all' OR $_REQUEST['search_in'] == 'keywords') {		
			
			if ($AND OR $OR OR ($PHRASE AND $number_searchwords == 1)) {
				if (is_array($searchwords)) {
					$db->query("SELECT * FROM faq_keywords WHERE word IN " . array2sql($searchwords) . "");
					while ($result = $db->row_array()) {
						$articles = split(',', $result[articles]);
						foreach ($articles AS $key => $var) {
							if ($var) {
								$keywords[$var][] = $result['word'];
							}
						}
					}
				}
				
				// if matching all unset those that do not match
				if ($AND) {	
					if (is_array($keywords)) {
						foreach ($keywords AS $key => $var) {
							if (count($var) != $number_searchwords) {
								unset($keywords[$key]);
							}
						}
					}
				}
			}
		}

		///////// categories /////////

		if (is_array($_REQUEST['cat'])) {
			if (in_array('0', $_REQUEST['cat'])) {
				unset($_REQUEST['cat']);
			} else {
				$where_category .= "AND category IN " . array2sql($_REQUEST['cat']);
			}
		}
		
		///////// articles / question / answer /////////

		unset($i);
		// will always be an array
		foreach ($searchwords AS $key => $var) {

			if ($_REQUEST['search_in'] == 'all' OR $_REQUEST['search_in'] == 'titles') {
				$where_title .= iff($i, $search_option) . " title LIKE '%" . addslashes_like($var) . "%'";
			}
			if ($_REQUEST['search_in'] == 'all' OR $_REQUEST['search_in']  == 'questions') {
				$where_question .= iff($i, $search_option) . " question LIKE '%" . addslashes_like($var) . "%'";
			}
			if ($_REQUEST['search_in'] == 'all' OR $_REQUEST['search_in'] == 'answers') {
				$where_answer .= iff($i, $search_option) . " answer LIKE '%" . addslashes_like($var) . "%'";
			}
			$i++;
		}

		// the match can be on any component
		if ($where_title) {
			$where_title = "($where_title)";
		}
		if ($where_question) {
			$where_question = " OR ($where_question)";
		}
		if ($where_answer) {
			$where_answer = " OR ($where_answer)";
		}
		// add keyword article matches
		if (is_array($keywords)) {
			$where_keywords = " OR (faq_articles.id IN " . array2sql(array_keys($keywords)) . ")";
		}

		if (!$where_title) {
			$where_title = '1';
		}

		$query = "
			SELECT faq_articles.*, user.username AS username, tech.username AS username
			FROM faq_articles
			LEFT JOIN tech ON (tech.id = faq_articles.techid_made)
			LEFT JOIN user ON (user.id = faq_articles.userid)
			WHERE
			(
				$where_title
				$where_question
				$where_answer
				$where_keywords
			)
			$where_category
		";

		$db->query($query);

		while ($result = $db->row_array()) {
			$article_cache[$result[id]] = $result;
		}
	}

	// final processing
	if (is_array($article_cache)) {

		// check permission
		foreach ($article_cache AS $key => $var) {
			if (is_array($categorycache[$var[category]])) {

				// sort votes
				if ($article_cache[$key]['votes']) {
					$article_cache[$key]['rating'] = $article_cache[$key]['rating'] . '%';
				} else {
					$article_cache[$key]['rating'] = ' - ';
				}

				// replace with category name
				$article_cache[$key]['category_name'] = $categorycache[$var[category]]['name'];

				$article[] = $article_cache[$key];
			}
		}
	}

	// show the search form

	$advancedsearch = 1;	
	$navigation .= add_navigation('Search', 'faq.php');

	eval(makeeval('header', 'HF_header'));
	eval(makeeval('footer', 'HF_footer'));
	eval(makeeval('faq_header', 'FAQ_header'));
	eval(makeeval('echo', 'FAQ_search'));
}
	
############################### HOME ###############################

if ($_REQUEST['do'] == "home") {

	$time = mktime() - (60 * 60 * 24 * $settings[faq_days]);

	///////// sub categories /////////

	if (is_array($categorycache_data[0])) {
		foreach ($categorycache_data[0] AS $key => $tempcat) {
			if ($tempcat[newdate] > $time) {
				$tempcat[is_new] = 1;
			} elseif ($tempcat[editdate] > $time) {
				$tempcat[is_modified] = 1;
			}

			$tempcat[totalarticles] = $cattotals[$tempcat[id]];
			$sub_category[] = $tempcat;
		}
	
		// column widths
		$columns = $settings[faq_columns];
		$catsno = count($sub_category);

		if ($catsno >= $columns) {
			if ($columns) {
				$percentage = 100 / $columns;
			}
		} else {
			if ($catsno) {
				$percentage = 100 / $catsno;
			}
		}
	}

	///////// get new articles ///////// 

	if ($settings['faq_front_articles'] AND !$error_nocats) {

		$db->query("
			SELECT title, id, date_modified, date_made, category 
			FROM faq_articles 
			WHERE	(date_made > '$time' OR
					date_modified > '$time')
			" . iff($permission, "AND category $permission") . "
			AND NOT to_validate
			ORDER BY date_made DESC, date_modified DESC
			LIMIT $settings[faq_front_articles]
		");


		while ($result = $db->row_array()) {

			if ($result['date_made'] > $time) {
				$result['is_new'] = 1;
			} elseif ($result['date_modified'] > $time) {
				$result['is_modified'] = 1;
			}
			$result['category_name'] = $categorycache[$result['category']]['name'];
			if ($result['date_modified']) {
				$result['date'] = our_date($result['date_modified'], 'day');
			} else {
				$result['date'] = our_date($result['date_made'], 'day');
			}
			$changed_articles[] = $result;
		}
	}

	///////// most popular articles ///////// 

	/*
		forumla for popular: (from ratings:)
			rating (0,20,40,60,80,100)
			(rating * votes / 10) + votes
	*/

	if ($settings['faq_front_articles'] AND !$error_nocats) {

		$db->query("
			SELECT faq_articles.*, 
			((rating * votes / 10) + views) AS score 
			FROM faq_articles 
			WHERE NOT to_validate
			ORDER BY score DESC 
			LIMIT $settings[faq_front_articles]
		");

		while ($result = $db->row_array()) {
			$result[category_name] = $categorycache[$result[category]]['name'];
			if ($result['date_modified']) {
				$result['date'] = our_date($result['date_modified'], 'day');
			} else {
				$result['date'] = our_date($result['date_made'], 'day');
			}
			$toprate_articles[] = $result;
		}
	}
	
	///////// finish up / display ///////// 

	$nav = breadcrumbs($categoryid);

	eval(makeeval('header', 'HF_header'));
	eval(makeeval('footer', 'HF_footer'));
	eval(makeeval('faq_header', 'FAQ_header'));
	eval(makeeval('echo', 'FAQ_home'));

}

############################### CATEGORY ###############################

if ($_REQUEST['do'] == "category") {

	$time = mktime() - (60 * 60 * 24 * $settings[faq_days]);

	// the category
	$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');
	}

	///////////////////////// subcategories /////////////////////////

	if (is_array($categorycache_data[$_REQUEST[categoryid]])) {
		foreach ($categorycache_data[$_REQUEST[categoryid]] AS $key => $tempcat) {
			if ($tempcat[newdate] > $time) {
				$tempcat[is_new] = 1;
			} elseif ($tempcat[editdate] > $time) {
				$tempcat[is_modified] = 1;
			}

			$tempcat[totalarticles] = $cattotals[$tempcat[id]];
			$sub_category[] = $tempcat;
		}
		
		// widths
		$columns = $settings[faq_columns];
		$catsno = count($sub_category);

		if ($catsno >= $columns) {
			if ($columns) {
				$percentage = 100 / $columns;
			}
		} else {
			if ($catsno) {
				$percentage = 100 / $catsno;
			}
		}
	}

	///////////////////////// articles /////////////////////////
	$db->query("
	SELECT faq_articles.id, title, rating, date_made, date_modified, faq_cats.name as category FROM faq_articles, faq_cats
		WHERE category = '" . intval($categoryid) . "' AND NOT to_validate AND faq_cats.id = faq_articles.category
		ORDER BY faq_articles.show_order
	");
	
	$article = array();
	while ($result = $db->row_array()) {
		if ($result[date_made] > $time) {
			$result[is_new] = 1;
		} elseif ($result[date_modified] > $time) {
			$result[is_modified] = 1;
		}

		$article[] = $result;
	}

	///////////////////////// related categories /////////////////////////

	$db->query("
	SELECT related_cat 
	FROM faq_cats_related
	WHERE show_cat = '" . intval($categoryid) . "'
	");

	while ($result = $db->row_array()) {
		$tempcat = $categorycache[$result[related_cat]];
		
		if (is_array($tempcat)) {
			if ($tempcat[newdate] > $time) {
				$tempcat[is_new] = 1;
			} elseif ($tempcat[editdate] > $time) {
				$tempcat[is_modified] = 1;
			}

			$tempcat[totalarticles] = $cattotals[$tempcat[id]];
			$related_category[] = $tempcat;
		}
	}

	// widths
	if (is_array($related_category)) {
		$columns = $settings[faq_columns];
		$catsno = count($related_category);

		if ($catsno >= $columns) {
			if ($columns) {
				$percentage = 100 / $columns;
			}
		} else {
			if ($catsno) {
				$percentage = 100 / $catsno;
			}
		}
	}

	///////////////////////// display page /////////////////////////

	$navigation .= breadcrumbs($categoryid);

	eval(makeeval('header', 'HF_header'));
	eval(makeeval('footer', 'HF_footer'));
	eval(makeeval('faq_header', 'FAQ_header'));
	eval(makeeval('echo', 'FAQ_category'));
}

############################### DOWNLOAD ARTICLE ###############################

if ($_REQUEST['do'] == 'download') {

	$attachment = $db->query_return("
		SELECT * 
		FROM faq_attachments 
		WHERE id = '" . addslashes($_REQUEST['id']) . "'
	");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -