diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index f81ae1444..e4962dbec 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -888,7 +888,22 @@ class e107 */ public static function getThemePref($pref_name = '', $default = null, $index = null) { - return e107::getConfig()->getPref('sitetheme_pref/'.$pref_name, $default, $index); + if($pref_name) $pref_name = '/'.$pref_name; + return e107::getConfig()->getPref('sitetheme_pref'.$pref_name, $default, $index); + } + + /** + * Set current theme preference. $pref_name is parsed, + * so that $pref_name = 'x/y/z' will set value pref_data[x][y][z] + * + * @param string|array $pref_name + * @param mixed $pref_value + * @return e_pref + */ + public static function setThemePref($pref_name, $pref_value = null) + { + if(is_array($pref_name)) return e107::getConfig()->set('sitetheme_pref', $pref_name); + return e107::getConfig()->updatePref('sitetheme_pref/'.$pref_name, $pref_value, false); } /** @@ -1765,16 +1780,16 @@ class e107 * * Examples: * + * // import defeinitions from /e107_plugins/forum/languages/[CurrentLanguage]/lan_forum.php * e107::plugLan('forum', 'lan_forum'); * - * // import defeinitions from /e107_plugins/featurebox/languages/[CurrentLanguage]_admin_featurebox.php + * // import defeinitions from /e107_plugins/featurebox/languages/[CurrentLanguage]_admin_featurebox.php * e107::plugLan('featurebox', 'admin_featurebox', true); * * // import defeinitions from /e107_plugins/myplug/languages/[CurrentLanguage].php * e107::plugLan('myplug'); * - * // import defeinitions from /e107_plugins/myplug/languages/[CurrentLanguage].php + * // import defeinitions from /e107_plugins/myplug/languages/[CurrentLanguage]/admin/common.php * e107::plugLan('myplug', 'admin/common'); * * @@ -1798,6 +1813,50 @@ class e107 e107::setRegistry($cstring, true); self::includeLan($path, false); } + + /** + * Simplify importing of theme Language files (following e107 plugin structure standards). + * All inputs are sanitized. + * + * Examples: + * + * + * @param string $fname filename without the extension part (e.g. 'common' for common.php) + * @param string $theme theme name, if null current theme will be used + * @param boolean $flat false (default, preferred) Language folder structure; true - prepend Language to file name + * @return void + */ + public static function themeLan($fname = '', $theme = null, $flat = false) + { + if(null === $theme) $theme = THEME.'/languages/'; + else $theme = e_THEME.preg_replace('#[^\w/]#', '', $theme).'/languages/'; + + $cstring = 'themelan/'.$theme.$fname.($flat ? '_1' : '_0'); + if(e107::getRegistry($cstring)) return; + + if($fname) $fname = e_LANGUAGE.($flat ? '_' : '/').preg_replace('#[^\w/]#', '', $fname); + else $fname = e_LANGUAGE; + + $path = $theme.$fname.'.php'; + + e107::setRegistry($cstring, true); + self::includeLan($path, false); + } /** * Routine looks in standard paths for language files associated with a plugin or