Cache if($newsCachedPage = checkCache($cacheString)) { require_once(HEADERF); renderCache($newsCachedPage, TRUE); } // <-- Cache $category = intval($sub_action); if ($action == 'cat' && $category != 0) { $gen = new convert; $sql->db_Select("news_category", "*", "category_id='{$category}'"); $row = $sql->db_Fetch(); extract($row); // still required for the table-render. :( } if ($action == 'all') { if(!defined("NEWSALL_LIMIT")) { define("NEWSALL_LIMIT",10); } // show archive of all news items using list-style template. $news_total = $sql->db_Count("news", "(*)", "WHERE news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (news_class REGEXP ".$nobody_regexp.") AND news_start < ".time()." AND (news_end=0 || news_end>".time().")"); $query = "SELECT n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") ORDER BY n.news_sticky DESC, n.news_datestamp DESC LIMIT ".intval($newsfrom).",".NEWSALL_LIMIT; $category_name = "All"; } elseif ($action == 'cat') { // show archive of all news items in a particular category using list-style template. $news_total = $sql->db_Count("news", "(*)", "WHERE news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (news_class REGEXP ".$nobody_regexp.") AND news_start < ".time()." AND (news_end=0 || news_end>".time().") AND news_category=".intval($sub_action)); if(!defined("NEWSLIST_LIMIT")) { define("NEWSLIST_LIMIT",10); } $query = "SELECT n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") AND n.news_category=".intval($sub_action)." ORDER BY n.news_datestamp DESC LIMIT ".intval($newsfrom).",".NEWSLIST_LIMIT; } if($category_name) { define('e_PAGETITLE', $tp->toHTML($category_name,FALSE,'TITLE')); } require_once(HEADERF); if(!$NEWSLISTSTYLE) { $NEWSLISTSTYLE = "
{NEWSCATICON} {NEWSTITLELINK=extend}
{NEWSSUMMARY} {NEWSDATE} {NEWSCOMMENTS}
{NEWSTHUMBNAIL}
\n"; } $param['itemlink'] = (defined('NEWSLIST_ITEMLINK')) ? NEWSLIST_ITEMLINK : ''; $param['thumbnail'] =(defined('NEWSLIST_THUMB')) ? NEWSLIST_THUMB : 'border:0px'; $param['catlink'] = (defined('NEWSLIST_CATLINK')) ? NEWSLIST_CATLINK : ''; $param['caticon'] = (defined('NEWSLIST_CATICON')) ? NEWSLIST_CATICON : ICONSTYLE; $sql->db_Select_gen($query); $newsList = $sql->db_getList(); foreach($newsList as $row) { $text .= $ix->render_newsitem($row, 'return', '', $NEWSLISTSTYLE, $param); } $amount = ($action == "all") ? NEWSALL_LIMIT : NEWSLIST_LIMIT; $icon = ($row['category_icon']) ? "" : ""; $parms = $news_total.",".$amount.",".$newsfrom.",".e_SELF.'?'.$action.".".$category.".[FROM]"; $text .= "
".$tp->parseTemplate("{NEXTPREV={$parms}}")."
"; if(!$NEWSLISTTITLE) { $NEWSLISTTITLE = LAN_NEWS_82." '".$tp->toHTML($category_name,FALSE,'TITLE')."'"; } else { $NEWSLISTTITLE = str_replace("{NEWSCATEGORY}",$tp->toHTML($category_name,FALSE,'TITLE'),$NEWSLISTTITLE); } $text .= "
".LAN_NEWS_84."
"; ob_start(); $ns->tablerender($NEWSLISTTITLE, $text); $cache_data = ob_get_flush(); setNewsCache($cacheString, $cache_data); require_once(FOOTERF); exit; } //------------------------------------------------------ // DISPLAY SINGLE ITEM IN EXTENDED FORMAT HERE //------------------------------------------------------ if ($action == 'extend') { // --> Cache if($newsCachedPage = checkCache($cacheString)) { require_once(HEADERF); renderCache($newsCachedPage, TRUE); // This exits if cache used } // <-- Cache if(isset($pref['trackbackEnabled']) && $pref['trackbackEnabled']) { $query = "SELECT COUNT(tb.trackback_pid) AS tb_count, n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id LEFT JOIN #trackback AS tb ON tb.trackback_pid = n.news_id WHERE n.news_id=".intval($sub_action)." AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().') '; } else { $query = "SELECT n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id WHERE n.news_id=".intval($sub_action)." AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") "; } if ($sql->db_Select_gen($query)) { $news = $sql->db_Fetch(); $id = $news['news_category']; // Use category of this news item to generate next/prev links if($news['news_title']) { if($pref['meta_news_summary'] && $news['news_title']) { define('META_DESCRIPTION',SITENAME.': '.$news['news_title'].' - '.$news['news_summary']); } define("e_PAGETITLE",$news['news_title']); } if (TRUE) { /* Added by nlStart - show links to previous and next news */ if (!isset($news['news_extended'])) $news['news_extended'] = ''; $news['news_extended'].="
".LAN_NEWS_85."   ".LAN_NEWS_84."
"; $prev_query = "SELECT news_id, news_title FROM `#news` WHERE `news_id` < ".intval($sub_action)." AND `news_category`=".$id." AND `news_class` REGEXP '".e_CLASS_REGEXP."' AND NOT (`news_class` REGEXP ".$nobody_regexp.") AND `news_start` < ".time()." AND (`news_end`=0 || `news_end` > ".time().') ORDER BY `news_id` DESC LIMIT 1'; $sql->db_Select_gen($prev_query); $prev_news = $sql->db_Fetch(); if ($prev_news) { $news['news_extended'].="
".LAN_NEWS_86."
"; } $next_query = "SELECT news_id, news_title FROM `#news` AS n WHERE `news_id` > ".intval($sub_action)." AND `news_category` = ".$id." AND `news_class` REGEXP '".e_CLASS_REGEXP."' AND NOT (`news_class` REGEXP ".$nobody_regexp.") AND `news_start` < ".time()." AND (`news_end`=0 || `news_end` > ".time().') ORDER BY `news_id` ASC LIMIT 1'; $sql->db_Select_gen($next_query); $next_news = $sql->db_Fetch(); if ($next_news) { $news['news_extended'].="
".LAN_NEWS_87."
"; } $news['news_extended'].="

"; } require_once(HEADERF); ob_start(); $ix->render_newsitem($news, 'extend'); $cache_data = ob_get_contents(); ob_end_flush(); setNewsCache($cacheString, $cache_data); require_once(FOOTERF); exit; } else { $action = 'default'; } } //------------------------------------------------------ // DISPLAY NEWS IN LIST FORMAT HERE //------------------------------------------------------ // Show title, author, first part of news item... if (empty($order)) { $order = 'news_datestamp'; } $order = $tp -> toDB($order, true); $interval = $pref['newsposts']; switch ($action) { case "list" : $sub_action = intval($sub_action); $news_total = $sql->db_Count("news", "(*)", "WHERE news_category={$sub_action} AND news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (news_class REGEXP ".$nobody_regexp.") AND news_start < ".time()." AND (news_end=0 || news_end>".time().")"); // $query = "SELECT SQL_CALC_FOUND_ROWS n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n $query = "SELECT n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") AND n.news_category={$sub_action} ORDER BY n.news_sticky DESC,".$order." DESC LIMIT ".intval($newsfrom).",".ITEMVIEW; break; case "item" : $sub_action = intval($sub_action); $news_total = 1; if(isset($pref['trackbackEnabled']) && $pref['trackbackEnabled']) { $query = "SELECT COUNT(tb.trackback_pid) AS tb_count, n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id LEFT JOIN #trackback AS tb ON tb.trackback_pid = n.news_id WHERE n.news_id={$sub_action} AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") GROUP by n.news_id"; } else { $query = "SELECT n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id WHERE n.news_id={$sub_action} AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().")"; } break; case "month" : case "day" : $item = $tp -> toDB($sub_action).'20000101'; $year = substr($item, 0, 4); $month = substr($item, 4,2); if ($action == 'day') { $day = substr($item, 6, 2); $lastday = $day; } else { // A month's worth $day = 1; $lastday = date("t", $startdate); } $startdate = mktime(0, 0, 0, $month, $day, $year); $enddate = mktime(23, 59, 59, $month, $lastday, $year); $query = "SELECT n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") AND n.news_render_type<2 AND n.news_datestamp > {$startdate} AND n.news_datestamp < {$enddate} ORDER BY ".$order." DESC LIMIT ".intval($newsfrom).",".ITEMVIEW; $news_total = $sql->db_Count("news", "(*)", "WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") AND n.news_render_type<2 AND n.news_datestamp > {$startdate} AND n.news_datestamp < {$enddate}"); break; case 'default' : default : $action = ''; $cacheString = 'news.php_default_'; // Make sure its sensible $news_total = $sql->db_Count("news", "(*)", "WHERE news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (news_class REGEXP ".$nobody_regexp.") AND news_start < ".time()." AND (news_end=0 || news_end>".time().") AND news_render_type<2" ); if(!isset($pref['newsposts_archive'])) { $pref['newsposts_archive'] = 0; } $interval = $pref['newsposts']-$pref['newsposts_archive']; // Number of 'full' posts to show // Get number of news item to show if(isset($pref['trackbackEnabled']) && $pref['trackbackEnabled']) { $query = "SELECT COUNT(tb.trackback_pid) AS tb_count, n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon, COUNT(*) AS tbcount FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id LEFT JOIN #trackback AS tb ON tb.trackback_pid = n.news_id WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") AND n.news_render_type<2 GROUP by n.news_id ORDER BY news_sticky DESC, ".$order." DESC LIMIT ".intval($newsfrom).",".$pref['newsposts']; } else { $query = "SELECT n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_name, nc.category_icon FROM #news AS n LEFT JOIN #user AS u ON n.news_author = u.user_id LEFT JOIN #news_category AS nc ON n.news_category = nc.category_id WHERE n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$nobody_regexp.") AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") AND n.news_render_type<2 ORDER BY n.news_sticky DESC, ".$order." DESC LIMIT ".intval($newsfrom).",".$pref['newsposts']; } } // END - switch($action) if($newsCachedPage = checkCache($cacheString)) // normal news front-page - with cache. { require_once(HEADERF); if(!$action) { if (isset($pref['fb_active'])) { require_once(e_PLUGIN."featurebox/featurebox.php"); } if (isset($pref['nfp_display']) && $pref['nfp_display'] == 1) { require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); } } //news archive if ($action != "item" && $action != 'list' && $pref['newsposts_archive']) { if ($sql->db_Select_gen($query)) { $newsAr = $sql -> db_getList(); if($newsarchive = checkCache('newsarchive')){ $newsCachedPage = $newsCachedPage.$newsarchive; }else{ show_newsarchive($newsAr,$interval); } } } renderCache($newsCachedPage, TRUE); } //if (!($news_total = $sql->db_Select_gen($query))) if (!$sql->db_Select_gen($query)) { // No news items require_once(HEADERF); echo "

".(strstr(e_QUERY, "month") ? LAN_NEWS_462 : LAN_NEWS_83)."


"; require_once(FOOTERF); exit; } $newsAr = $sql -> db_getList(); $p_title = ($action == "item") ? $newsAr[1]['news_title'] : $tp->toHTML($newsAr[1]['category_name'],FALSE,'TITLE'); if($action != "" && !is_numeric($action)) { if($action == "item" && $pref['meta_news_summary'] && $newsAr[1]['news_title']) { define("META_DESCRIPTION",SITENAME.": ".$newsAr[1]['news_title']." - ".$newsAr[1]['news_summary']); } define("e_PAGETITLE", $p_title); } require_once(HEADERF); if(!$action) { if (isset($pref['fb_active'])){ // --->feature box require_once(e_PLUGIN."featurebox/featurebox.php"); } if (isset($pref['nfp_display']) && $pref['nfp_display'] == 1){ require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); } } if(isset($pref['news_unstemplate']) && $pref['news_unstemplate'] && file_exists(THEME."news_template.php")) { // theme specific template required ... require_once(THEME."news_template.php"); if($ALTERNATECLASS1) { return TRUE; } $newscolumns = (isset($NEWSCOLUMNS) ? $NEWSCOLUMNS : 1); $newspercolumn = (isset($NEWSITEMSPERCOLUMN) ? $NEWSITEMSPERCOLUMN : 10); $newsdata = array(); $loop = 1; foreach($newsAr as $news) { if(is_array($ALTERNATECLASSES)) { $newsdata[$loop] .= "
".$ix->render_newsitem($news, "return")."
"; $ALTERNATECLASSES = array_reverse($ALTERNATECLASSES); } else { $newsdata[$loop] .= $ix->render_newsitem($news, "return"); } $loop ++; if($loop > $newscolumns) { $loop = 1; } } $loop = 1; foreach($newsdata as $data) { $var = "ITEMS{$loop}"; $$var = $data; $loop ++; } $text = preg_replace("/\{(.*?)\}/e", '$\1', $NEWSCLAYOUT); require_once(HEADERF); $parms = $news_total.",".ITEMVIEW.",".$newsfrom.",".e_SELF.'?'.($action ? $action : 'default' ).($sub_action ? ".".$sub_action : ".0").".[FROM]"; $nextprev = $tp->parseTemplate("{NEXTPREV={$parms}}"); $text .= ($nextprev ? "
".$nextprev."
" : ""); // $text=''.$text.'
'.$nextprev.'
'; echo $text; setNewsCache($cacheString, $text); } else { ob_start(); $newpostday = 0; $thispostday = 0; $pref['newsHeaderDate'] = 1; $gen = new convert(); if (!defined("DATEHEADERCLASS")) { define("DATEHEADERCLASS", "nextprev"); // if not defined in the theme, default class nextprev will be used for new date header } // #### normal newsitems, rendered via render_newsitem(), the $query is changed above (no other changes made) --------- $i= 1; while(isset($newsAr[$i]) && $i <= $interval) { $news = $newsAr[$i]; // render new date header if pref selected ... $thispostday = strftime("%j", $news['news_datestamp']); if ($newpostday != $thispostday && (isset($pref['news_newdateheader']) && $pref['news_newdateheader'])) { echo "
".strftime("%A %d %B %Y", $news['news_datestamp'])."
"; } $newpostday = $thispostday; $news['category_id'] = $news['news_category']; if ($action == "item") { unset($news['news_render_type']); } $ix->render_newsitem($news); $i++; } $parms = $news_total.",".ITEMVIEW.",".$newsfrom.",".e_SELF.'?'.($action ? $action : 'default' ).($sub_action ? ".".$sub_action : ".0").".[FROM]"; $nextprev = $tp->parseTemplate("{NEXTPREV={$parms}}"); echo ($nextprev ? "
".$nextprev."
" : ""); $cache_data = ob_get_clean(); require_once(HEADERF); echo $cache_data; setNewsCache($cacheString, $cache_data); } // ##### -------------------------------------------------------------------------------------------------------------- function show_newsarchive($newsAr, $i = 1) { global $ns, $gen, $pref, $tp, $news_archive_shortcodes, $NEWSARCHIVE, $news2; // do not show the news archive on the news.php?item.X page (but only on the news mainpage) require_once(e_FILE.'shortcode/batch/news_archives.php'); $textnewsarchive = ''; ob_start(); $i++; // First entry to show while(isset($newsAr[$i])) { $news2 = $newsAr[$i]; // Code from Lisa // copied from the rss creation, but added here to make sure the url for the newsitem is to the news.php?item.X // instead of the actual hyperlink that may have been added to a newstitle on creation $search = array(); $replace = array(); $search[0] = "/\(.*?)<\/a>/si"; $replace[0] = '\\2'; $search[1] = "/\(.*?)<\/a>/si"; $replace[1] = '\\2'; $search[2] = "/\(.*?)<\/a>/si"; $replace[2] = '\\2'; $search[3] = "/\(.*?)<\/a>/si"; $replace[3] = '\\2'; $search[4] = "/\(.*?)<\/a>/si"; $replace[4] = '\\2'; $news2['news_title'] = preg_replace($search, $replace, $news2['news_title']); // End of code from Lisa $gen = new convert; $news2['news_datestamp'] = $gen->convert_date($news2['news_datestamp'], "short"); if(!$NEWSARCHIVE){ $NEWSARCHIVE ="
{ARCHIVE_BULLET} {ARCHIVE_LINK} {ARCHIVE_AUTHOR} @ ({ARCHIVE_DATESTAMP}) ({ARCHIVE_CATEGORY})
"; } $textnewsarchive .= $tp->parseTemplate($NEWSARCHIVE, FALSE, $news_archive_shortcodes); $i++; } $ns->tablerender($pref['newsposts_archive_title'], $textnewsarchive, 'news_archive'); $newsarchive = ob_get_contents(); ob_end_flush(); // dump collected data setNewsCache('newsarchive', $newsarchive); } // #### new: news archive --------------------------------------------------------------------------------------------- if ($action != "item" && $action != 'list' && $pref['newsposts_archive']) { show_newsarchive($newsAr,$interval); } // #### END ----------------------------------------------------------------------------------------------------------- if ($action != "item") { if (is_numeric($action)){ $action = ""; } // $parms = $news_total.",".ITEMVIEW.",".$newsfrom.",".e_SELF.'?'."[FROM].".$action.(isset($sub_action) ? ".".$sub_action : ""); // $nextprev = $tp->parseTemplate("{NEXTPREV={$parms}}"); // echo ($nextprev ? "
".$nextprev."
" : ""); } if(is_dir("remotefile")) { require_once(e_HANDLER."file_class.php"); $file = new e_file; $reject = array('$.','$..','/','CVS','thumbs.db','*._$', 'index', 'null*', 'Readme.txt'); $crem = $file -> get_files(e_BASE."remotefile", "", $reject); if(count($crem)) { foreach($crem as $loadrem) { if(strstr($loadrem['fname'], "load_")) { require_once(e_BASE."remotefile/".$loadrem['fname']); } } } } if (isset($pref['nfp_display']) && $pref['nfp_display'] == 2) { require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); } render_newscats(); require_once(FOOTERF); // ========================================================================= function setNewsCache($cache_tag, $cache_data) { global $e107cache; $e107cache->set($cache_tag, $cache_data); $e107cache->set($cache_tag."_title", defined("e_PAGETITLE") ? e_PAGETITLE : ''); $e107cache->set($cache_tag."_diz", defined("META_DESCRIPTION") ? META_DESCRIPTION : ''); } function checkCache($cacheString){ global $pref,$e107cache; $cache_data = $e107cache->retrieve($cacheString); $cache_title = $e107cache->retrieve($cacheString."_title"); $cache_diz = $e107cache->retrieve($cacheString."_diz"); $etitle = ($cache_title != "e_PAGETITLE") ? $cache_title : ""; $ediz = ($cache_diz != "META_DESCRIPTION") ? $cache_diz : ""; if($etitle){ define(e_PAGETITLE,$etitle); } if($ediz){ define("META_DESCRIPTION",$ediz); } if ($cache_data) { return $cache_data; } else { return false; } } function renderCache($cache, $nfp = FALSE){ global $pref,$tp,$sql,$CUSTOMFOOTER, $FOOTER,$cust_footer,$ph; global $db_debug,$ns,$eTraffic,$eTimingStart, $error_handler, $db_time, $sql2, $mySQLserver, $mySQLuser, $mySQLpassword, $mySQLdefaultdb,$e107; echo $cache; if (isset($nfp) && isset($pref['nfp_display']) && $pref['nfp_display'] == 2) { require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); } render_newscats(); require_once(FOOTERF); exit; } function render_newscats(){ // -- CNN Style Categories. ---- global $pref,$ns,$tp; if (isset($pref['news_cats']) && $pref['news_cats'] == '1') { $text3 = $tp->toHTML("{NEWS_CATEGORIES}", TRUE, 'parse_sc,nobreak,emotes_off,no_make_clickable'); $ns->tablerender(LAN_NEWS_23, $text3, 'news_cat'); } } ?>