diff --git a/e107_files/shortcode/batch/news_shortcodes.php b/e107_files/shortcode/batch/news_shortcodes.php
index 9af3f13c7..438b01b22 100644
--- a/e107_files/shortcode/batch/news_shortcodes.php
+++ b/e107_files/shortcode/batch/news_shortcodes.php
@@ -1,304 +1,352 @@
e_sc -> parse_scbatch(__FILE__);
-/*
-SC_BEGIN NEWSTITLE
-global $tp;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return $tp -> toHTML($news_item['news_title'], TRUE, 'TITLE');
-SC_END
-SC_BEGIN NEWSBODY
-global $tp;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$news_body = $tp -> toHTML($news_item['news_body'], TRUE, 'BODY, fromadmin', $news_item['news_author']);
-if($news_item['news_extended'] && (isset($_POST['preview']) || strpos(e_QUERY, 'extend') !== FALSE) && $parm != "noextend") {
- $news_extended = $tp -> toHTML($news_item['news_extended'], TRUE, 'BODY, fromadmin', $news_item['news_author']);
- $news_body .= "
".$news_extended;
-}
-return $news_body;
-SC_END
+$codes = array(
+'newstitle', 'newsbody', 'newsicon','newsauthor', 'newscomments',
+'trackback', 'newsheader', 'newscategory', 'newsdate', 'newscommentlink',
+'newscommentcount', 'emailicon', 'printicon', 'pdficon', 'newsid', 'adminoptions',
+'extended', 'captionclass', 'admincaption', 'adminbody', 'newssummary',
+'newsthumbnail', 'newsimage', 'sticky_icon', 'newstitlelink', 'newscaticon', 'newsinfo'
+);
+register_shortcode('news_shortcodes', $codes);
-SC_BEGIN NEWSICON
-global $e107, $tp, $news_shortcodes;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$category_icon = $tp -> parseTemplate('{NEWSHEADER}', FALSE, $news_shortcodes);
-if (!$category_icon) return '';
-
-return "
";
-SC_END
-
-SC_BEGIN NEWSHEADER
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$category_icon = str_replace("../", "", trim($news_item['category_icon']));
-if (!$category_icon) return '';
-if ($category_icon && strstr("images", $category_icon)) {
- return THEME_ABS.$category_icon;
-} else {
- return e_IMAGE_ABS."icons/".$category_icon;
-}
-SC_END
-
-SC_BEGIN NEWSCATEGORY
-global $tp, $e107;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$category_name = $tp -> toHTML($news_item['category_name'],FALSE,"defs");
-return "".$category_name."";
-SC_END
-
-SC_BEGIN NEWSAUTHOR
-global $e107;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-if($news_item['user_id'])
+class news_shortcodes
{
- if($parm == 'nolink')
+ var $news_item, $param, $e107;
+
+ function news_shortcodes()
{
- return $news_item['user_name'];
+ $this->e107 = e107::getInstance();
}
- else
+
+ function load_news_item()
{
- return "".$news_item['user_name']."{$parm}";
+ global $newsItemBegin;
+ if($newsItemBegin == true)
+ {
+ $this->news_item = getcachedvars('current_news_item');
+ $this->param = getcachedvars('current_news_param');
+ $newsItemBegin = false;
+ }
}
-}
-return "e107";
-SC_END
-SC_BEGIN NEWSDATE
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$con = new convert;
-if($parm == "")
-{
- return $con -> convert_date($news_item['news_datestamp'], 'long');
-}
-switch($parm)
-{
- case 'long':
- return $con -> convert_date($news_item['news_datestamp'], 'long');
- break;
- case 'short':
- return $con -> convert_date($news_item['news_datestamp'], 'short');
- break;
- case 'forum':
- return $con -> convert_date($news_item['news_datestamp'], 'forum');
- break;
- default :
- return date($parm, $news_item['news_datestamp']);
- break;
-}
-SC_END
-
-SC_BEGIN NEWSCOMMENTS
-global $pref, $sql;
-if($pref['comments_disabled'] == 1)
-{
- return;
-}
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-
-if (varsettrue($pref['multilanguage']))
-{ // Can have multilanguage news table, monlingual comment table. If the comment table is multilingual, it'll only count entries in the current language
- $news_item['news_comment_total'] = $sql->db_Select("comments", "*", "comment_item_id='".$news_item['news_id']."' AND comment_type='0' ");
-}
-
-if ($pref['comments_icon'] && $news_item['news_comment_total'])
-{
- $sql->db_Select('comments', 'comment_datestamp', "comment_item_id='".intval($news_item['news_id'])."' AND comment_type='0' ORDER BY comment_datestamp DESC LIMIT 0,1");
- list($comments['comment_datestamp']) = $sql->db_Fetch();
- $latest_comment = $comments['comment_datestamp'];
- if ($latest_comment > USERLV )
+ function get_newstitle()
{
- $NEWIMAGE = $param['image_new_small'];
+ $this->load_news_item();
+ return $this->e107->tp->toHTML($this->news_item['news_title'], TRUE, 'TITLE');
}
- else
+
+ function get_newsbody($parm)
{
- $NEWIMAGE = $param['image_nonew_small'];
+ $this->load_news_item();
+ $news_body = $this->e107->tp->toHTML($this->news_item['news_body'], true, 'BODY, fromadmin', $this->news_item['news_author']);
+ if($this->news_item['news_extended'] && (isset($_POST['preview']) || strpos(e_QUERY, 'extend') !== FALSE) && $parm != 'noextend')
+ {
+ $news_extended = $this->e107->tp->toHTML($this->news_item['news_extended'], true, 'BODY, fromadmin', $this->news_item['news_author']);
+ $news_body .= '
'.$news_extended;
+ }
+ return $news_body;
}
-}
-else
-{
- $NEWIMAGE = $param['image_nonew_small'];
-}
-return ($news_item['news_allow_comments'] ? $param['commentoffstring'] : ''.($pref['comments_icon'] ? $NEWIMAGE : '')." ".$param['commentlink'].$news_item['news_comment_total'].'');
-SC_END
-SC_BEGIN NEWSCOMMENTLINK
-global $pref, $sql;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return ($news_item['news_allow_comments'] ? $param['commentoffstring'] : " ".$param['commentlink']."");
-SC_END
+ function get_newsicon($parm)
+ {
+ $this->load_news_item();
+ $category_icon = str_replace('../', '', trim($this->news_item['category_icon']));
+ if ($category_icon && strstr('images', $category_icon))
+ {
+ $category_icon = THEME_ABS.$category_icon;
+ }
+ else
+ {
+ $category_icon = e_IMAGE_ABS.'icons/'.$category_icon;
+ }
+ if (!$category_icon) { return ''; }
-SC_BEGIN NEWSCOMMENTCOUNT
-global $pref, $sql;
-$news_item = getcachedvars('current_news_item');
-return $news_item['news_comment_total'];
-SC_END
-
-
-SC_BEGIN EMAILICON
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-require_once(e_HANDLER.'emailprint_class.php');
-return emailprint::render_emailprint('news', $news_item['news_id'], 1);
-SC_END
-
-SC_BEGIN PRINTICON
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-require_once(e_HANDLER.'emailprint_class.php');
-return emailprint::render_emailprint('news', $news_item['news_id'], 2);
-SC_END
-
-SC_BEGIN PDFICON
-global $tp, $pref;
-if (!$pref['plug_installed']['pdf']) return '';
-$news_item = getcachedvars('current_news_item');
-return $tp -> parseTemplate("{PDF=".LAN_NEWS_24."^news.".$news_item['news_id']."}");
-SC_END
-
-SC_BEGIN NEWSID
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return $news_item['news_id'];
-SC_END
-
-SC_BEGIN ADMINOPTIONS
-global $imode;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-if (ADMIN && getperms("H")) {
- $adop_icon = (file_exists(THEME."images/newsedit.png") ? THEME_ABS."images/newsedit.png" : e_IMAGE_ABS."packs/".$imode."/generic/newsedit.png");
- return "
\n";
-} else {
- return '';
-}
-SC_END
-
-SC_BEGIN EXTENDED
-global $e107;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-if ($news_item['news_extended'] && (strpos(e_QUERY, 'extend') === FALSE || $parm == "force")) {
- if (defined("PRE_EXTENDEDSTRING")) {
- $es1 = PRE_EXTENDEDSTRING;
+ return "news_item['news_category'])."'>
";
}
- if (defined("POST_EXTENDEDSTRING")) {
- $es2 = POST_EXTENDEDSTRING;
+
+ function get_newsauthor($parm)
+ {
+ $this->load_news_item();
+ if($this->news_item['user_id'])
+ {
+ if($parm == 'nolink')
+ {
+ return $this->news_item['user_name'];
+ }
+ else
+ {
+ return "news_item['user_id'])."'>".$this->news_item['user_name']."{$parm}";
+ }
+ }
+ return "e107";
}
- if (isset($_POST['preview'])) {
- return $es1.EXTENDEDSTRING.$es2."
".$news_item['news_extended'];
- } else {
- return $es1."".EXTENDEDSTRING."".$es2;
+
+ function get_newscomments($parm)
+ {
+ $this->load_news_item();
+ global $pref, $sql;
+ if($pref['comments_disabled'] == 1)
+ {
+ return;
+ }
+ $news_item = $this->news_item;
+ $param = $this->param;
+
+ if (varsettrue($pref['multilanguage']))
+ { // Can have multilanguage news table, monlingual comment table. If the comment table is multilingual, it'll only count entries in the current language
+ $news_item['news_comment_total'] = $sql->db_Select("comments", "*", "comment_item_id='".$news_item['news_id']."' AND comment_type='0' ");
+ }
+
+ if ($pref['comments_icon'] && $news_item['news_comment_total'])
+ {
+ $sql->db_Select('comments', 'comment_datestamp', "comment_item_id='".intval($news_item['news_id'])."' AND comment_type='0' ORDER BY comment_datestamp DESC LIMIT 0,1");
+ list($comments['comment_datestamp']) = $sql->db_Fetch();
+ $latest_comment = $comments['comment_datestamp'];
+ if ($latest_comment > USERLV )
+ {
+ $NEWIMAGE = $param['image_new_small'];
+ }
+ else
+ {
+ $NEWIMAGE = $param['image_nonew_small'];
+ }
+ }
+ else
+ {
+ $NEWIMAGE = $param['image_nonew_small'];
+ }
+ return ($news_item['news_allow_comments'] ? $param['commentoffstring'] : ''.($pref['comments_icon'] ? $NEWIMAGE : '')." ".$param['commentlink'].$news_item['news_comment_total'].'');
}
-} else {
- return "";
+
+ function get_trackback($parm)
+ {
+ global $pref;
+ $this->load_news_item();
+ if(!varsettrue($pref['trackbackEnabled'])) { return ''; }
+ return ($this->param['trackbackbeforestring'] ? $this->param['trackbackbeforestring'] : '')."".$this->param['trackbackstring'].$this->news_item['tb_count'].''.($this->param['trackbackafterstring'] ? $this->param['trackbackafterstring'] : '');
+ }
+
+ function get_newsheader($parm)
+ {
+ $this->load_news_item();
+ $category_icon = str_replace("../", "", trim($this->news_item['category_icon']));
+ if (!$category_icon) return '';
+ if ($category_icon && strstr("images", $category_icon)) {
+ return THEME_ABS.$category_icon;
+ } else {
+ return e_IMAGE_ABS."icons/".$category_icon;
+ }
+ }
+
+
+ function get_newscategory($parm)
+ {
+ $this->load_news_item();
+ $category_name = $this->e107->tp->toHTML($this->news_item['category_name'], FALSE ,'defs');
+ return "param['catlink'] : "#")."' href='".$e107->url->getUrl('core:news', 'main', 'action=cat&value='.$this->news_item['news_category'])."'>".$category_name."";
+ }
+
+ function get_newsdate($parm)
+ {
+ $this->load_news_item();
+ $con = new convert;
+ if($parm == '')
+ {
+ return $con->convert_date($this->news_item['news_datestamp'], 'long');
+ }
+ switch($parm)
+ {
+ case 'long':
+ return $con->convert_date($this->news_item['news_datestamp'], 'long');
+ break;
+ case 'short':
+ return $con->convert_date($this->news_item['news_datestamp'], 'short');
+ break;
+ case 'forum':
+ return $con->convert_date($this->news_item['news_datestamp'], 'forum');
+ break;
+ default :
+ return date($parm, $this->news_item['news_datestamp']);
+ break;
+ }
+ }
+
+ function get_newscommentlink($parm)
+ {
+ $this->load_news_item();
+ return ($this->news_item['news_allow_comments'] ? $this->param['commentoffstring'] : " ".$this->param['commentlink'].'');
+ }
+
+ function get_newscommentcount($parm)
+ {
+ $this->load_news_item();
+ return $this->news_item['news_comment_total'];
+ }
+
+ function get_emailicon($parm)
+ {
+ $this->load_news_item();
+ require_once(e_HANDLER.'emailprint_class.php');
+ return emailprint::render_emailprint('news', $this->news_item['news_id'], 1);
+ }
+
+ function get_printicon()
+ {
+ $this->load_news_item();
+ require_once(e_HANDLER.'emailprint_class.php');
+ return emailprint::render_emailprint('news', $this->news_item['news_id'], 2);
+ }
+
+ function get_pdficon()
+ {
+ global $pref;
+ $this->load_news_item();
+ if (!$pref['plug_installed']['pdf']) { return ''; }
+ return $this->e107->tp->parseTemplate('{PDF='.LAN_NEWS_24.'^news.'.$this->news_item['news_id'].'}');
+ }
+
+ function get_newsid()
+ {
+ $this->load_news_item();
+ return $this->news_item['news_id'];
+ }
+
+ function get_adminoptions()
+ {
+ global $imode;
+ $this->load_news_item();
+ if (ADMIN && getperms('H'))
+ {
+ $adop_icon = (file_exists(THEME."images/newsedit.png") ? THEME_ABS."images/newsedit.png" : e_IMAGE_ABS."packs/".$imode."/generic/newsedit.png");
+ return "
\n";
+ }
+ else
+ {
+ return '';
+ }
+ }
+
+ function get_extended($parm)
+ {
+ $this->load_news_item();
+ if ($this->news_item['news_extended'] && (strpos(e_QUERY, 'extend') === FALSE || $parm == 'force'))
+ {
+ if (defined('PRE_EXTENDEDSTRING'))
+ {
+ $es1 = PRE_EXTENDEDSTRING;
+ }
+ if (defined('POST_EXTENDEDSTRING'))
+ {
+ $es2 = POST_EXTENDEDSTRING;
+ }
+ if (isset($_POST['preview']))
+ {
+ return $es1.EXTENDEDSTRING.$es2."
".$this->news_item['news_extended'];
+ }
+ else
+ {
+ return $es1."news_item['news_id'])."'>".EXTENDEDSTRING."".$es2;
+ }
+ }
+ return '';
+ }
+
+ function get_captionclass()
+ {
+ $this->load_news_item();
+ $news_title = $this->e107->tp->toHTML($this->news_item['news_title'], TRUE,'no_hook,emotes_off, no_make_clickable');
+ return "
".($this->news_item['news_render_type'] == 1 ? "
".$news_title."" : $news_title)."
";
+ }
+
+ function get_admincaption()
+ {
+ $this->load_news_item();
+ $news_title = $this->e107->tp->toHTML($this->news_item['news_title'], TRUE,'no_hook,emotes_off, no_make_clickable');
+ return "".($this->news_item['news_render_type'] == 1 ? "
".$news_title."" : $news_title)."
";
+ }
+
+ function get_adminbody()
+ {
+ global $tp, $news_shortcodes;
+ $news_item = getcachedvars('current_news_item');
+ $param = getcachedvars('current_news_param');
+ $news_body = $tp->parseTemplate('{NEWSBODY}', FALSE, $news_shortcodes);
+ return "".$news_body.'
';
+ }
+
+ function get_newssummary()
+ {
+ $this->load_news_item();
+ return ($this->news_item['news_summary']) ? $this->news_item['news_summary'].'
' : '';
+ }
+
+ function get_newsthumbnail()
+ {
+ $this->load_news_item();
+ return (isset($this->news_item['news_thumbnail']) && $this->news_item['news_thumbnail']) ? "news_item['news_id']}&value2={$this->news_item['news_category']}")."'>
" : '';
+ }
+
+ function get_newsimage()
+ {
+ $this->load_news_item();
+ return (isset($this->news_item['news_thumbnail']) && $this->news_item['news_thumbnail']) ? "news_item['news_id']}&value2={$this->news_item['news_category']}")."'>
" : '';
+ }
+
+ function get_sticky_icon()
+ {
+ $this->load_news_item();
+ return $this->news_item['news_sticky'] ? $this->param['image_sticky'] : '';
+ }
+
+ function get_newstitlelink()
+ {
+ $this->load_news_item();
+ return "param['itemlink'] : 'null')."' href='".$this->e107->url->getUrl('core:news', 'main', "action=item&value1={$this->news_item['news_id']}&value2={$this->news_item['news_category']}")."'>".$this->news_item['news_title'].'';
+ }
+
+ function get_newscaticon()
+ {
+ $this->load_news_item();
+ $category_icon = str_replace('../', '', trim($this->news_item['category_icon']));
+ if (!$category_icon) { return ''; }
+ if ($category_icon && strstr('images', $category_icon))
+ {
+ $category_icon = THEME_ABS.$category_icon;
+ }
+ else
+ {
+ $category_icon = e_IMAGE_ABS.'icons/'.$category_icon;
+ }
+
+ if($this->param['caticon'] == ''){$this->param['caticon'] = 'border:0px';}
+ return "news_item['news_category']}")."'>
";
+ }
+
+ function get_newsinfo()
+ {
+ $this->load_news_item();
+ $news_item = $this->news_item;
+ $param = $this->param;
+ $con = new convert;
+ $news_item['news_start'] = (isset($news_item['news_start']) && $news_item['news_start'] ? str_replace(' - 00:00:00', '', $con->convert_date($news_item['news_start'], 'long')) : LAN_NEWS_19);
+ $news_item['news_end'] = (isset($news_item['news_end']) && $news_item['news_end'] ? ' to '.str_replace(' - 00:00:00', '', $con->convert_date($news_item['news_end'], 'long')) : '');
+ $info = $news_item['news_render_type'] == 1 ? LAN_NEWS_9 : '';
+ $info .= $news_item['news_class'] == 255 ? LAN_NEWS_10 : LAN_NEWS_11;
+ $info .= $news_item['news_sticky'] ? '
'.LAN_NEWS_31 : '';
+ $info .= '
'.($news_item['news_allow_comments'] ? LAN_NEWS_13 : LAN_NEWS_12);
+ $info .= LAN_NEWS_14.$news_item['news_start'].$news_item['news_end'].'
';
+ $info .= LAN_NEWS_15.strlen($news_item['news_body']).LAN_NEWS_16.strlen($news_item['news_extended']).LAN_NEWS_17."
";
+ return $this->e107->ns->tablerender(LAN_NEWS_18, $info);
+ }
+
+
}
-SC_END
-
-SC_BEGIN CAPTIONCLASS
-global $tp;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$news_title = $tp -> toHTML($news_item['news_title'], TRUE,'no_hook,emotes_off, no_make_clickable');
-return "".($news_item['news_render_type'] == 1 ? "
".$news_title."" : $news_title)."
";
-SC_END
-
-SC_BEGIN ADMINCAPTION
-global $tp;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$news_title = $tp -> toHTML($news_item['news_title'], TRUE,'no_hook,emotes_off, no_make_clickable');
-return "".($news_item['news_render_type'] == 1 ? "
".$news_title."" : $news_title)."
";
-SC_END
-
-SC_BEGIN ADMINBODY
-global $tp, $news_shortcodes;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$news_body = $tp -> parseTemplate('{NEWSBODY}', FALSE, $news_shortcodes);
-return "".$news_body."
";
-SC_END
-
-SC_BEGIN NEWSSUMMARY
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return ($news_item['news_summary']) ? $news_item['news_summary']."
" : "";
-SC_END
-
-SC_BEGIN NEWSTHUMBNAIL
-global $e107;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return (isset($news_item['news_thumbnail']) && $news_item['news_thumbnail']) ? "
" : "";
-SC_END
-
-SC_BEGIN NEWSIMAGE
-global $e107;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return (isset($news_item['news_thumbnail']) && $news_item['news_thumbnail']) ? "
" : "";
-SC_END
-
-SC_BEGIN STICKY_ICON
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return $news_item['news_sticky'] ? $param['image_sticky'] : "";
-SC_END
-
-SC_BEGIN NEWSTITLELINK
-global $e107;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return "".$news_item['news_title']."";
-SC_END
-
-SC_BEGIN NEWSCATICON
-global $e107, $news_shortcodes;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$category_icon = $e107->tp->parseTemplate('{NEWSHEADER}', FALSE, $news_shortcodes);
-if (!$category_icon) return '';
-if($param['caticon'] == ""){$param['caticon'] = "border:0px";}
-return "
";
-SC_END
-
-SC_BEGIN TRACKBACK
-global $pref;
-if(!varsettrue($pref['trackbackEnabled'])) return '';
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-return ($param['trackbackbeforestring'] ? $param['trackbackbeforestring'] : "")."".$param['trackbackstring'].$news_item['tb_count']."".($param['trackbackafterstring'] ? $param['trackbackafterstring'] : "");
-SC_END
-
-SC_BEGIN NEWSINFO
-global $ns;
-$news_item = getcachedvars('current_news_item');
-$param = getcachedvars('current_news_param');
-$con = new convert;
-$news_item['news_start'] = (isset($news_item['news_start']) && $news_item['news_start'] ? str_replace(" - 00:00:00", "", $con -> convert_date($news_item['news_start'], "long")) : LAN_NEWS_19);
-$news_item['news_end'] = (isset($news_item['news_end']) && $news_item['news_end'] ? " to ".str_replace(" - 00:00:00", "", $con -> convert_date($news_item['news_end'], "long")) : "");
-$info = $news_item['news_render_type'] == 1 ? LAN_NEWS_9 : "";
-$info .= $news_item['news_class'] == 255 ? LAN_NEWS_10 : LAN_NEWS_11;
-$info .= $news_item['news_sticky'] ? "
".LAN_NEWS_31 : "";
-$info .= "
".($news_item['news_allow_comments'] ? LAN_NEWS_13 : LAN_NEWS_12);
-$info .= LAN_NEWS_14.$news_item['news_start'].$news_item['news_end']."
";
-$info .= LAN_NEWS_15.strlen($news_item['news_body']).LAN_NEWS_16.strlen($news_item['news_extended']).LAN_NEWS_17."
";
-return $ns -> tablerender(LAN_NEWS_18, $info);
-SC_END
-*/
?>
\ No newline at end of file
diff --git a/e107_handlers/news_class.php b/e107_handlers/news_class.php
index 39c637af7..db3c4cf0c 100644
--- a/e107_handlers/news_class.php
+++ b/e107_handlers/news_class.php
@@ -9,16 +9,16 @@
* News handler
*
* $Source: /cvs_backup/e107_0.8/e107_handlers/news_class.php,v $
- * $Revision: 1.8 $
- * $Date: 2008-12-29 20:50:41 $
- * $Author: lisa_ $
+ * $Revision: 1.9 $
+ * $Date: 2009-01-07 19:57:09 $
+ * $Author: mcfly_e107 $
*/
if (!defined('e107_INIT')) { exit; }
class news {
- function submit_item($news)
+ function submit_item($news)
{
global $sql, $tp, $e107cache, $e_event, $pref, $admin_log;
if (!is_object($tp)) $tp = new e_parse;
@@ -33,26 +33,26 @@ class news {
$author_insert = ($news['news_author'] == 0) ? "news_author = '".USERID."'," : "news_author = '".intval($news['news_author'])."', ";
$news['news_author'] = ($news['news_author']) ? $news['news_author'] : USERID;
- if ($news['news_id'])
+ if ($news['news_id'])
{ // Updating existing item
$vals = "news_datestamp = '".intval($news['news_datestamp'])."', ".$author_insert." news_title='".$news['news_title']."', news_body='".$news['news_body']."', news_extended='".$news['news_extended']."', news_category='".intval($news['cat_id'])."', news_allow_comments='".intval($news['news_allow_comments'])."', news_start='".intval($news['news_start'])."', news_end='".intval($news['news_end'])."', news_class='".$tp->toDB($news['news_class'])."', news_render_type='".intval($news['news_rendertype'])."' , news_summary='".$news['news_summary']."', news_thumbnail='".$tp->toDB($news['news_thumbnail'])."', news_sticky='".intval($news['news_sticky'])."' WHERE news_id='".intval($news['news_id'])."' ";
- if ($sql -> db_Update('news', $vals))
+ if ($sql -> db_Update('news', $vals))
{
$admin_log->logArrayAll('NEWS_09', $news);
$e_event -> trigger('newsupd', $news);
$message = LAN_NEWS_21;
$e107cache -> clear('news.php');
- }
- else
+ }
+ else
{
$message = "".(!mysql_errno() ? LAN_NEWS_46 : LAN_NEWS_5)."";
}
$data = array('method'=>'update', 'table'=>'news', 'id'=>$news['news_id'], 'plugin'=>'news', 'function'=>'submit_item');
$message .= $e_event->triggerHook($data);
- }
- else
+ }
+ else
{ // Adding item
- if ($news['news_id'] = $sql ->db_Insert('news', "0, '".$news['news_title']."', '".$news['news_body']."', '".$news['news_extended']."', ".intval($news['news_datestamp']).", ".intval($news['news_author']).", '".intval($news['cat_id'])."', '".intval($news['news_allow_comments'])."', '".intval($news['news_start'])."', '".intval($news['news_end'])."', '".$tp->toDB($news['news_class'])."', '".intval($news['news_rendertype'])."', '0' , '".$news['news_summary']."', '".$tp->toDB($news['news_thumbnail'])."', '".intval($news['news_sticky'])."' "))
+ if ($news['news_id'] = $sql ->db_Insert('news', "0, '".$news['news_title']."', '".$news['news_body']."', '".$news['news_extended']."', ".intval($news['news_datestamp']).", ".intval($news['news_author']).", '".intval($news['cat_id'])."', '".intval($news['news_allow_comments'])."', '".intval($news['news_start'])."', '".intval($news['news_end'])."', '".$tp->toDB($news['news_class'])."', '".intval($news['news_rendertype'])."', '0' , '".$news['news_summary']."', '".$tp->toDB($news['news_thumbnail'])."', '".intval($news['news_sticky'])."' "))
{
$admin_log->logArrayAll('NEWS_08', $news);
$e_event -> trigger('newspost', $news);
@@ -61,8 +61,8 @@ class news {
$id = mysql_insert_id();
$data = array('method'=>'create', 'table'=>'news', 'id'=>$id, 'plugin'=>'news', 'function'=>'submit_item');
$message .= $e_event->triggerHook($data);
- }
- else
+ }
+ else
{
$message = "".LAN_NEWS_7."";
}
@@ -120,19 +120,19 @@ class news {
return $message;
}
- function render_newsitem($news, $mode = 'default', $n_restrict = '', $NEWS_TEMPLATE = '', $param='')
+ function render_newsitem($news, $mode = 'default', $n_restrict = '', $NEWS_TEMPLATE = '', $param='')
{
- global $e107, $tp, $sql, $override, $pref, $ns, $NEWSSTYLE, $NEWSLISTSTYLE, $news_shortcodes, $loop_uid, $imode;
+ global $e107, $tp, $sql, $override, $pref, $ns, $NEWSSTYLE, $NEWSLISTSTYLE, $news_shortcodes, $loop_uid, $imode, $newsItemBegin;
if ($override_newsitem = $override -> override_check('render_newsitem')) {
$result = call_user_func($override_newsitem, $news, $mode, $n_restrict, $NEWS_TEMPLATE, $param);
- if ($result == 'return')
+ if ($result == 'return')
{
return;
}
}
if (!is_object($e107->tp)) $e107->tp = new e_parse;
- if ($n_restrict == 'userclass')
+ if ($n_restrict == 'userclass')
{
$news['news_id'] = 0;
$news['news_title'] = LAN_NEWS_1;
@@ -212,20 +212,21 @@ class news {
$loop_uid = $news['news_author'];
require_once(e_FILE.'shortcode/batch/news_shortcodes.php');
+ $newsItemBegin = true;
$text = $e107->tp -> parseTemplate($NEWS_PARSE, TRUE, $news_shortcodes);
- if ($mode == 'return')
+ if ($mode == 'return')
{
return $text;
- }
- else
+ }
+ else
{
echo $text;
return TRUE;
}
}
- function make_xml_compatible($original)
+ function make_xml_compatible($original)
{
global $e107;
if (!is_object($e107->tp)) $e107->tp = new e_parse;
diff --git a/e107_handlers/shortcode_handler.php b/e107_handlers/shortcode_handler.php
index 6a13f6b0b..454756479 100644
--- a/e107_handlers/shortcode_handler.php
+++ b/e107_handlers/shortcode_handler.php
@@ -12,20 +12,28 @@
| GNU General Public License (http://gnu.org).
|
| $Source: /cvs_backup/e107_0.8/e107_handlers/shortcode_handler.php,v $
-| $Revision: 1.14 $
-| $Date: 2008-10-30 20:21:55 $
-| $Author: e107steved $
+| $Revision: 1.15 $
+| $Date: 2009-01-07 19:57:09 $
+| $Author: mcfly_e107 $
+----------------------------------------------------------------------------+
*/
if (!defined('e107_INIT')) { exit; }
-function register_shortcode($code, $filename, $function, $force=false)
+function register_shortcode($class, $codes, $path='', $force=false)
{
global $e_shortcodes;
- if(!array_key_exists($code, $e_shortcodes) || $force == true)
+ if(!is_array($codes))
{
- $e_shortcodes[$code] = array('file' => $filename, 'function' => $function);
+ $codes = array($codes);
+ }
+ foreach($codes as $code)
+ {
+ $code = strtoupper($code);
+ if(!array_key_exists($code, $e_shortcodes) || $force == true)
+ {
+ $e_shortcodes[$code] = array('path' => $path, 'class' => $class, 'function' => $function);
+ }
}
}
@@ -35,6 +43,7 @@ class e_shortcode
var $parseSCFiles; // True if individual shortcode files are to be used
var $addedCodes; // Apparently not used
var $registered_codes; // Shortcodes added by plugins
+ var $scClasses; //Batch shortcode classes
function e_shortcode()
{
@@ -132,10 +141,19 @@ class e_shortcode
/* Check for shortcode registered with $e_shortcodes */
if (is_array($e_shortcodes) && (array_key_exists($code, $e_shortcodes)))
{
- include_once($e_shortcodes[$code]['file']);
- if(function_exists($e_shortcodes[$code]['function']))
+ $_class = $e_shortcodes[$code]['class'];
+ $_method = 'get_'.strtolower($code);
+ if(!isset($this->scClasses[$_class]))
{
- $ret = call_user_func($e_shortcodes[$code]['function'], $parm);
+ if(!class_exists($_class) && $e_shortcodes[$code]['path'])
+ {
+ include_once($e_shortcodes[$code]['path'].$_class.'.php');
+ }
+ $this->scClasses[$_class] = new $_class;
+ }
+ if(is_callable(array($_class, $_method)))
+ {
+ $ret = $this->scClasses[$_class]->$_method($parm);
}
}
else
@@ -170,7 +188,7 @@ class e_shortcode
{
$scFile = e_FILE."shortcode/".strtolower($code).".sc";
}
- if (file_exists($scFile))
+ if (file_exists($scFile))
{
$shortcode = file_get_contents($scFile);
$this->scList[$code] = $shortcode;