diff --git a/e107_admin/db.php b/e107_admin/db.php index b4eaa8d13..cde4763fd 100644 --- a/e107_admin/db.php +++ b/e107_admin/db.php @@ -9,9 +9,9 @@ * Administration - Database Utilities * * $Source: /cvs_backup/e107_0.8/e107_admin/db.php,v $ - * $Revision: 1.8 $ - * $Date: 2008-12-30 15:56:12 $ - * $Author: secretr $ + * $Revision: 1.9 $ + * $Date: 2009-01-16 01:02:41 $ + * $Author: mcfly_e107 $ * */ @@ -86,6 +86,11 @@ if(isset($_POST['optimize_sql'])) optimizesql($mySQLdefaultdb); } +if(isset($_POST['sc_override_scan'])) +{ + scan_override(); +} + if(isset($_POST['backup_core'])) { backup_core(); @@ -190,6 +195,15 @@ $text = " + + + ".DBLAN_55." + + ".$frm->radio('db_execute', 'sc_override_scan').$frm->label(DBLAN_56, 'db_execute', 'sc_override_scan')." + + + +
@@ -223,6 +237,30 @@ function optimizesql($mySQLdefaultdb) $emessage->add(DBLAN_11." $mySQLdefaultdb ".DBLAN_12, E_MESSAGE_SUCCESS); } +function scan_override() +{ + global $pref, $emessage; + + require_once(e_HANDLER.'file_class.php'); + $f = new e_file; + + $scList = ''; + $fList = $f->get_files(e_FILE.'shortcode/override', '\.sc$'); + if(count($fList)) + { + $tmp = array(); + foreach($fList as $file) + { + $tmp[] = strtoupper(substr($file['fname'], 0, -3)); + } + $scList = implode(',', $tmp); + unset($tmp); + } + $pref['sc_override'] = $scList; + save_prefs(); + $emessage->add(DBLAN_57.':
'.$pref['sc_override'], E_MESSAGE_SUCCESS); +} + function plugin_viewscan() { $error_messages = array(0 => DBLAN_31, 1 => DBLAN_32, 2 => DBLAN_33, 3 => DBLAN_34); diff --git a/e107_files/shortcode/batch/news_shortcodes.php b/e107_files/shortcode/batch/news_shortcodes.php index 0603c8bab..120f53d6e 100644 --- a/e107_files/shortcode/batch/news_shortcodes.php +++ b/e107_files/shortcode/batch/news_shortcodes.php @@ -1,13 +1,14 @@ e107 = e107::getInstance(); } - function load_news_item() + function loadNewsItem() { - global $newsItemBegin; - if($newsItemBegin == true) - { - $this->news_item = getcachedvars('current_news_item'); - $this->param = getcachedvars('current_news_param'); - $newsItemBegin = false; - } + $e107 = e107::getInstance(); + $e107->tp->e_sc->scClasses['news_shortcodes']->news_item = getcachedvars('current_news_item'); + $e107->tp->e_sc->scClasses['news_shortcodes']->param = getcachedvars('current_news_param'); } function get_newstitle() { - $this->load_news_item(); return $this->e107->tp->toHTML($this->news_item['news_title'], TRUE, 'TITLE'); } function get_newsbody($parm) { - $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') { @@ -57,7 +66,6 @@ class news_shortcodes 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)) { @@ -74,7 +82,6 @@ class news_shortcodes function get_newsauthor($parm) { - $this->load_news_item(); if($this->news_item['user_id']) { if($parm == 'nolink') @@ -91,7 +98,6 @@ class news_shortcodes function get_newscomments($parm) { - $this->load_news_item(); global $pref, $sql; if($pref['comments_disabled'] == 1) { @@ -129,14 +135,12 @@ class news_shortcodes 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)) { @@ -149,14 +153,12 @@ class news_shortcodes 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 == '') { @@ -181,26 +183,22 @@ class news_shortcodes 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); } @@ -208,21 +206,18 @@ class news_shortcodes 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"); @@ -236,7 +231,6 @@ class news_shortcodes 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')) @@ -261,58 +255,49 @@ class news_shortcodes 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($parm) { - $this->load_news_item(); $news_body = $this->get_newsbody($parm); 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)) @@ -330,7 +315,6 @@ class news_shortcodes function get_newsinfo() { - $this->load_news_item(); $news_item = $this->news_item; $param = $this->param; $con = new convert; diff --git a/e107_handlers/news_class.php b/e107_handlers/news_class.php index 659b78efa..3e8e25ae0 100644 --- a/e107_handlers/news_class.php +++ b/e107_handlers/news_class.php @@ -9,9 +9,9 @@ * News handler * * $Source: /cvs_backup/e107_0.8/e107_handlers/news_class.php,v $ - * $Revision: 1.10 $ - * $Date: 2009-01-15 15:42:24 $ - * $Author: secretr $ + * $Revision: 1.11 $ + * $Date: 2009-01-16 01:02:41 $ + * $Author: mcfly_e107 $ */ if (!defined('e107_INIT')) { exit; } @@ -140,7 +140,7 @@ class news { 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, $newsItemBegin; + global $e107, $tp, $sql, $override, $pref, $ns, $NEWSSTYLE, $NEWSLISTSTYLE, $news_shortcodes, $loop_uid, $imode; if ($override_newsitem = $override -> override_check('render_newsitem')) { $result = call_user_func($override_newsitem, $news, $mode, $n_restrict, $NEWS_TEMPLATE, $param); if ($result == 'return') @@ -230,8 +230,9 @@ 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); + $e107->tp->e_sc->scClasses['news_shortcodes']->news_item = $news; + $e107->tp->e_sc->scClasses['news_shortcodes']->param = $param; + $text = $e107->tp->parseTemplate($NEWS_PARSE, true); if ($mode == 'return') { diff --git a/e107_handlers/shortcode_handler.php b/e107_handlers/shortcode_handler.php index ea3e055f4..f102b5a0c 100644 --- a/e107_handlers/shortcode_handler.php +++ b/e107_handlers/shortcode_handler.php @@ -12,9 +12,9 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/e107_handlers/shortcode_handler.php,v $ -| $Revision: 1.22 $ -| $Date: 2009-01-15 22:04:45 $ -| $Author: lisa_ $ +| $Revision: 1.23 $ +| $Date: 2009-01-16 01:02:41 $ +| $Author: mcfly_e107 $ +----------------------------------------------------------------------------+ */ @@ -32,7 +32,7 @@ function register_shortcode($classFunc, $codes, $path='', $force=false) foreach($codes as $code) { $code = strtoupper($code); - if(!$sc->isRegistered($code) || $force == true) + if((!$sc->isRegistered($code) || $force == true) && !$sc->isOverride($code)) { $sc->registered_codes[$code] = array('type' => 'class', 'path' => $path, 'class' => $classFunc); } @@ -41,7 +41,7 @@ function register_shortcode($classFunc, $codes, $path='', $force=false) else { $codes = strtoupper($codes); - if(!$sc->isRegistered($code) || $force == true) + if((!$sc->isRegistered($code) || $force == true) && !$sc->isOverride($code)) { $sc->registered_codes[$codes] = array('type' => 'func', 'path' => $path, 'function' => $classFunc); } @@ -65,6 +65,7 @@ class e_shortcode var $addedCodes; // Apparently not used var $registered_codes = array(); // Shortcodes added by plugins var $scClasses = array(); // Batch shortcode classes + var $scOverride = array(); // Array of codes found in override/ dir function e_shortcode($noload=false) { @@ -72,14 +73,29 @@ class e_shortcode $this->parseSCFiles = true; // Default probably never used, but make sure its defined. + //Register any shortcode from the shortcode/override/ directory + if($pref['sc_override']) + { + $tmp = explode(',', $pref['sc_override']); + foreach($tmp as $code) + { + $code = strtoupper(trim($code)); + $this->registered_codes[$code]['type'] = 'override'; + $this->scOverride[] = $code; + } + } + // Register any shortcodes that were registered by the theme // $register_sc[] = 'MY_THEME_CODE' if(isset($register_sc) && is_array($register_sc)) { foreach($register_sc as $code) { - $code = strtoupper($code); - $this->registered_codes[$code]['type'] = 'theme'; + if(!$this->isRegistered($code)) + { + $code = strtoupper($code); + $this->registered_codes[$code]['type'] = 'theme'; + } } } @@ -123,6 +139,11 @@ class e_shortcode return in_array($code, $this->registered_codes); } + function isOverride($code) + { + return in_array($code, $this->scOverride); + } + function parseCodes($text, $useSCFiles = true, $extraCodes = '') { $saveParseSCFiles = $this->parseSCFiles; // In case of nested call @@ -237,6 +258,10 @@ class e_shortcode $scFile = e_PLUGIN.strtolower($this->registered_codes[$code]['path']).'/'.strtolower($code).'.sc'; break; + case 'override': + $scFile = e_FILE.'shortcode/override/'.strtolower($code).'.sc'; + break; + case 'theme': $scFile = THEME.strtolower($code).'.sc'; break; diff --git a/e107_languages/English/admin/lan_db.php b/e107_languages/English/admin/lan_db.php index 03237c268..3da6d8cbc 100644 --- a/e107_languages/English/admin/lan_db.php +++ b/e107_languages/English/admin/lan_db.php @@ -1,7 +1,7 @@