faq_include.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:8k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. // +-------------------------------------------------------------+
  3. // | DeskPRO v [2.0.1 Production]
  4. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  5. // | Supplied by WTN-WDYL
  6. // | Nullified by WTN-WDYL
  7. // | Distribution via WebForum, ForumRU and associated file dumps
  8. // +-------------------------------------------------------------+
  9. // | DESKPRO IS NOT FREE SOFTWARE
  10. // +-------------------------------------------------------------+
  11. // | License ID : Full Enterprise License =) ...
  12. // | License Owner : WTN-WDYL Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: faq_include.php,v $
  15. // | $Date: 2004/02/10 01:34:26 $
  16. // | $Revision: 1.15 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Utility functions for FAQ.
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL ^ E_NOTICE);
  22. ###################### function categorycache() #######################
  23. function categorycache() {
  24. global $db;
  25. $db->query("SELECT * FROM faq_cats ORDER BY parent,show_order,id");
  26. while ($cats = $db->row_array()) {
  27. $categorycache[$cats['id']] = array(
  28. 'parent' => $cats['parent'], 
  29. 'order' => $cats['show_order'], 
  30. 'name' => $cats['name'],
  31. 'parentlist' =>$cats['parentlist'],
  32. 'parentarray' => split(',', $cats['parentlist']),
  33. 'totalarticles' => $cats['totalarticles'],
  34. 'articles' => $cats['articles']
  35. );
  36. }
  37. return $categorycache;
  38. }
  39. ###################### function catparentcache() ######################
  40. function catparentcache() {
  41. global $db;
  42. $db->query("SELECT * FROM faq_cats ORDER BY parent,show_order,id");
  43. while ($cats = $db->row_array()) {
  44. $catparentcache[$cats['parent']][$cats['show_order']][$cats['id']] = $cats['name'];
  45. }
  46. return $catparentcache;
  47. }
  48. ###################### function catcaches() ######################
  49. function catcaches() {
  50. global $db;
  51. $db->query("SELECT * FROM faq_cats ORDER BY parent,show_order,id");
  52. while ($cats = $db->row_array()) {
  53. $categorycache[$cats['id']] = array(
  54. 'parent' => $cats['parent'], 
  55. 'order' => $cats['show_order'], 
  56. 'name' => $cats['name'],
  57. 'parentlist' =>$cats['parentlist'],
  58. 'parentarray' => split(',', $cats['parentlist']),
  59. 'totalarticles' => $cats['totalarticles'],
  60. 'articles' => $cats['articles']
  61. );
  62. $catparentcache[$cats['parent']][$cats['show_order']][$cats['id']] = $cats['name'];
  63. }
  64. return array($categorycache, $catparentcache);
  65. }
  66. ###################### function update_counters() #######################
  67. function update_counters() {
  68. global $db, $categorycache;
  69. // get categorycache
  70. $categorycache = categorycache();
  71. // get category totals
  72. $db->query("SELECT COUNT(*) AS total, category FROM faq_articles GROUP BY category");
  73. while ($result = $db->row_array()) {
  74. $totals[$result['category']] = $result['total'];
  75. }
  76. // reset all totals
  77. $db->query("UPDATE faq_cats SET articles = '', totalarticles = ''");
  78. // set totals
  79. if (is_array($totals)) {
  80. foreach ($totals AS $catid => $number) {
  81. if ($categorycache[$catid]['parentlist']) {
  82. $db->query("UPDATE faq_cats 
  83. SET totalarticles = (totalarticles + $number)
  84. WHERE id IN (" . $categorycache[$catid]['parentlist'] . ")
  85. ");
  86. }
  87. $db->query("UPDATE faq_cats SET 
  88. articles = '$number',
  89. totalarticles = (totalarticles + '$number')
  90. WHERE id = '$catid'
  91. ");
  92. }
  93. }
  94. }
  95. ###################### getparents() #######################
  96. function getparents($catid, $return='') {
  97. global $categorycache;
  98. $parent = $categorycache[$catid]['parent'];
  99. if ($parent) {
  100. $return .= iff($return, ',') . getparents($parent, $parent);
  101. }
  102. return $return;
  103. }
  104. ###################### update_parentlist() #######################
  105. function update_parentlist() {
  106. global $categorycache, $db;
  107. $categorycache = categorycache();
  108. if (is_array($categorycache)) {
  109. foreach($categorycache AS $catid => $var) {
  110. $db->query("UPDATE faq_cats SET parentlist = '" . getparents($catid) . "' WHERE id = '$catid'");
  111.  }
  112. }
  113. }
  114. ###################### function delete_kbarticle($id) #######################
  115. function delete_kbarticle($id, $error='') {
  116. global $db;
  117. $db->query("DELETE FROM faq_articles WHERE id = '$id'");
  118. $db->query("DELETE FROM faq_articles_related WHERE related_article = '$key' OR show_article = '$id'");
  119. $db->query("DELETE FROM faq_comments WHERE articleid = '$id'");
  120. $db->query("DELETE FROM faq_rating WHERE faqid = '$id'");
  121. $db->query("DELETE FROM faq_subscriptions WHERE articleid = '$id'");
  122. }
  123. ###################### function delete_kbcategory($id) #######################
  124. function delete_kbcategory($id, $error='') {
  125. global $categorycache, $db;
  126. // check no subcats
  127. if (is_array($catparentcache[$id])) {
  128. return "<LI>You can not delete category " . $categorycache[$id]['name'] . " because it has subcategories. A category must be empty before it can be deleted</LI>";
  129. }
  130. // check no articles
  131. if ($categorycache[$id]['totalarticles'] > 0) {
  132. return "<LI>You can not delete category " . $categorycache[$id]['name'] . " because it contains articles. A category must be empty before it can be deleted</LI>";
  133. }
  134. $db->query("DELETE FROM faq_cats WHERE id = '$id'");
  135. $db->query("DELETE FROM faq_cats_related WHERE related_cat = '$id' OR show_cat = '$id'");
  136. $db->query("DELETE FROM faq_subscriptions WHERE catid = '$id'");
  137. return "<LI>Category " . $categorycache[$id]['name'] . " deleted";
  138. }
  139. ###################### function faq_categoryjump() #######################
  140. function faq_categoryjump($catid=0, $prepend=NULL) {
  141. global $catparentcache, $categorycache, $jumpbox;
  142. // for first time
  143. if (!$catid) { // add to top level
  144. $jumpbox = array('0' => 'Top Level');
  145. // reload caches
  146. $tmp = catcaches();
  147. $catparentcache = $tmp[1];
  148. $categorycache = $tmp[0];
  149. }
  150. if (is_array($catparentcache[$catid])) {
  151. while (list($key,$val) = each($catparentcache[$catid])) {
  152. while (list($categoryid, $category) = each($val)) {
  153. $jumpbox[$categoryid] = $prepend . $category . " (" . $categorycache[$categoryid]['articles'] ." / " . $categorycache[$categoryid]['totalarticles'] . ")n";
  154. if (is_array($catparentcache[$categoryid])) {
  155. faq_categoryjump($categoryid, $category . "::");
  156. }
  157. }
  158. }
  159. }
  160. return $jumpbox;
  161. }
  162. #### gen_pdf_faq() ####
  163. # Recursion to produce a PDF containing all FAQs in the specified
  164. # category and all categories beneath it.
  165. function gen_pdf_faq($catid, $depth = 0, $section = '', $secnum = 1) {
  166. global $query, $pdf, $db;
  167. switch ($depth) {
  168. case 0:
  169. $font = 20;
  170. break;
  171. case 1:
  172. $font = 18;
  173. break;
  174. case 2:
  175. $font = 16;
  176. break;
  177. case 3:
  178. $font = 14;
  179. break;
  180. case 4:
  181. $font = 12;
  182. break;
  183. case 5:
  184. default:
  185. $font = 10;
  186. break;
  187. }
  188. if (!$catid) {
  189. $catid = 0;
  190. } else {
  191. $secnum = 1;
  192. }
  193. $pdepth = $depth + 1;
  194. if ($section != '') {
  195. $section .= '.';
  196. }
  197. if ($catid > 0) {
  198. $db->query("SELECT id, name FROM faq_cats WHERE id = '$catid'");
  199. $result = $db->row_array();
  200. $pdf->SetFont('Times', 'B', $font);
  201. $pdf->MultiCell(0, 8, "$section $result[name]n");
  202. }
  203. // First, get the subtopics and process them.
  204. $categories = array();
  205. $db->query("SELECT id, name FROM faq_cats WHERE parent = '$catid'");
  206. while ($result = $db->row_array()) {
  207. $categories[] = $result['id'];
  208. }
  209. if (is_array($categories)) {
  210. foreach ($categories AS $key => $val) {
  211. if ($catid > 0) {
  212. gen_pdf_faq($val, $depth+1, "$section$secnum", $secnum);
  213. } else {
  214. gen_pdf_faq($val, $depth+1, "$secnum", $secnum);
  215. }
  216. $secnum++;
  217. }
  218. }
  219. if ($font > 10) { 
  220. $font = $font - 2;
  221. }
  222. // Then print all this category's FAQs
  223. $db->query("SELECT question, answer, title FROM faq_articles WHERE
  224. NOT to_validate AND category = '$catid' ORDER BY show_order");
  225. $count = 0;
  226. while ($result = $db->row_array()) {
  227. $count++;
  228. $pdf->SetFont('Times', 'B', $font);
  229. $pdf->MultiCell(0, 8, "$section$count: [$result[title]] $result[question]n");
  230. $pdf->SetFont('Times', '', 10);
  231. $pdf->MultiCell(0, 4, "$result[answer]n");
  232. }
  233. return;
  234. }
  235. ?>