aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/phpbb/profilefields/manager.php47
-rw-r--r--phpBB/viewtopic.php8
2 files changed, 35 insertions, 20 deletions
diff --git a/phpBB/phpbb/profilefields/manager.php b/phpBB/phpbb/profilefields/manager.php
index a32baaac56..f14aa2a2b4 100644
--- a/phpBB/phpbb/profilefields/manager.php
+++ b/phpBB/phpbb/profilefields/manager.php
@@ -368,6 +368,34 @@ class manager
}
/**
+ * Cache user's profile fields' language options
+ * @param array $profile_row Array with users profile field data
+ * @return void
+ */
+ public function cache_profile_fields_lang_options($profile_row)
+ {
+ if (!empty($profile_row))
+ {
+ $field_ids = array();
+ foreach ($profile_row as $ident_ary)
+ {
+ if (empty($field_ids[$ident_ary['data']['lang_id']]))
+ {
+ $field_ids[$ident_ary['data']['lang_id']] = array();
+
+ }
+
+ $field_ids[$ident_ary['data']['lang_id']][] = $ident_ary['data']['field_id'];
+ }
+
+ foreach ($field_ids as $lang => $fields)
+ {
+ $this->lang_helper->get_option_lang($fields, $lang, false);
+ }
+ }
+ }
+
+ /**
* Assign the user's profile fields data to the template
*
* @param array $profile_row Array with users profile field data
@@ -393,25 +421,6 @@ class manager
$vars = array('profile_row', 'tpl_fields', 'use_contact_fields');
extract($this->dispatcher->trigger_event('core.generate_profile_fields_template_data_before', compact($vars)));
- if (!empty($profile_row))
- {
- $field_ids = array();
- foreach ($profile_row as $ident_ary)
- {
- if (empty($field_ids[$ident_ary['data']['lang_id']]))
- {
- $field_ids[$ident_ary['data']['lang_id']] = array();
-
- }
- $field_ids[$ident_ary['data']['lang_id']][] = $ident_ary['data']['field_id'];
- }
-
- foreach ($field_ids as $lang => $fields)
- {
- $this->lang_helper->get_option_lang($fields, $lang, false);
- }
- }
-
foreach ($profile_row as $ident => $ident_ary)
{
$profile_field = $this->type_collection[$ident_ary['data']['field_type']];
diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php
index d87f7de2b0..760b4e5c87 100644
--- a/phpBB/viewtopic.php
+++ b/phpBB/viewtopic.php
@@ -1270,6 +1270,7 @@ if ($config['load_cpf_viewtopic'])
// filter out fields not to be displayed on viewtopic. Yes, it's a hack, but this shouldn't break any MODs.
$profile_fields_cache = array();
+ $profile_rows = array();
foreach ($profile_fields_tmp as $profile_user_id => $profile_fields)
{
$profile_fields_cache[$profile_user_id] = array();
@@ -1278,10 +1279,15 @@ if ($config['load_cpf_viewtopic'])
if ($profile_field['data']['field_show_on_vt'])
{
$profile_fields_cache[$profile_user_id][$used_ident] = $profile_field;
+ $profile_rows[] = $profile_field;
}
}
}
- unset($profile_fields_tmp);
+
+ // Cache the language options for optimisation
+ $cp->cache_profile_fields_lang_options($profile_rows);
+
+ unset($profile_fields_tmp, $profile_rows);
}
// Generate online information for user