1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-17 20:58:30 +01:00

Shortcode parser: more code cleanup, still work in progress

This commit is contained in:
secretr 2010-04-24 09:58:02 +00:00
parent 26e4de97e6
commit 9fb7e748bb

View File

@ -148,9 +148,17 @@ class e_parse_shortcode
public function setScVar($className, $scVarName, $value)
{
if(isset($this->scClasses[$className]))
{
// new way - batch should extend e_shortcode class
if(method_exists($this->scClasses[$className], 'setScVar'))
{
$this->scClasses[$className]->setScVar($scVarName, $value);
}
else // Old - DEPRECATED
{
$this->scClasses[$className]->$scVarName = $value;
}
}
return $this;
}
@ -161,7 +169,7 @@ class e_parse_shortcode
* @param string $scFuncName
* @param mixed $param - passed to function
*
* @return mixed|boolean - FALSE if class doesn't exist; otherwise whatever the function returns.
* @return mixed|boolean - NULL if class doesn't exist; otherwise whatever the function returns.
*/
public function callScFunc($className, $scFuncName, $param = '')
{
@ -169,10 +177,7 @@ class e_parse_shortcode
{
return call_user_func(array($this->scClasses[$className], $scFuncName), $param);
}
else
{
return FALSE;
}
return null;
}
/**
@ -205,13 +210,13 @@ class e_parse_shortcode
return call_user_func(array($this->scClasses[$className], $scFuncName), $param);
}
// TODO - throw exception?
return new e_shortcode();
return null;
}
/**
* Register any shortcode from the override/shortcodes/ directory
*
* @return void
* @return e_parse_shortcode
*/
protected function loadOverrideShortcodes()
{
@ -225,13 +230,14 @@ class e_parse_shortcode
$this->scOverride[] = $code;
}
}
return $this;
}
/**
* Register any shortcodes that were registered by the theme
* $register_sc[] = 'MY_THEME_CODE'
*
* @return void
* @return e_parse_shortcode
*/
protected function loadThemeShortcodes()
{
@ -248,21 +254,22 @@ class e_parse_shortcode
}
}
}
return $this;
}
/**
* Register all .sc files found in plugin directories (via pref)
*
* @return void
* @return e_parse_shortcode
*/
protected function loadPluginSCFiles()
{
$pref = e107::getConfig('core')->getPref();
$pref = e107::getPref('shortcode_list');
if(varset($pref['shortcode_list'], '') != '')
if($pref)
{
foreach($pref['shortcode_list'] as $path => $namearray)
foreach($pref as $path => $namearray)
{
foreach($namearray as $code => $uclass)
{
@ -277,49 +284,51 @@ class e_parse_shortcode
{
$this->registered_codes[$code]['type'] = 'plugin';
$this->registered_codes[$code]['path'] = $path;
$this->registered_codes[$code]['perms'] = $uclass; // Add this in
$this->registered_codes[$code]['perms'] = $uclass; // XXX how we get this?
}
}
}
}
}
return $this;
}
/**
* Register Plugin Shortcode Batch files (e_shortcode.php) for use site-wide.
* Equivalent to multiple .sc files in the plugin's folder.
*
* @return void
* @return e_parse_shortcode
*/
protected function loadPluginShortcodes()
{
$pref = e107::getConfig('core')->getPref();
$pref = e107::getPref('e_shortcode_list');
if(!vartrue($pref['e_shortcode_list']))
if(!$pref)
{
return;
return $this;
}
foreach($pref['e_shortcode_list'] as $key=>$val)
foreach($pref as $key=>$val)
{
if(!include_once(e_PLUGIN.$key.'/e_shortcode.php'))
$path = e_PLUGIN.$key.'/e_shortcode.php';
$classFunc = $key.'_shortcodes';
if(!include_once($path))
{
continue;
}
$path = e_PLUGIN.$key.'/e_shortcode.php';
$classFunc = $key.'_shortcodes';
$this->registerClassMethods($classFunc,$path);
$this->registerClassMethods($classFunc, $path);
}
return $this;
}
/**
* Common Auto-Register function for class methods.
*
*/
private function registerClassMethods($classFunc, $path)
protected function registerClassMethods($classFunc, $path)
{
$this->scClasses[$classFunc] = new $classFunc;
//$this->scClasses[$classFunc] = new $classFunc;
$tmp = get_class_methods($classFunc);
foreach($tmp as $c)
@ -351,7 +360,7 @@ class e_parse_shortcode
$path = e_CORE.'shortcodes/batch/'.$cb.".php";
if(include_once($path))
{
$this->registerClassMethods($cb,$path);
$this->registerClassMethods($cb, $path);
}
}
}