aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/session.php
diff options
context:
space:
mode:
authorIgor Wiedler <igor@wiedler.ch>2011-11-19 01:20:22 +0100
committerIgor Wiedler <igor@wiedler.ch>2011-11-19 01:20:22 +0100
commitb7c4fb38de526eb446de20c0b8e54d7cf9108834 (patch)
treee5a09515fb73ca34e01736c681a733f40b2c89ba /phpBB/includes/session.php
parent3df4b83cd3306013d78b93024905a67ecc97df25 (diff)
parent5f48f55cca5d0a6a2c51cdcc8a60b475354f50b1 (diff)
downloadforums-b7c4fb38de526eb446de20c0b8e54d7cf9108834.tar
forums-b7c4fb38de526eb446de20c0b8e54d7cf9108834.tar.gz
forums-b7c4fb38de526eb446de20c0b8e54d7cf9108834.tar.bz2
forums-b7c4fb38de526eb446de20c0b8e54d7cf9108834.tar.xz
forums-b7c4fb38de526eb446de20c0b8e54d7cf9108834.zip
Merge remote-tracking branch 'naderman/feature/extension-manager' into develop
* naderman/feature/extension-manager: (67 commits) [feature/extension-manager] Removing now unused acp_search code [feature/extension-manager] Split disabling extensions up into steps as well [feature/extension-manager] Add documentation on caching in ext finder [feature/extension-manager] Reference correct new module basenames in install [feature/extension-manager] Rename default methods to core methods on finder. [feature/extension-manager] Document what the class loader stores in cache [feature/extension-manager] Add docblock to cached paths map in class loader [feature/extension-manager] Clear up docs of extension related template changes [feature/extension-manager] Use "core files" instead of "global files" in docs [feature/extension-manager] Add docblocks to new search backend methods [feature/extension-manager] Add docblocks to new methods in functions_module [feature/extension-manager] Clarify comment on ext meta class instantiator [feature/extension-manager] Add more info on suffixes in extension finder [feature/extension-manager] Clarify is_dir parameter description [feature/extension-manager] Clarify class finding method docblock [feature/extension-manager] Correct default path comment & remove double strlen [feature/extension-manager] Fix "disbale" typo in comment [feature/extension-manager] Properly remove old ACP language loading code [feature/extension-manager] Support extensions in subdirectories of ext/ [feature/extension-manager] Add prefix to extension meta data / install classes ...
Diffstat (limited to 'phpBB/includes/session.php')
-rw-r--r--phpBB/includes/session.php68
1 files changed, 54 insertions, 14 deletions
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php
index bd2257c139..497aaf1141 100644
--- a/phpBB/includes/session.php
+++ b/phpBB/includes/session.php
@@ -1901,6 +1901,7 @@ class user extends session
* @param mixed $lang_set specifies the language entries to include
* @param bool $use_db internal variable for recursion, do not use
* @param bool $use_help internal variable for recursion, do not use
+ * @param string $ext_name The extension to load language from, or empty for core files
*
* Examples:
* <code>
@@ -1911,7 +1912,7 @@ class user extends session
* $lang_set = array('help' => 'faq', 'db' => array('help:faq', 'posting'))
* </code>
*/
- function add_lang($lang_set, $use_db = false, $use_help = false)
+ function add_lang($lang_set, $use_db = false, $use_help = false, $ext_name = '')
{
global $phpEx;
@@ -1925,36 +1926,54 @@ class user extends session
if ($key == 'db')
{
- $this->add_lang($lang_file, true, $use_help);
+ $this->add_lang($lang_file, true, $use_help, $ext_name);
}
else if ($key == 'help')
{
- $this->add_lang($lang_file, $use_db, true);
+ $this->add_lang($lang_file, $use_db, true, $ext_name);
}
else if (!is_array($lang_file))
{
- $this->set_lang($this->lang, $this->help, $lang_file, $use_db, $use_help);
+ $this->set_lang($this->lang, $this->help, $lang_file, $use_db, $use_help, $ext_name);
}
else
{
- $this->add_lang($lang_file, $use_db, $use_help);
+ $this->add_lang($lang_file, $use_db, $use_help, $ext_name);
}
}
unset($lang_set);
}
else if ($lang_set)
{
- $this->set_lang($this->lang, $this->help, $lang_set, $use_db, $use_help);
+ $this->set_lang($this->lang, $this->help, $lang_set, $use_db, $use_help, $ext_name);
}
}
/**
+ * Add Language Items from an extension - use_db and use_help are assigned where needed (only use them to force inclusion)
+ *
+ * @param string $ext_name The extension to load language from, or empty for core files
+ * @param mixed $lang_set specifies the language entries to include
+ * @param bool $use_db internal variable for recursion, do not use
+ * @param bool $use_help internal variable for recursion, do not use
+ */
+ function add_lang_ext($ext_name, $lang_set, $use_db = false, $use_help = false)
+ {
+ if ($ext_name === '/')
+ {
+ $ext_name = '';
+ }
+
+ $this->add_lang($lang_set, $use_db, $use_help, $ext_name);
+ }
+
+ /**
* Set language entry (called by add_lang)
* @access private
*/
- function set_lang(&$lang, &$help, $lang_file, $use_db = false, $use_help = false)
+ function set_lang(&$lang, &$help, $lang_file, $use_db = false, $use_help = false, $ext_name = '')
{
- global $phpEx;
+ global $phpbb_root_path, $phpEx;
// Make sure the language name is set (if the user setup did not happen it is not set)
if (!$this->lang_name)
@@ -1970,11 +1989,32 @@ class user extends session
{
if ($use_help && strpos($lang_file, '/') !== false)
{
- $language_filename = $this->lang_path . $this->lang_name . '/' . substr($lang_file, 0, stripos($lang_file, '/') + 1) . 'help_' . substr($lang_file, stripos($lang_file, '/') + 1) . '.' . $phpEx;
+ $filename = dirname($lang_file) . '/help_' . basename($lang_file);
+ }
+ else
+ {
+ $filename = (($use_help) ? 'help_' : '') . $lang_file;
+ }
+
+ if ($ext_name)
+ {
+ global $phpbb_extension_manager;
+ $ext_path = $phpbb_extension_manager->get_extension_path($ext_name, true);
+
+ $lang_path = $ext_path . 'language/';
+ }
+ else
+ {
+ $lang_path = $this->lang_path;
+ }
+
+ if (strpos($phpbb_root_path . $filename, $lang_path . $this->lang_name . '/') === 0)
+ {
+ $language_filename = $phpbb_root_path . $filename;
}
else
{
- $language_filename = $this->lang_path . $this->lang_name . '/' . (($use_help) ? 'help_' : '') . $lang_file . '.' . $phpEx;
+ $language_filename = $lang_path . $this->lang_name . '/' . $filename . '.' . $phpEx;
}
if (!file_exists($language_filename))
@@ -1984,24 +2024,24 @@ class user extends session
if ($this->lang_name == 'en')
{
// The user's selected language is missing the file, the board default's language is missing the file, and the file doesn't exist in /en.
- $language_filename = str_replace($this->lang_path . 'en', $this->lang_path . $this->data['user_lang'], $language_filename);
+ $language_filename = str_replace($lang_path . 'en', $lang_path . $this->data['user_lang'], $language_filename);
trigger_error('Language file ' . $language_filename . ' couldn\'t be opened.', E_USER_ERROR);
}
else if ($this->lang_name == basename($config['default_lang']))
{
// Fall back to the English Language
$this->lang_name = 'en';
- $this->set_lang($lang, $help, $lang_file, $use_db, $use_help);
+ $this->set_lang($lang, $help, $lang_file, $use_db, $use_help, $ext_name);
}
else if ($this->lang_name == $this->data['user_lang'])
{
// Fall back to the board default language
$this->lang_name = basename($config['default_lang']);
- $this->set_lang($lang, $help, $lang_file, $use_db, $use_help);
+ $this->set_lang($lang, $help, $lang_file, $use_db, $use_help, $ext_name);
}
// Reset the lang name
- $this->lang_name = (file_exists($this->lang_path . $this->data['user_lang'] . "/common.$phpEx")) ? $this->data['user_lang'] : basename($config['default_lang']);
+ $this->lang_name = (file_exists($lang_path . $this->data['user_lang'] . "/common.$phpEx")) ? $this->data['user_lang'] : basename($config['default_lang']);
return;
}