From b489d7cef33d4fb86d4c479817e84b3ebbfbe0ad Mon Sep 17 00:00:00 2001 From: mcfly Date: Wed, 7 Jan 2009 19:57:09 +0000 Subject: [PATCH] Updated shortcode handler to support class->method use in batch shortcodes. Updated bbcode and news shortcodes to use this new method. Reduced the use of cachevar usage in the new shortcodes. I may have broken overriding of core news shortcodes, need to look into that. --- .../shortcode/batch/news_shortcodes.php | 608 ++++++++++-------- e107_handlers/news_class.php | 43 +- e107_handlers/shortcode_handler.php | 38 +- 3 files changed, 378 insertions(+), 311 deletions(-) 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;