$category) { $categories[$id]['parents'] = array(); // Top category? Just translate name. if ($category['parent'] == 0) { $categories[$id]['name'] = $hesklang['kb_text']; continue; } $current_parrent = $category['parent']; $categories[$id]['parents'][] = $current_parrent; $i = 0; while ($current_parrent > 0 && isset($categories[$current_parrent]) && $categories[$current_parrent]['id'] != $categories[$current_parrent]['parent'] && $i < 1000) { if (($current_parrent = $categories[$current_parrent]['parent']) > 0) { $categories[$id]['parents'][] = $current_parrent; } $i++; } $categories[$id]['parents'] = array_reverse($categories[$id]['parents']); } return $categories; } // END hesk_kbCategoriesArray() function hesk_kbArticleContentPreview($txt) { global $hesk_settings; // Strip HTML tags $txt = strip_tags($txt); // If text is larger than article preview length, shorten it if (hesk_mb_strlen($txt) > $hesk_settings['kb_substrart']) { // The quick but not 100% accurate way (number of chars displayed may be lower than the limit) return hesk_mb_substr($txt, 0, $hesk_settings['kb_substrart']) . '...'; // If you want a more accurate, but also slower way, use this instead // return hesk_htmlentities( hesk_mb_substr( hesk_html_entity_decode($txt), 0, $hesk_settings['kb_substrart'] ) ) . '...'; } return $txt; } // END hesk_kbArticleContentPreview() function hesk_kbTopArticles($how_many, $index = 1) { global $hesk_settings, $hesklang; $articles = array(); // Index page or KB main page? if ($index) { // Disabled? if (!$hesk_settings['kb_index_popart']) { return $articles; } } else { // Disabled? if (!$hesk_settings['kb_popart']) { return $articles; } } /* Get list of articles from the database */ $res = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`catid`,`t1`.`subject`,`t1`.`views`, `t1`.`content`, `t2`.`name` AS `category`, `t1`.`rating`, `t1`.`votes` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1` LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id` WHERE `t1`.`type`='0' AND `t2`.`type`='0' ORDER BY `t1`.`sticky` DESC, `t1`.`views` DESC, `t1`.`art_order` ASC LIMIT ".intval($how_many)); $articles = array(); // Remember what articles are printed for "Top" so we don't print them again in "Latest" $hesk_settings['kb_top_articles_printed'] = array(); while ($article = hesk_dbFetchAssoc($res)) { // Top category? Translate name if ($article['catid'] == 1) { $article['category'] = $hesklang['kb_text']; } $hesk_settings['kb_top_articles_printed'][] = $article['id']; $article['content_preview'] = hesk_kbArticleContentPreview($article['content']); $article['views_formatted'] = number_format($article['views'], 0, null, $hesklang['sep_1000']); $article['votes_formatted'] = number_format($article['votes'], 0, null, $hesklang['sep_1000']); $articles[] = $article; } return $articles; } // END hesk_kbTopArticles() function hesk_kbLatestArticles($how_many, $index = 1) { global $hesk_settings, $hesklang; $articles = array(); // Index page or KB main page? if ($index) { // Disabled? if ( ! $hesk_settings['kb_index_latest']) { return $articles; } // Show title in italics $font_weight = 'i'; } else { // Disabled? if ( ! $hesk_settings['kb_latest']) { return $articles; } // Show title in bold $font_weight = 'b'; } // Don't include articles that have already been printed under "Top" articles $sql_top = ''; if (isset($hesk_settings['kb_top_articles_printed']) && count($hesk_settings['kb_top_articles_printed'])) { $sql_top = ' AND `t1`.`id` NOT IN ('.implode(',', $hesk_settings['kb_top_articles_printed']).')'; } /* Get list of articles from the database */ $res = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`catid`,`t1`.`subject`,`t1`.`dt`,`t1`.`views`, `t1`.`content`, `t1`.`rating`, `t1`.`votes`, `t2`.`name` AS `category` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1` LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id` WHERE `t1`.`type`='0' AND `t2`.`type`='0' {$sql_top} ORDER BY `t1`.`dt` DESC LIMIT ".intval($how_many)); while ($article = hesk_dbFetchAssoc($res)) { // Top category? Translate name if ($article['catid'] == 1) { $article['category'] = $hesklang['kb_text']; } $article['content_preview'] = hesk_kbArticleContentPreview($article['content']); $article['views_formatted'] = number_format($article['views'], 0, null, $hesklang['sep_1000']); $article['votes_formatted'] = number_format($article['votes'], 0, null, $hesklang['sep_1000']); $articles[] = $article; } return $articles; } // END hesk_kbLatestArticles() function hesk_kbSearchLarge($admin = '') { global $hesk_settings, $hesklang; $action = 'knowledgebase.php'; if ($admin) { if ( ! $hesk_settings['kb_search']) { return ''; } $action = 'knowledgebase_private.php'; } elseif ($hesk_settings['kb_search'] != 2) { return ''; } ?>