1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-05 14:17:49 +02:00

Improved news shortcode handlingImplemented new shortcode override/ directory. Any .sc file found here will override any other shortcode anywhere.

This commit is contained in:
mcfly
2009-01-16 01:02:41 +00:00
parent 6bafd3acc9
commit 21f4629908
5 changed files with 105 additions and 54 deletions

View File

@@ -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;