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