1
0
mirror of https://github.com/e107inc/e107.git synced 2025-07-31 20:00:37 +02:00

Shortcode handler was failing to load classes under some conditions. Also added some debug info. (use e107 debugger for Firefox in SC mode)

This commit is contained in:
CaMer0n
2012-04-23 01:21:06 +00:00
parent 0733253516
commit 62e92a2621
3 changed files with 40 additions and 131 deletions

View File

@@ -1567,7 +1567,7 @@ class e107
/** /**
* Get plugin template. Use this method for plugin templates, which are following the * Get plugin template. Use this method for plugin templates, which are following the
* new template standards: * new template standards:
* - template variables naming conventions * - template variables naming conventions ie. ${NAME IN CAPS}_TEMPLATE['{ID}'] = "<div>...</div>";
* - one array variable per template only * - one array variable per template only
* - theme override is made now by current_theme/templates/plugin_name/ folder * - theme override is made now by current_theme/templates/plugin_name/ folder
* *
@@ -1590,12 +1590,16 @@ class e107
* @param boolean $info retrieve template info only * @param boolean $info retrieve template info only
* @return string|array * @return string|array
*/ */
public static function getTemplate($plug_name, $id, $key = null, $override = true, $merge = false, $info = false) public static function getTemplate($plug_name, $id = null, $key = null, $override = true, $merge = false, $info = false)
{ {
if(null === $plug_name) if(null === $plug_name)
{ {
return self::getCoreTemplate($id, $key, $override, $merge, $info); return self::getCoreTemplate($id, $key, $override, $merge, $info);
} }
if(null == $id) // loads {$plug_name}/templates/{$plug_name}_template.php and an array ${PLUG_NAME}_TEMPLATE
{
$id = $plug_name;
}
$reg_path = 'plugin/'.$plug_name.'/templates/'.$id.($override ? '/ext' : ''); $reg_path = 'plugin/'.$plug_name.'/templates/'.$id.($override ? '/ext' : '');
$path = self::templatePath($plug_name, $id, $override); $path = self::templatePath($plug_name, $id, $override);
$id = str_replace('/', '_', $id); $id = str_replace('/', '_', $id);

View File

@@ -76,12 +76,13 @@ class e_parse_shortcode
function __construct() function __construct()
{ {
$this->parseSCFiles = true; // Default probably never used, but make sure its defined. $this->parseSCFiles = true; // Default probably never used, but make sure its defined.
$this->loadOverrideShortcodes(); $this->loadOverrideShortcodes();
$this->loadThemeShortcodes(); $this->loadThemeShortcodes();
$this->loadPluginShortcodes(); $this->loadPluginShortcodes();
$this->loadPluginSCFiles(); $this->loadPluginSCFiles();
$this->loadCoreShortcodes(); $this->loadCoreShortcodes();
} }
/** /**
@@ -250,7 +251,7 @@ class e_parse_shortcode
* *
* <code><?php * <code><?php
* // simple use * // simple use
* e107::getScParser()->getScObject('news_shortcodes'); * e107::getScParser()->getScObject('news_shortcodes'); // For Globally Registered shortcodes, including plugins using e_shortcode.php
* *
* // plugin override - e107_plugins/myplug/shortcodes/batch/news_shortcodes.php -> class plugin_myplug_news_shortcodes * // plugin override - e107_plugins/myplug/shortcodes/batch/news_shortcodes.php -> class plugin_myplug_news_shortcodes
* e107::getScParser()->getScObject('news_shortcodes', 'myplug', true); * e107::getScParser()->getScObject('news_shortcodes', 'myplug', true);
@@ -260,14 +261,16 @@ class e_parse_shortcode
* e107::getScParser()->getScObject('news_shortcodes', 'myplug', 'news2_shortcodes'); * e107::getScParser()->getScObject('news_shortcodes', 'myplug', 'news2_shortcodes');
* </code> * </code>
* @param string $className * @param string $className
* @param string $plugName * @param string $plugName if true className is used., if string, string value is used.
* @param string $overrideClass if true, $className is used * @param string $overrideClass if true, $className is used
* @return e_shortcode * @return e_shortcode
*/ */
public function getScObject($className, $pluginName = null, $overrideClass = null) public function getScObject($className, $pluginName = null, $overrideClass = null)
{ {
if(trim($className)==""){ return; }
$_class_fname = $className; $_class_fname = $className;
// plugin override // plugin override
if($overrideClass) if($overrideClass)
{ {
@@ -279,27 +282,41 @@ class e_parse_shortcode
$_class_fname = $overrideClass; $_class_fname = $overrideClass;
$className = 'plugin_'.$pluginName.'_'.str_replace('/', '_', $overrideClass); $className = 'plugin_'.$pluginName.'_'.str_replace('/', '_', $overrideClass);
} }
elseif($pluginName) elseif(is_string($pluginName))
{ {
$className = 'plugin_'.$pluginName.'_'.str_replace('/', '_', $className); $className = 'plugin_'.$pluginName.'_'.str_replace('/', '_', $className);
} }
elseif($pluginName === TRUE)
if ($this->isScClass($className)) {
$pluginName = str_replace("_shortcodes","",$className);
}
if ($this->isScClass($className)) // Includes global Shortcode Classes. ie. e_shortcode.php
{ {
return $this->scClasses[$className]; return $this->scClasses[$className];
} }
$path = ($pluginName ? e_PLUGIN.$pluginName.'/shortcodes/batch/' : e_CORE.'shortcodes/batch/').$_class_fname.'.php'; $path = ($pluginName ? e_PLUGIN.$pluginName.'/shortcodes/batch/' : e_CORE.'shortcodes/batch/').$_class_fname.'.php';
if (is_readable($path)) if (is_readable($path))
{ {
require_once($path); require_once($path);
if (class_exists($className, false)) // don't allow __autoload() if (class_exists($className, false)) // don't allow __autoload()
{ {
// register instance directly to allow override // register instance directly to allow override
$this->scClasses[$className] = new $className(); // $this->scClasses[$className] = new $className(); // located inside registerClassMethods()
$this->registerClassMethods($className, $path); $this->registerClassMethods($className, $path);
return $this->scClasses[$className]; return $this->scClasses[$className];
} }
elseif(E107_DBG_BBSC || E107_DBG_SC)
{
echo "Couldn't Find Class '".$className."' in <b>".$path."</b>";
}
}
elseif(E107_DBG_BBSC || E107_DBG_SC)
{
echo "Couldn't Load: <b>".$path."</b>";
} }
// TODO - throw exception? // TODO - throw exception?
@@ -410,6 +427,8 @@ class e_parse_shortcode
} }
$this->registerClassMethods($classFunc, $path, false); $this->registerClassMethods($classFunc, $path, false);
} }
return $this; return $this;
} }
@@ -432,9 +451,16 @@ class e_parse_shortcode
if ($force || !$this->isRegistered($code)) if ($force || !$this->isRegistered($code))
{ {
$this->registered_codes[$code] = array('type' => 'class', 'path' => $path, 'class' => $className); $this->registered_codes[$code] = array('type' => 'class', 'path' => $path, 'class' => $className);
if (class_exists($className, false))
{
$this->scClasses[$className] = new $className(); // Required. Test with e107::getScBatch($className)
}
} }
} }
} }
return $this; return $this;
} }

