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 "
(.*?)<\/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'].="";
+ $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'].="";
+ }
+ $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'].="";
+ }
+ $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 "";
+
+ }
+
+ $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 "";
+ }
+ $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
";