diff --git a/e107_plugins/news/news.php b/e107_plugins/news/news.php new file mode 100644 index 000000000..64db37a7f --- /dev/null +++ b/e107_plugins/news/news.php @@ -0,0 +1,1504 @@ +pref = e107::getPref(); + + require_once(e_HANDLER."news_class.php"); + + if(isset($NEWSHEADER)) + { + return false; + } + + $this->nobody_regexp = "'(^|,)(".str_replace(",", "|", e_UC_NOBODY).")(,|$)'"; + $this->ix = new news; + + $this->setConstants(); + $this->detect(); + + + + + + return null; + } + + + private function detect() + { + $this->setActions(); + $this->setRoute(); + + + if ($this->action == 'cat' || $this->action == 'all' || !empty($_GET['tag']) || !empty($_GET['author'])) + { // --> Cache + $this->text = $this->renderListTemplate(); + return null; + } + + if ($this->action == 'extend') + { // --> Cache + $this->text = $this->renderViewTemplate(); + return null; + } + + if ($this->action != "item" && $this->action != 'list' && $this->pref['newsposts_archive']) + { + // return $this->show_newsarchive($newsAr,$interval); + } + + $this->text = $this->renderDefaultTemplate(); + + if(isset($this->pref['nfp_display']) && $this->pref['nfp_display'] == 2 && is_readable(e_PLUGIN."newforumposts_main/newforumposts_main.php")) + { + ob_start(); + require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); + $this->text .= ob_get_contents(); + ob_end_clean(); + } + + $this->text .= $this->render_newscats(); + return null; + + } + + public function render() + { + echo $this->text; + } + + private function setActions() + { + + $this->defaultTemplate = e107::getPref('news_default_template'); + + if (e_QUERY) //TODO add support for $_GET['cat'] and $_GET['mode'] and phase-out the x.x.x format. + { + + $tmp = explode(".",e_QUERY); + $action = $tmp[0]; // At least one parameter here + $sub_action = varset($tmp[1],''); // Usually a numeric category, or numeric news item number, but don't presume yet + // $id = varset($tmp[2],''); // ID of specific news item where required + $this->from = intval(varset($tmp[2],0)); // Item number for first item on multi-page lists + $this->cacheString = 'news.php_'.e_QUERY; + } + else + { + + $opt = array('default'=>'', 'list'=>'all'); + $action = varset($opt[$this->defaultTemplate],''); + $sub_action = ''; + $tmp = array(); + + } + + //$newsfrom = (!is_numeric($action) || !e_QUERY ? 0 : ($action ? $action : e_QUERY)); + + // Usually the first query parameter is the action. + // For any of the 'list' modes (inc month, day), the action being second is a legacy situation + // .... which can hopefully go sometime + //SecretR: Gone, gone... + if (is_numeric($action) && isset($tmp[1]) && (($tmp[1] == 'list') || ($tmp[1] == 'month') || ($tmp[1] == 'day'))) + { + $action = $tmp[1]; + $sub_action = varset($tmp[0],''); + } + + + + if ($action == 'all' || $action == 'cat') + { + $sub_action = intval(varset($tmp[1],0)); + } + + $this->action = $action; + $this->subAction= $sub_action; + + + + + + + } + + + private function setRoute() + { + $newsUrlparms = array('page' => '--FROM--'); + if($this->subAction) + { + + switch ($this->action) + { + case 'list': + $newsUrlparms['id'] = $this->subAction; + $newsRoute = 'list/category'; + break; + + case 'cat': + $newsUrlparms['id'] = $this->subAction; + $newsRoute = 'list/short'; + break; + + case 'day': + case 'month': + $newsUrlparms['id'] = $this->subAction; + $newsRoute = 'list/'.$this->action; + break; + + default: + $newsRoute = 'list/items'; + break; + } + } + elseif($this->action == 'all') + { + $newsRoute = 'list/all'; + $newsUrlparms['id'] = $this->subAction; + } + else + { + $newsRoute = 'list/items'; + } + + + + $this->route = 'news/'.$newsRoute; + + $tp = e107::getParser(); + + if(vartrue($_GET['tag']) || substr($this->action,0,4) == 'tag=') + { + + $this->route = 'news/list/tag'; + if(!vartrue($_GET['tag'])) + { + list($this->action,$word) = explode("=",$this->action,2); + $_GET['tag'] = $word; + unset($word,$tmp); + } + + $this->newsUrlparms['tag'] = $tp->filter($_GET['tag']); + $this->from = intval(varset($_GET['page'],0)); + } + + if(!empty($_GET['author']) || substr($this->action,0,4) == 'author=') + { + + $this->route = 'news/list/author'; + if(!vartrue($_GET['author'])) + { + list($action,$author) = explode("=",$this->action,2); + $_GET['author'] = $author; + unset($author,$tmp); + } + + $this->newsUrlparms['author'] = $tp->filter($_GET['author']); + $this->from = intval(varset($_GET['page'],0)); + + } + } + + + private function setConstants() + { + + + if (!defined('ITEMVIEW')) + { + define('ITEMVIEW', varset($this->pref['newsposts'],15)); + } + + // ?all and ?cat.x and ?tag are the same listing functions - just filtered differently. + // NEWSLIST_LIMIT is suitable for all + + if(!defined("NEWSLIST_LIMIT")) + { + define("NEWSLIST_LIMIT", varset($this->pref['news_list_limit'],15)); + } + + + } + + public function debug() + { + echo "
"; + echo "

SEF Debug Info

"; + echo "action= ".$this->action." "; + echo "
subaction= ".$this->subAction." "; + echo "
route= ".$this->route." "; + echo "
e_QUERY= ".e_QUERY." "; + + echo "
_GET= ".print_r($_GET,true); + echo "
"; + + + } + + + + + // ----------- old functions ------------------------ + + + private function show_newsarchive($newsAr, $i = 1) + { + global $ns, $gen, $tp, $news_archive_shortcodes, $NEWSARCHIVE, $news2; + + $tp = e107::getParser(); + // do not show the news archive on the news.php?item.X page (but only on the news mainpage) + require_once(e_CORE.'shortcodes/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++; + } + + $newsarchive = $ns->tablerender($this->pref['newsposts_archive_title'], $textnewsarchive, 'news_archive', true); + + $this->setNewsCache('newsarchive', $newsarchive); + + return $newsarchive; + } + + + private function setNewsFrontMeta($news, $type='news') + { + + $tp = e107::getParser(); + + if($type == 'news') + { + if($news['news_title'] && !defined('e_PAGETITLE')) + { + define('e_PAGETITLE', $news['news_title']); + e107::meta('og:title',$news['news_title']); + e107::meta('og:type','article'); + } + + if($news['news_meta_description'] && !defined('META_DESCRIPTION')) + { + e107::meta('description',$news['news_meta_description']); + e107::meta('og:description',$news['news_meta_description']); + //define('META_DESCRIPTION', $news['news_meta_description']); // deprecated + } + elseif($news['news_summary']) // BC compatibility + { + e107::meta('og:description',$news['news_summary']); + } + + // include news-thumbnail/image in meta. - always put this one first. + if($news['news_thumbnail']) + { + $iurl = (substr($news['news_thumbnail'],0,3)=="{e_") ? $news['news_thumbnail'] : SITEURL.e_IMAGE."newspost_images/".$news['news_thumbnail']; + $tmp = explode(",", $iurl); + foreach($tmp as $mimg) + { + if(substr($mimg,-8) == '.youtube') + { + continue; + } + e107::meta('og:image',$tp->thumbUrl($tmp[0],'w=500',false,true) ); + // e107::meta('og:image',$mimg); + } + + } + + // grab all images in news-body and add to meta. + $images = e107::getBB()->getContent('img',$news['news_body'],SITEURL.e_IMAGE."newspost_images/"); + $c =1; + foreach($images as $im) + { + if($c == 4){ break; } + e107::meta('og:image',$im); + $c++; + } + + // grab all youtube videos in news-body and add thumbnails to meta. + $youtube = e107::getBB()->getContent('youtube',$news['news_body']); + $c = 1; + foreach($youtube as $yt) + { + if($c == 3){ break; } + list($img,$tmp) = explode("?",$yt); + e107::meta('og:image',"http://img.youtube.com/vi/".$img."/0.jpg"); + $c++; + } + + + + $url = e107::getUrl()->create('news/view/item', $news,'full=1'); + e107::meta('og:url',$url); + + e107::meta('article:section',$news['category_name']); + + if($news['news_meta_keywords'] && !defined('META_KEYWORDS')) + { + e107::meta('keywords',$news['news_meta_keywords']); + $tmp = explode(",",$news['news_meta_keywords']); + foreach($tmp as $t) + { + e107::meta('article:tag', trim($t)); + } + + // define('META_KEYWORDS', $news['news_meta_keywords']); // deprecated + } + + + /* Facebook reference. + * http://developers.facebook.com/docs/opengraph/objects/builtin/ + */ + + return; + } + + + + if($news['category_name'] && !defined('e_PAGETITLE') && $type == 'category') + { + define('e_PAGETITLE', $tp->toHtml($news['category_name'],false,'TITLE_PLAIN')); + } + + if($news['category_meta_keywords'] && !defined('META_KEYWORDS')) + { + define('META_KEYWORDS', $news['category_meta_keywords']); + } + + if($news['category_meta_description'] && !defined('META_DESCRIPTION')) + { + define('META_DESCRIPTION', $news['category_meta_description']); + } + + + + } + + + + private function setNewsCache($cache_tag, $cache_data, $rowData=array()) + { + $e107cache = e107::getCache(); + + $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 : ''); + $e107cache->set($cache_tag."_rows", $rowData); + + } + + + /** + * @param $cache_tag + * @param string $type 'title' or 'diz' or 'rows' or empty for html. + */ + private function getNewsCache($cachetag, $type=null) + { + if(!empty($type)) + { + $cachetag .= "_".$type; + } + + e107::getDebug()->log('Retrieving cache string:' . $cachetag); + + return e107::getCache()->retrieve($cachetag); + } + + /** + * @param $cacheString + * @return bool|string + */ + private function checkCache($cacheString) + { + $e107cache = e107::getCache(); + + $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; + } + } + + + private function renderCache($cache, $nfp = FALSE) + { + global $pref,$tp,$sql,$CUSTOMFOOTER, $FOOTER,$cust_footer,$ph; + global $db_debug,$ns,$eTimingStart, $error_handler, $db_time, $sql2, $mySQLserver, $mySQLuser, $mySQLpassword, $mySQLdefaultdb,$e107; + + return $cache; + + /*if (isset($nfp) && isset($this->pref['nfp_display']) && $this->pref['nfp_display'] == 2) + { + require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); + } + // render_newscats(); //fixme this shouldn't be here. + return $cache;*/ + } + + + private function render_newscats() // -- CNN Style Categories. ---- + { + $tp = e107::getParser(); + $ns = e107::getRender(); + + if (isset($this->pref['news_cats']) && $this->pref['news_cats'] == '1') + { + $text3 = $tp->toHTML("{NEWS_CATEGORIES}", TRUE, 'TITLE'); + return $ns->tablerender(LAN_NEWS_23, $text3, 'news_cat', true); + } + } + + + + private function renderListTemplate() + { + + $sql = e107::getDb(); + $tp = e107::getParser(); + + global $NEWSLISTSTYLE, $NEWSLISTTITLE; + + + if($newsCachedPage = checkCache($this->cacheString)) + { + return $this->renderCache($newsCachedPage, TRUE); + } + + $category = intval($this->subAction); + if ($this->action == 'cat' && $category != 0) + { + + $gen = new convert; + $sql->select("news_category", "*", "category_id='{$category}'"); + $row = $sql->fetch(); + extract($row); // still required for the table-render. :( + } + + if ($this->action == 'all') // show archive of all news items using list-style template. + { + $renTypeQry = ''; + + if(!empty($this->pref['news_list_templates']) && is_array($this->pref['news_list_templates'])) + { + $renTypeQry = " AND (n.news_render_type REGEXP '(^|,)(".implode("|", $this->pref['news_list_templates']).")(,|$)')"; + } + + // $news_total = $sql->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().")". str_replace("n.news", "news", $renTypeQry)); + $query = " + SELECT SQL_CALC_FOUND_ROWS n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, nc.category_icon, + nc.category_meta_keywords, nc.category_meta_description + 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 ".$this->nobody_regexp.") AND n.news_start < ".time()." + AND (n.news_end=0 || n.news_end>".time().") "; + + $query .= $renTypeQry; + + $query .= " + ORDER BY n.news_sticky DESC, n.news_datestamp DESC + LIMIT ".intval($this->from).",".deftrue('NEWSALL_LIMIT', NEWSLIST_LIMIT); // NEWSALL_LIMIT just for BC. NEWSLIST_LIMIT is sufficient. + $category_name = ($this->defaultTemplate == 'list') ? PAGE_NAME : "All"; + unset($renTypeQry); + } + elseif ($this->action == 'cat') // show archive of all news items in a particular category using list-style template. + { + + // $news_total = $sql->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)); + + $query = " + SELECT SQL_CALC_FOUND_ROWS n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, nc.category_icon, nc.category_meta_keywords, + nc.category_meta_description + 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_category=".intval($this->subAction)." + AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") + AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$this->nobody_regexp.") + ORDER BY n.news_datestamp DESC + LIMIT ".intval($this->from).",".NEWSLIST_LIMIT; + } + elseif(vartrue($_GET['tag'])) + { + $tagsearch = e107::getParser()->filter($_GET['tag']); + + $query = " + SELECT SQL_CALC_FOUND_ROWS n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, nc.category_icon, nc.category_meta_keywords, + nc.category_meta_description + 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_meta_keywords LIKE '%".$tagsearch."%' + AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") + AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$this->nobody_regexp.") + ORDER BY n.news_datestamp DESC + LIMIT ".intval($this->from).",".NEWSLIST_LIMIT; + $category_name = 'Tag: "'.$tagsearch.'"'; + + } + elseif(!empty($_GET['author'])) + { + $authorSearch = e107::getParser()->filter($_GET['author']); + + $query = " + SELECT SQL_CALC_FOUND_ROWS n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, nc.category_icon, nc.category_meta_keywords, + nc.category_meta_description + 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 u.user_name = '".$authorSearch."' + AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") + AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$this->nobody_regexp.") + ORDER BY n.news_datestamp DESC + LIMIT ".intval($this->from).",".NEWSLIST_LIMIT; + $category_name = 'Author: "'.$authorSearch.'"'; + + + + } + + $newsList = array(); + + if(!empty($query) && $sql->gen($query)) + { + $news_total = $sql->foundRows(); + $newsList = $sql->db_getList(); + $ogImageCount = 0; + foreach($newsList as $row) + { + if(!empty($row['news_thumbnail'])) + { + $iurl = (substr($row['news_thumbnail'],0,3)=="{e_") ? $row['news_thumbnail'] : SITEURL.e_IMAGE."newspost_images/".$row['news_thumbnail']; + $tmp = explode(",", $iurl); + + if($tp->isImage($tmp[0])) + { + if($ogImageCount > 6) + { + break; + } + + e107::meta('og:image',$tp->thumbUrl($tmp[0],'w=500',false,true) ); + $ogImageCount++; + + } + } + + } + } + + + if($this->action == 'cat') + { + $this->setNewsFrontMeta($newsList[1], 'category'); + } + // elseif($category_name) + // { + // define('e_PAGETITLE', $tp->toHTML($category_name,FALSE,'TITLE')); + // } + e107::getDebug()->log("PageTitle: ".e_PAGETITLE); + $currentNewsAction = $this->action; + + $action = $currentNewsAction; + + if(deftrue('BOOTSTRAP')) // v2.x + { + $template = e107::getTemplate('news', 'news', 'list'); + } + else // v1.x + { + if(empty($NEWSLISTSTYLE)) + { + $NEWSLISTSTYLE = " +
+ + +
+ {NEWS_CATEGORY_ICON} + + {NEWSTITLELINK=extend} +
+ {NEWS_SUMMARY} + + {NEWS_DATE} + {NEWSCOMMENTS} + +
+ {SETIMAGE: w=55&h=55&crop=1} + {NEWSTHUMBNAIL} +
+
\n"; + } + + $template = array('start'=>'', 'item'=>$NEWSLISTSTYLE, 'end'=>''); + + } + + // Legacy Styling.. + $param = array(); + $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 : defset('ICONSTYLE',''); + $param['current_action'] = $action; + $param['template_key'] = 'list'; + + // NEW - allow news batch shortcode override (e.g. e107::getScBatch('news', 'myplugin', true); ) + e107::getEvent()->trigger('news_list_parse', $newsList); + + $text = ''; + + if(vartrue($template['start'])) + { + $text .= $tp->parseTemplate($template['start'], true); + } + + if(!empty($newsList)) + { + foreach($newsList as $row) + { + $text .= $this->ix->render_newsitem($row, 'return', '', $template['item'], $param); + } + } + else // No News - empty. + { + $text .= "
".(strstr(e_QUERY, "month") ? LAN_NEWS_462 : LAN_NEWS_83)."
"; + } + + if(vartrue($template['end'])) + { + $text .= $tp->parseTemplate($template['end'], true); + } + + $icon = ($row['category_icon']) ? "" : ""; + + // Deprecated. + // $parms = $news_total.",".$amount.",".$newsfrom.",".$e107->url->getUrl('core:news', 'main', "action=nextprev&to_action={$action}&subaction={$category}"); + // $parms = $news_total.",".$amount.",".$newsfrom.",".e_SELF.'?'.$action.".".$category.".[FROM]"; + // + // $text .= "
".$tp->parseTemplate("{NEXTPREV={$parms}}")."
"; + + $amount = NEWSLIST_LIMIT; + $nitems = defined('NEWS_NEXTPREV_NAVCOUNT') ? '&navcount='.NEWS_NEXTPREV_NAVCOUNT : '' ; + $url = rawurlencode(e107::getUrl()->create($this->route, $this->newsUrlparms)); + $parms = 'tmpl_prefix='.deftrue('NEWS_NEXTPREV_TMPL', 'default').'&total='.$news_total.'&amount='.$amount.'¤t='.$this->from.$nitems.'&url='.$url; + + + // e107::getDebug()->log($newsUrlparms); + + $text .= $tp->parseTemplate("{NEXTPREV={$parms}}"); + + if(varset($template['caption'])) // v2.x + { + $NEWSLISTTITLE = str_replace("{NEWSCATEGORY}",$tp->toHTML($category_name,FALSE,'TITLE'), $template['caption']); + } + elseif(empty($NEWSLISTTITLE)) // default + { + $NEWSLISTTITLE = LAN_NEWS_82." '".$tp->toHTML($category_name,FALSE,'TITLE')."'"; + } + else // v1.x + { + $NEWSLISTTITLE = str_replace("{NEWSCATEGORY}",$tp->toHTML($category_name,FALSE,'TITLE'),$NEWSLISTTITLE); + } + + if($this->defaultTemplate != 'list') + { + $text .= "
"; + } + + + $cache_data = e107::getRender()->tablerender($NEWSLISTTITLE, $text, 'news', true); + + $this->setNewsCache($this->cacheString, $cache_data); + + + return $cache_data; + + + + + } + + + private function renderViewTemplate() + { + if($newsCachedPage = checkCache($this->cacheString)) + { + $rows = getNewsCache($this->cacheString,'rows'); + e107::getEvent()->trigger('user_news_item_viewed', $rows); + + return $this->renderCache($newsCachedPage, TRUE); // This exits if cache used + } + + $sql = e107::getDb(); + // <-- Cache + + if(isset($this->pref['trackbackEnabled']) && $this->pref['trackbackEnabled']) + { + $query = " + SELECT COUNT(tb.trackback_pid) AS tb_count, n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, + nc.category_icon, nc.category_meta_keywords, nc.category_meta_description + 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($this->subAction)." AND n.news_class REGEXP '".e_CLASS_REGEXP."' + AND NOT (n.news_class REGEXP ".$this->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_id, nc.category_name, nc.category_sef, nc.category_icon, nc.category_meta_keywords, + nc.category_meta_description + 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 ".$this->nobody_regexp.") + AND n.news_start < ".time()." + AND (n.news_end=0 || n.news_end>".time().") + AND n.news_id=".intval($this->subAction); + } + + + if ($sql->gen($query)) + { + $news = $sql->fetch(); + $id = $news['news_category']; // Use category of this news item to generate next/prev links + + e107::getEvent()->trigger('user_news_item_viewed', $news); + + //***NEW [SecretR] - comments handled inside now + e107::setRegistry('news/page_allow_comments', !$news['news_allow_comments']); + if(!$news['news_allow_comments'] && isset($_POST['commentsubmit'])) + { + $pid = intval(varset($_POST['pid'], 0)); // ID of the specific comment being edited (nested comments - replies) + + $clean_authorname = $_POST['author_name']; + $clean_comment = $_POST['comment']; + $clean_subject = $_POST['subject']; + + e107::getSingleton('comment')->enter_comment($clean_authorname, $clean_comment, 'news', $this->subAction, $pid, $clean_subject); + } + + //More SEO + $this->setNewsFrontMeta($news); + /* + if($news['news_title']) + { + if($this->pref['meta_news_summary'] && $news['news_title']) + { + define("META_DESCRIPTION",SITENAME.": ".$news['news_title']." - ".$news['news_summary']); + } + define("e_PAGETITLE",$news['news_title']); + }*/ + /* FIXME - better implementation: cache, shortcodes, do it inside the model/shortcode class itself. + 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'].="

"; + }*/ + + $currentNewsAction = $this->action; + + $action = $currentNewsAction; + + $param = array(); + $param['current_action'] = $action; + $param['template_key'] = 'view'; + + if(vartrue($NEWSSTYLE)) + { + $template = $NEWSSTYLE; + } + elseif(function_exists("news_style")) // BC + { + $template = news_style($news, 'extend', $param); + } + else + { + $tmp = e107::getTemplate('news', 'news', 'view'); + $template = $tmp['item']; + unset($tmp); + } + ob_start(); + $this->ix->render_newsitem($news, 'extend', '', $template, $param); + if(e107::getRegistry('news/page_allow_comments')) + { + global $comment_edit_query; //FIXME - kill me + $comment_edit_query = 'comment.news.'.$news['news_id']; + e107::getSingleton('comment')->compose_comment('news', 'comment', $news['news_id'], null, $news['news_title'], FALSE); + } + $cache_data = ob_get_contents(); + ob_end_clean(); + + $this->setNewsCache($this->cacheString, $cache_data, $news); + + return $cache_data; + } + else + { + // $action = 'default'; + + //XXX item not found, redirect to avoid messing up search-engine data. + $defaultUrl = e107::getUrl()->create('news/list/items'); + e107::getRedirect()->go($defaultUrl, null, 301); + exit; + + } + + + } + + + private function renderDefaultTemplate() + { + $tp = e107::getParser(); + $sql = e107::getDb(); + + if (empty($this->order)) + { + $order = 'news_datestamp'; + } + $order = $tp -> toDB($this->order, true); /// @todo - try not to use toDB() - triggers prefilter + + $interval = $this->pref['newsposts']; + + + + switch ($this->action) + { + case "list" : + $sub_action = intval($this->subAction); + // $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_id, nc.category_name, nc.category_sef, + nc.category_icon, nc.category_meta_keywords, nc.category_meta_description + 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 ".$this->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($this->from).",".ITEMVIEW; + + $noNewsMessage = LAN_NEWS_463; + break; + + + case "item" : + $sub_action = intval($this->subAction); + $news_total = 1; + if(isset($this->pref['trackbackEnabled']) && $this->pref['trackbackEnabled']) + { + $query = " + SELECT COUNT(tb.trackback_pid) AS tb_count, n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, + nc.category_icon, nc.category_meta_keywords, nc.category_meta_description + 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=".$this->subAction." AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$this->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_id, nc.category_name, nc.category_sef, nc.category_icon, + nc.category_meta_keywords, nc.category_meta_description + 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=".$this->subAction." AND n.news_class REGEXP '".e_CLASS_REGEXP."' AND NOT (n.news_class REGEXP ".$this->nobody_regexp.") + AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().")"; + } + + $noNewsMessage = LAN_NEWS_83; + break; + + + case "month" : + case "day" : + $item = $tp -> toDB($this->subAction).'20000101'; + $year = substr($item, 0, 4); + $month = substr($item, 4,2); + + + + if ($this->action == 'day') + { + $day = substr($item, 6, 2); + $lastday = $day; + $startdate = mktime(0, 0, 0, $month, $day, $year); + } + else + { // A month's worth + $day = 1; + $startdate = mktime(0, 0, 0, $month, $day, $year); + $lastday = date("t", $startdate); + } + + + $enddate = mktime(23, 59, 59, $month, $lastday, $year); + + $query = " + SELECT SQL_CALC_FOUND_ROWS n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, + nc.category_icon, nc.category_meta_keywords, nc.category_meta_description + 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 ".$this->nobody_regexp.") + AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") + AND (FIND_IN_SET('0', n.news_render_type) OR FIND_IN_SET(1, n.news_render_type)) AND n.news_datestamp BETWEEN {$startdate} AND {$enddate} + ORDER BY ".$order." DESC LIMIT ".intval($this->from).",".ITEMVIEW; + + $noNewsMessage = LAN_NEWS_462; + + break; + + case 'default' : + default : + //$action = ''; + $this->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($this->pref['newsposts_archive'])) + { + $this->pref['newsposts_archive'] = 0; + } + $interval = $this->pref['newsposts']-$this->pref['newsposts_archive']; // Number of 'full' posts to show + + // Get number of news item to show + if(isset($this->pref['trackbackEnabled']) && $this->pref['trackbackEnabled']) { + $query = " + SELECT SQL_CALC_FOUND_ROWS COUNT(tb.trackback_pid) AS tb_count, n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, + nc.category_name, nc.category_sef, nc.category_icon, nc.category_meta_keywords, nc.category_meta_description, + 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 ".$this->nobody_regexp.") + AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") + AND (FIND_IN_SET('0', n.news_render_type) OR FIND_IN_SET(1, n.news_render_type)) + GROUP by n.news_id + ORDER BY news_sticky DESC, ".$order." DESC LIMIT ".intval($this->from).",".ITEMVIEW; + } + else + { + $query = " + SELECT SQL_CALC_FOUND_ROWS n.*, u.user_id, u.user_name, u.user_customtitle, nc.category_id, nc.category_name, nc.category_sef, nc.category_icon, + nc.category_meta_keywords, nc.category_meta_description + 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 ".$this->nobody_regexp.") + AND n.news_start < ".time()." AND (n.news_end=0 || n.news_end>".time().") + AND (FIND_IN_SET('0', n.news_render_type) OR FIND_IN_SET(1, n.news_render_type)) + ORDER BY n.news_sticky DESC, ".$order." DESC LIMIT ".intval($this->from).",".ITEMVIEW; + } + + $noNewsMessage = LAN_NEWS_83; + } // END - switch($action) + + + if($newsCachedPage = checkCache($this->cacheString)) // normal news front-page - with cache. + { + + + if(!$this->action) + { + // Removed, themes should use {FEATUREBOX} shortcode instead + // if (isset($this->pref['fb_active'])) + // { + // require_once(e_PLUGIN."featurebox/featurebox.php"); + // } + // Removed, legacy + // if (isset($this->pref['nfp_display']) && $this->pref['nfp_display'] == 1) + // { + // require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); + // } + + } + + //news archive + if ($this->action != "item" && $this->action != 'list' && $this->pref['newsposts_archive']) + { + $sql = e107::getDb(); + + if ($sql->gen($query)) + { + $newsAr = $sql -> db_getList(); + + if($newsarchive = $this->checkCache('newsarchive')) + { + $newsCachedPage = $newsCachedPage.$newsarchive; + } + else + { + $this->show_newsarchive($newsAr,$interval); + } + } + } + $this->renderCache($newsCachedPage, TRUE); + } + + + if (!($news_total = $sql->gen($query))) + { // No news items + + return "
".$noNewsMessage."
"; + + } + + $newsAr = $sql -> db_getList(); + $news_total=$sql->total_results; + // Get number of entries + //$sql -> db_Select_gen("SELECT FOUND_ROWS()"); + // $frows = $sql -> db_Fetch(); + //$news_total = $frows[0]; + + //echo "
Total ".$news_total." items found, ".count($newsAr)." displayed, Interval = {$interval}

"; + + $p_title = ($this->action == "item") ? $newsAr[1]['news_title'] : $tp->toHTML($newsAr[1]['category_name'],FALSE,'TITLE'); + + switch($this->action) + { + case 'item': + $this->setNewsFrontMeta($newsAr[1]); + break; + + case 'list': + default: + $this->setNewsFrontMeta($newsAr[1], 'list'); + break; + } + + /*if($action != "" && !is_numeric($action)) + { + if($action == "item" && $this->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); + }*/ + + $currentNewsAction = $this->action; + + $action = $currentNewsAction; + + if(!$action) + { + // Removed, themes should use {FEATUREBOX} shortcode instead + // if (isset($this->pref['fb_active'])){ // --->feature box + // require_once(e_PLUGIN."featurebox/featurebox.php"); + // } + + // Removed, legacy + // if (isset($this->pref['nfp_display']) && $this->pref['nfp_display'] == 1){ + // require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); + // } + } + + if(isset($this->pref['news_unstemplate']) && $this->pref['news_unstemplate'] && file_exists(THEME."news_template.php")) + { + // theme specific template required ... + + $ALTERNATECLASSES = null; + $NEWSCLAYOUT = null; + + require_once(THEME."news_template.php"); + + if(empty($ALTERNATECLASS1)) + { + return TRUE; + } + + $newscolumns = (isset($NEWSCOLUMNS) ? $NEWSCOLUMNS : 1); + $newspercolumn = (isset($NEWSITEMSPERCOLUMN) ? $NEWSITEMSPERCOLUMN : 10); + $newsdata = array(); + $loop = 1; + $param = array(); + $param['current_action'] = $action; + foreach($newsAr as $news) { + + if(is_array($ALTERNATECLASSES)) + { + $newsdata[$loop] .= "
".$this->ix->render_newsitem($news, "return", '', '', $param)."
"; + $ALTERNATECLASSES = array_reverse($ALTERNATECLASSES); + } + else + { + $newsdata[$loop] .= $this->ix->render_newsitem($news, 'return', '', '', $param); + } + $loop ++; + if($loop > $newscolumns) { + $loop = 1; + } + } + $loop = 1; + foreach($newsdata as $data) { + $var = "ITEMS{$loop}"; + $$var = $data; + $loop ++; + } + $text = preg_replace("/\{(.*?)\}/e", '$\1', $NEWSCLAYOUT); + + + // Deprecated + // $parms = $news_total.",".ITEMVIEW.",".$newsfrom.",".$e107->url->getUrl('core:news', 'main', "action=nextprev&to_action=".($action ? $action : 'default' )."&subaction=".($sub_action ? $sub_action : "0")); + + $sub_action = intval($sub_action); + // $parms = $news_total.",".ITEMVIEW.",".$newsfrom.",".e_SELF.'?'.($action ? $action : 'default' ).($sub_action ? ".".$sub_action : ".0").".[FROM]"; + + $amount = ITEMVIEW; + $nitems = defined('NEWS_NEXTPREV_NAVCOUNT') ? '&navcount='.NEWS_NEXTPREV_NAVCOUNT : '' ; + $url = rawurlencode(e107::getUrl()->create($this->route, $this->newsUrlparms)); + $parms = 'tmpl_prefix='.deftrue('NEWS_NEXTPREV_TMPL', 'default').'&total='.$news_total.'&amount='.$amount.'¤t='.$this->from.$nitems.'&url='.$url; + + $text .= $tp->parseTemplate("{NEXTPREV={$parms}}"); + + // $nextprev = $tp->parseTemplate("{NEXTPREV={$parms}}"); + // $text .= ($nextprev ? "
".$nextprev."
" : ""); + // $text=''.$text.'
'.$nextprev.'
'; + + echo $text; + $this->setNewsCache($this->cacheString, $text); + } + else + { + ob_start(); + + $newpostday = 0; + $thispostday = 0; + $this->pref['newsHeaderDate'] = 1; + $gen = new convert(); + /* + if(vartrue($NEWSLISTSTYLE)) $template = $NEWSLISTSTYLE; v1.x doesn't do this.. so no point doing it here. + else + { + $tmp = e107::getTemplate('news', 'news', 'list'); + $template = $tmp['item']; + unset($tmp); + } + */ + 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) --------- + $param = array(); + $param['current_action'] = $action; + $param['template_key'] = 'default'; + + // Get Correct Template + // XXX we use $NEWSLISTSTYLE above - correct as we are currently in list mode - XXX No this is not NEWSLISTSTYLE - which provides only summaries. + // TODO requires BC testing if we comment this one + if(vartrue($NEWSSTYLE)) + { + $template = $NEWSSTYLE; + } + else + { + $tmp = e107::getTemplate('news', 'news', 'default'); // default - we show the full items, except for the 'extended' part.. + $template = $tmp['item']; + unset($tmp); + } + + + + // NEW - news category title when in list + if($sub_action && 'list' == $action && vartrue($newsAr[1]['category_name'])) + { + // we know category name - pass it to the nexprev url + $category_name = $newsAr[1]['category_name']; + if(vartrue($newsAr[1]['category_sef'])) $newsUrlparms['name'] = $newsAr[1]['category_sef']; + if(!isset($NEWSLISTCATTITLE)) + { + $NEWSLISTCATTITLE = "