View File

@@ -1,121 +0,0 @@
<?php
/*
* e107 website system
*
* Copyright (C) 2008-2012 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Cron Administration
*
* $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.8/e107_admin/cron.php $
* $Id: cron.php 12492 2011-12-30 16:09:10Z e107steved $
*
*/
/**
*
* @package e107
* @subpackage frontend
* @version $Id: cron.php 12492 2011-12-30 16:09:10Z e107steved $
* Ultra-simple Image-Gallery
*/
/*
* THIS SCRIPT IS HIGHLY EXPERIMENTAL. USE AT OWN RISK.
*
*/
require_once("class2.php");
if (!getperms('0'))
{
header('location:'.e_BASE.'index.php');
exit;
}
require_once(HEADERF);
class gallery
{
private $catList = array();
function __construct()
{
$this->catList = e107::getMedia()->getCategories('gallery');
if(($_GET['cat']) && isset($this->catList[$_GET['cat']]))
{
$this->showImages($_GET['cat']);
}
else
{
$this->listCategories();
}
}
function listCategories()
{
foreach($this->catList as $val)
{
$thumb = "<img src='".e107::getParser()->thumbUrl($val['media_cat_image'],'aw=190&ah=150')."' alt='' />";
$text .= "<div style='width:190px;height:180px;float:left;margin:3px;border:1px solid black;background-color:black'>
<a href='".e_SELF."?cat=".$val['media_cat_category']."'>
".$thumb ."
<div style='text-align:center'><h3>".$val['media_cat_title']."</h2></a></div>
</div>";
}
e107::getRender()->tablerender("Gallery",$text);
}
function showImages($cat)
{
$GALLERY_LIST_START = "<div class='gallery-list-start' style='clear:both'>";
$GALLERY_LIST_ITEM = "<div class='gallery-list-item'>
{MEDIA_THUMB}
{MEDIA_CAPTION}
</div>";
$list = e107::getMedia()->getImages($cat);
foreach($list as $row)
{
$thumb = "<img src='".e107::getParser()->thumbUrl($row['media_url'],'aw=190&ah=150')."' alt='' />";
$text .= "<div style='width:190px;height:180px;float:left;margin:3px;border:1px solid black;background-color:black'>
<div>".$thumb."</div>
<div style='display:block;text-align:center;color:white;'>".$row['media_caption']."</div>
</div>";
//TODO GET TEMPLATING TO WORK WITHOUT THE USE OF A SHORTCODE FILE.
//TODO Shadowbox/Popup support.
// $sc = array("MEDIA_CAPTION" => $row['media_caption'],"MEDIA_THUMB"=> $thumb);
// $text .= e107::getParser()->simpleParse($GALLERY_LIST_ITEM, $sc); // NOT WORKING?
}
$GALLERY_LIST_END = "</div>
<div class='gallery-list-end' style='text-align:center;clear:both'><a href='".e_SELF."'>Back to Categories</a></div>";
$text = $GALLERY_LIST_START.$text.$GALLERY_LIST_END;
e107::getRender()->tablerender("Gallery :: ".str_replace("_"," ",$cat),$text);
}
}
new gallery;
require_once(FOOTERF);
exit;
?>