diff --git a/phpBB/adm/style/acp_avatar_options_local.html b/phpBB/adm/style/acp_avatar_options_local.html
index 0dd83db017..0a50a4eed4 100644
--- a/phpBB/adm/style/acp_avatar_options_local.html
+++ b/phpBB/adm/style/acp_avatar_options_local.html
@@ -1,14 +1,25 @@
-
-
-
-
+
+
+ -
+
+
+
+
diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php
index bcce458e20..9b5c52e28e 100644
--- a/phpBB/includes/acp/acp_users.php
+++ b/phpBB/includes/acp/acp_users.php
@@ -1692,6 +1692,9 @@ class acp_users
$avatar_drivers = $avatar_manager->get_valid_drivers();
sort($avatar_drivers);
+ // This is normalised data, without the user_ prefix
+ $avatar_data = phpbb_avatar_driver::clean_row($user_row, phpbb_avatar_driver::FROM_USER);
+
if ($submit)
{
if (check_form_key($form_name))
@@ -1700,12 +1703,17 @@ class acp_users
if (in_array($driver, $avatar_drivers) && $config["allow_avatar_$driver"])
{
$avatar = $avatar_manager->get_driver($driver);
- $result = $avatar->process_form($template, $user_row, $error);
+ $result = $avatar->process_form($template, $avatar_data, $error);
if ($result && empty($error))
{
// Success! Lets save the result in the database
- $result['user_avatar_type'] = $driver;
+ $result = array(
+ 'user_avatar_type' => $driver,
+ 'user_avatar' => $result['avatar'],
+ 'user_avatar_width' => $result['avatar_width'],
+ 'user_avatar_height' => $result['avatar_height'],
+ );
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $result) . '
WHERE user_id = ' . $user_id;
@@ -1751,7 +1759,7 @@ class acp_users
$avatar = $avatar_manager->get_driver($driver);
- if ($avatar->prepare_form($template, $user_row, $error))
+ if ($avatar->prepare_form($template, $avatar_data, $error))
{
$driver_u = strtoupper($driver);
$template->assign_block_vars('avatar_drivers', array(
diff --git a/phpBB/includes/avatar/driver/local.php b/phpBB/includes/avatar/driver/local.php
index edd62696f0..85eda96018 100644
--- a/phpBB/includes/avatar/driver/local.php
+++ b/phpBB/includes/avatar/driver/local.php
@@ -51,7 +51,7 @@ class phpbb_avatar_driver_local extends phpbb_avatar_driver
{
$avatar_list = $this->get_avatar_list();
$category = request_var('av_local_cat', '');
-
+
$categories = array_keys($avatar_list);
foreach ($categories as $cat)
@@ -67,13 +67,33 @@ class phpbb_avatar_driver_local extends phpbb_avatar_driver
if (!empty($avatar_list[$category]))
{
- foreach ($avatar_list[$category] as $img => $data)
+ $table_cols = isset($row['av_gallery_cols']) ? $row['av_gallery_cols'] : 4;
+ $row_count = $col_count = $av_pos = 0;
+ $av_count = sizeof($avatar_list[$category]);
+
+ reset($avatar_list[$category]);
+
+ while ($av_pos < $av_count)
{
- $template->assign_block_vars('av_local_imgs', array(
- 'AVATAR_IMAGE' => $this->phpbb_root_path . $this->config['avatar_gallery_path'] . '/' . $data['file'],
- 'AVATAR_NAME' => $data['name'],
- 'AVATAR_FILE' => $data['filename'],
+ $img = current($avatar_list[$category]);
+ next($avatar_list[$category]);
+
+ if ($col_count == 0)
+ {
+ ++$row_count;
+ $template->assign_block_vars('av_local_row', array(
+ ));
+ }
+
+ $template->assign_block_vars('av_local_row.av_local_col', array(
+ 'AVATAR_IMAGE' => $this->phpbb_root_path . $this->config['avatar_gallery_path'] . '/' . $img['file'],
+ 'AVATAR_NAME' => $img['name'],
+ 'AVATAR_FILE' => $img['filename'],
));
+
+ $col_count = ($col_count + 1) % $table_cols;
+
+ ++$av_pos;
}
}
diff --git a/phpBB/styles/prosilver/template/ucp_avatar_options_local.html b/phpBB/styles/prosilver/template/ucp_avatar_options_local.html
index 0dd83db017..9f726e2ff9 100644
--- a/phpBB/styles/prosilver/template/ucp_avatar_options_local.html
+++ b/phpBB/styles/prosilver/template/ucp_avatar_options_local.html
@@ -7,8 +7,10 @@