".$tp->toHTML($category_name,FALSE,'TITLE')."

"; + } + else + { + $NEWSLISTCATTITLE = str_replace("{NEWSCATEGORY}",$tp->toHTML($category_name,FALSE,'TITLE'),$NEWSLISTCATTITLE); + } + echo $NEWSLISTCATTITLE; + } + + $i= 1; + + $socialInstalled = e107::isInstalled('social'); + + while(isset($newsAr[$i]) && $i <= $interval) + { + $news = $newsAr[$i]; + + // Set the Values for the social shortcode usage. + if($socialInstalled == true) + { + $socialArray = array('url'=>e107::getUrl()->create('news/view/item', $news, 'full=1'), 'title'=>$tp->toText($news['news_title']), 'tags'=>$news['news_meta_keywords']); + $socialObj = e107::getScBatch('social'); + + if(is_object($socialObj)) + { + $socialObj->setVars($socialArray); + } + } + + if(function_exists("news_style")) // BC + { + $template = news_style($news, $action, $param); + } + + + // render new date header if pref selected ... + $thispostday = strftime("%j", $news['news_datestamp']); + if ($newpostday != $thispostday && (isset($this->pref['news_newdateheader']) && $this->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']); + e107::getEvent()->trigger('user_news_item_viewed', $news); + //e107::getDebug()->log($news); + } + // $template = false; + $this->ix->render_newsitem($news, 'default', '', $template, $param); + + + $i++; + } + + $amount = ITEMVIEW; + $nitems = defined('NEWS_NEXTPREV_NAVCOUNT') ? '&navcount='.NEWS_NEXTPREV_NAVCOUNT : '' ; + $url = rawurlencode(e107::getUrl()->create($this->route, $this->newsUrlparms)); + // Example of passing route data instead building the URL outside the shortcode - for a reference only + // $url = rawurlencode('url::'.$newsRoute.'::'.http_build_query($newsUrlparms, null, '&')); + $parms = 'tmpl_prefix='.deftrue('NEWS_NEXTPREV_TMPL', 'default').'&total='.$news_total.'&amount='.$amount.'¤t='.$this->from.$nitems.'&url='.$url; + + echo $tp->parseTemplate("{NEXTPREV={$parms}}"); + + // $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(); + + $this->setNewsCache($this->cacheString, $cache_data); + + return $cache_data; + } + + } +} + +$newsObj = new news_front; +require_once(HEADERF); +$newsObj->render(); +$newsObj->debug(); +require_once(FOOTERF); +exit; + + + + +//require_once(e_HANDLER."comment_class.php"); +//$cobj = new comment; + + + +//------------------------------------------------------ +// DISPLAY NEWS IN 'CATEGORY' LIST FORMAT HERE +//------------------------------------------------------ +// Just title and a few other details + + + + + +//------------------------------------------------------ +// DISPLAY SINGLE ITEM IN EXTENDED FORMAT HERE +//------------------------------------------------------ + + + +//------------------------------------------------------ +// DISPLAY NEWS IN LIST FORMAT HERE +//------------------------------------------------------ +// Show title, author, first part of news item... + + +// ##### -------------------------------------------------------------------------------------------------------------- + + +// #### new: news archive --------------------------------------------------------------------------------------------- + +// #### 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); + $crem = $file -> get_files(e_BASE."remotefile", '~Readme\.txt'); + if(count($crem)) { + foreach($crem as $loadrem) { + if(strstr($loadrem['fname'], "load_")) { + require_once(e_BASE."remotefile/".$loadrem['fname']); + } + } + } +} + +if (isset($this->pref['nfp_display']) && $this->pref['nfp_display'] == 2 && is_readable(e_PLUGIN."newforumposts_main/newforumposts_main.php")) +{ + require_once(e_PLUGIN."newforumposts_main/newforumposts_main.php"); +} + +render_newscats(); + +require_once(FOOTERF); + + +// ========================================================================= + + +?> diff --git a/news.php b/news.php index 9f507ae82..e0d0ce63c 100644 --- a/news.php +++ b/news.php @@ -20,6 +20,13 @@ */ require_once("class2.php"); + +if(e_DEBUG === 'news') +{ + require_once(e_PLUGIN."news/news.php"); +// exit; +} + include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/lan_'.e_PAGE); require_once(e_HANDLER."news_class.php"); @@ -185,7 +192,7 @@ if(!empty($_GET['author']) || substr($action,0,4) == 'author=') } -if(E107_DBG_PATH) +if(e_DEBUG === 'news') { echo "
"; echo "

SEF Debug Info

";