diff options
author | Nils Adermann <naderman@naderman.de> | 2014-02-02 16:34:55 +0100 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2014-02-02 16:34:55 +0100 |
commit | 38af79dd30f87c3016a2f85d3343bb5f9bb5de7c (patch) | |
tree | 2447c1f35c2eedfcaa1b60c9c151d3df61e027fb /phpBB/phpbb/profilefields/lang_helper.php | |
parent | 8a6b961c54ea117ada9a85044840975d050c91b7 (diff) | |
parent | a59d6e94a5bc30e99be5535632ccf2046817dd30 (diff) | |
download | forums-38af79dd30f87c3016a2f85d3343bb5f9bb5de7c.tar forums-38af79dd30f87c3016a2f85d3343bb5f9bb5de7c.tar.gz forums-38af79dd30f87c3016a2f85d3343bb5f9bb5de7c.tar.bz2 forums-38af79dd30f87c3016a2f85d3343bb5f9bb5de7c.tar.xz forums-38af79dd30f87c3016a2f85d3343bb5f9bb5de7c.zip |
Merge remote-tracking branch 'github-nickvergessen/ticket/11201' into develop
* github-nickvergessen/ticket/11201: (50 commits)
[ticket/11201] Remove empty calls section from .yml
[ticket/11201] Split template file into multiple files
[ticket/11201] Remove dependency from types on the manager
[ticket/11201] Rename profilefields class to manager
[ticket/11201] Fix parameter description
[ticket/11201] Use !== null, its faster
[ticket/11201] Also translate profile fields in UCP and ACP
[ticket/11201] Add parameters and variables to profile field class
[ticket/11201] Add commas on last array entry
[ticket/11201] Allow translation of profile field name and explanation
[ticket/11201] Fix some variable names
[ticket/11201] Add tables to constructor in tests
[ticket/11201] Add a method to return the translated full name of the type
[ticket/11201] Remove db depending code from field class
[ticket/11201] Add variables to classes and add constructor doc blocks
[ticket/11201] Update copyright in class file
[ticket/11201] Add visibility and remove unused variable
[ticket/11201] Add some commas at the last array entry
[ticket/11201] Cast some variables to integer
[ticket/11201] Inject table names rather then using constants
...
Conflicts:
phpBB/config/services.yml
Diffstat (limited to 'phpBB/phpbb/profilefields/lang_helper.php')
-rw-r--r-- | phpBB/phpbb/profilefields/lang_helper.php | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/phpBB/phpbb/profilefields/lang_helper.php b/phpBB/phpbb/profilefields/lang_helper.php new file mode 100644 index 0000000000..7bae1bdc18 --- /dev/null +++ b/phpBB/phpbb/profilefields/lang_helper.php @@ -0,0 +1,130 @@ +<?php +/** +* +* @package phpBB3 +* @copyright (c) 2014 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +namespace phpbb\profilefields; + +/** +* Custom Profile Fields +* @package phpBB3 +*/ +class lang_helper +{ + /** + * Array with the language option, grouped by field and language + * @var array + */ + protected $options_lang = array(); + + /** + * Database object + * @var \phpbb\db\driver\driver + */ + protected $db; + + /** + * Table where the language strings are stored + * @var string + */ + protected $language_table; + + /** + * Construct + * + * @param \phpbb\db\driver\driver $db Database object + * @param string $language_table Table where the language strings are stored + */ + public function __construct($db, $language_table) + { + $this->db = $db; + $this->language_table = $language_table; + } + + /** + * Get language entries for options and store them here for later use + */ + public function get_option_lang($field_id, $lang_id, $field_type, $preview_options) + { + if ($preview_options !== false) + { + $lang_options = (!is_array($preview_options)) ? explode("\n", $preview_options) : $preview_options; + + foreach ($lang_options as $num => $var) + { + if (!isset($this->options_lang[$field_id])) + { + $this->options_lang[$field_id] = array(); + } + if (!isset($this->options_lang[$field_id][$lang_id])) + { + $this->options_lang[$field_id][$lang_id] = array(); + } + $this->options_lang[$field_id][$lang_id][($num + 1)] = $var; + } + } + else + { + $sql = 'SELECT option_id, lang_value + FROM ' . $this->language_table . ' + WHERE field_id = ' . (int) $field_id . ' + AND lang_id = ' . (int) $lang_id . " + AND field_type = '" . $this->db->sql_escape($field_type) . "' + ORDER BY option_id"; + $result = $this->db->sql_query($sql); + + while ($row = $this->db->sql_fetchrow($result)) + { + $this->options_lang[$field_id][$lang_id][($row['option_id'] + 1)] = $row['lang_value']; + } + $this->db->sql_freeresult($result); + } + } + + /** + * Are language options set for this field? + * + * @param int $field_id Database ID of the field + * @param int $lang_id ID of the language + * @param int $field_value Selected value of the field + * @return boolean + */ + public function is_set($field_id, $lang_id = null, $field_value = null) + { + $is_set = isset($this->options_lang[$field_id]); + + if ($is_set && (!is_null($lang_id) || !is_null($field_value))) + { + $is_set = isset($this->options_lang[$field_id][$lang_id]); + } + + if ($is_set && !is_null($field_value)) + { + $is_set = isset($this->options_lang[$field_id][$lang_id][$field_value]); + } + + return $is_set; + } + + /** + * Get the selected language string + * + * @param int $field_id Database ID of the field + * @param int $lang_id ID of the language + * @param int $field_value Selected value of the field + * @return string + */ + public function get($field_id, $lang_id, $field_value = null) + { + if (is_null($field_value)) + { + return $this->options_lang[$field_id][$lang_id]; + } + + return $this->options_lang[$field_id][$lang_id][$field_value]; + } +} |