1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-22 00:32:29 +02:00

[ticket/15233] Standardize variable generation

PHPBB3-15233
This commit is contained in:
mrgoldy 2020-05-10 14:58:57 +02:00 committed by Marc Alexander
parent 3796a4207f
commit d77415dbab
No known key found for this signature in database
GPG Key ID: 50E0D2423696F995
26 changed files with 163 additions and 170 deletions

View File

@ -113,7 +113,7 @@
<legend>{L_GROUP_AVATAR}</legend>
<dl>
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
<dd>{AVATAR}</dd>
<dd>{% if AVATAR_HTML %}{{ AVATAR_HTML }}{% else %}<img src="{{ ADMIN_ROOT_PATH ~ 'images/no_avatar.gif' }}" alt="">{% endif %}</dd>
<dd><label for="avatar_delete"><input type="checkbox" name="avatar_delete" id="avatar_delete" /> {L_DELETE_AVATAR}</label></dd>
</dl>
<dl>

View File

@ -5,7 +5,7 @@
<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
<dl>
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
<dd>{AVATAR}</dd>
<dd>{% if AVATAR_HTML %}{{ AVATAR_HTML }}{% else %}<img src="{{ ADMIN_ROOT_PATH ~ 'images/no_avatar.gif' }}" alt="">{% endif %}</dd>
<dd><label for="avatar_delete"><input type="checkbox" name="avatar_delete" id="avatar_delete" /> {L_DELETE_AVATAR}</label></dd>
</dl>
</fieldset>

View File

@ -721,8 +721,6 @@ class acp_groups
}
}
$group_avatar = $group_helper->get_avatar($group_row, 'GROUP_AVATAR', true);
if (isset($phpbb_avatar_manager) && !$update)
{
// Merge any avatar errors into the primary error array
@ -742,6 +740,12 @@ class acp_groups
break;
}
/** @var \phpbb\avatar\helper $avatar_helper */
$avatar_helper = $phpbb_container->get('avatar.helper');
$group_avatar = $avatar_helper->get_group_avatar($group_row, 'GROUP_AVATAR', true);
$template->assign_vars($avatar_helper->get_template_vars($group_avatar));
$template->assign_vars(array(
'S_EDIT' => true,
'S_ADD_GROUP' => ($action == 'add') ? true : false,
@ -771,13 +775,6 @@ class acp_groups
'S_RANK_OPTIONS' => $rank_options,
'S_GROUP_OPTIONS' => group_select_options(false, false, (($user->data['user_type'] == USER_FOUNDER) ? false : 0)),
'AVATAR' => empty($group_avatar['html']) ? '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $group_avatar['html'],
'AVATAR_LAZY' => $group_avatar['lazy'],
'AVATAR_SRC' => $group_avatar['src'],
'AVATAR_TITLE' => $group_avatar['title'],
'AVATAR_TYPE' => $group_avatar['type'],
'AVATAR_WIDTH' => $group_avatar['width'],
'AVATAR_HEIGHT' => $group_avatar['height'],
'AVATAR_MAX_FILESIZE' => $config['avatar_filesize'],
'GROUP_TYPE_FREE' => GROUP_FREE,

View File

@ -1972,24 +1972,17 @@ class acp_users
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($user_row, 'USER_AVATAR', true);
$template->assign_vars($avatar_helper->get_template_vars($avatar));
$template->assign_vars(array(
'S_AVATAR' => true,
'ERROR' => (!empty($error)) ? implode('<br />', $error) : '',
'AVATAR' => empty($avatar['html']) ? '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $avatar['html'],
'AVATAR_LAZY' => $avatar['lazy'],
'AVATAR_SOURCE' => $avatar['src'],
'AVATAR_TITLE' => $avatar['title'],
'AVATAR_TYPE' => $avatar['type'],
'AVATAR_WIDTH' => $avatar['width'],
'AVATAR_HEIGHT' => $avatar['height'],
'S_AVATAR' => true,
'ERROR' => !empty($error) ? implode('<br />', $error) : '',
'S_FORM_ENCTYPE' => ' enctype="multipart/form-data"',
'L_AVATAR_EXPLAIN' => $user->lang(($config['avatar_filesize'] == 0) ? 'AVATAR_EXPLAIN_NO_FILESIZE' : 'AVATAR_EXPLAIN', $config['avatar_max_width'], $config['avatar_max_height'], $config['avatar_filesize'] / 1024),
'S_AVATARS_ENABLED' => ($config['allow_avatar'] && $avatars_enabled),
'S_AVATARS_ENABLED' => ($config['allow_avatar'] && $avatars_enabled),
));
break;

View File

@ -3872,6 +3872,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($user->data);
$template->assign_vars($avatar_helper->get_template_vars($avatar, 'CURRENT_USER_'));
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
@ -3886,14 +3887,8 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
'LOGGED_IN_USER_LIST' => $online_userlist,
'RECORD_USERS' => $l_online_record,
'NO_AVATAR_SOURCE' => $avatar_helper->get_no_avatar_source(),
'PRIVATE_MESSAGE_COUNT' => (!empty($user->data['user_unread_privmsg'])) ? $user->data['user_unread_privmsg'] : 0,
'CURRENT_USER_AVATAR' => $avatar['html'],
'CURRENT_USER_AVATAR_LAZY' => $avatar['lazy'],
'CURRENT_USER_AVATAR_SOURCE' => $avatar['src'],
'CURRENT_USER_AVATAR_TITLE' => $avatar['title'],
'CURRENT_USER_AVATAR_TYPE' => $avatar['type'],
'CURRENT_USER_AVATAR_WIDTH' => $avatar['width'],
'CURRENT_USER_AVATAR_HEIGHT' => $avatar['height'],
'CURRENT_USERNAME_SIMPLE' => get_username_string('no_profile', $user->data['user_id'], $user->data['username'], $user->data['user_colour']),
'CURRENT_USERNAME_FULL' => get_username_string('full', $user->data['user_id'], $user->data['username'], $user->data['user_colour']),
'CURRENT_USER_GROUP_COLOR' => $user->data['user_colour'],

View File

@ -1657,9 +1657,10 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($data);
$avatar_vars = $avatar_helper->get_template_vars($avatar);
// Dump it out to the template
$template_data = array(
$template_data = array_merge($avatar_vars, [
'AGE' => $age,
'RANK_TITLE' => $user_rank_data['title'],
'JOINED' => $user->format_date($data['user_regdate']),
@ -1674,14 +1675,6 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
'A_USERNAME' => addslashes(get_username_string('username', $user_id, $username, $data['user_colour'])),
'AVATAR_IMG' => $avatar['html'],
'AVATAR_LAZY' => $avatar['lazy'],
'AVATAR_SOURCE' => $avatar['src'],
'AVATAR_TITLE' => $avatar['title'],
'AVATAR_TYPE' => $avatar['type'],
'AVATAR_WIDTH' => $avatar['width'],
'AVATAR_HEIGHT' => $avatar['height'],
'ONLINE_IMG' => (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')),
'S_ONLINE' => ($config['load_onlinetrack'] && $online) ? true : false,
'RANK_IMG' => $user_rank_data['img'],
@ -1703,7 +1696,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
'L_SEND_EMAIL_USER' => $user->lang('SEND_EMAIL_USER', $username),
'L_CONTACT_USER' => $user->lang('CONTACT_USER', $username),
'L_VIEWING_PROFILE' => $user->lang('VIEWING_PROFILE', $username),
);
]);
/**
* Preparing a user's data before displaying it in profile and memberlist

View File

@ -185,19 +185,6 @@ class mcp_notes
trigger_error($msg . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>'));
}
if (!function_exists('phpbb_get_user_rank'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
// Generate the appropriate user information for the user we are looking at
$rank_data = phpbb_get_user_rank($userrow, $userrow['user_posts']);
/** @var \phpbb\avatar\helper $avatar_helper */
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($userrow);
$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
$sort_by_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_DATE'], 'c' => $user->lang['SORT_IP'], 'd' => $user->lang['SORT_ACTION']);
$sort_by_sql = array('a' => 'u.username_clean', 'b' => 'l.log_time', 'c' => 'l.log_ip', 'd' => 'l.log_operation');
@ -235,6 +222,20 @@ class mcp_notes
$base_url = $this->u_action . "&amp;$u_sort_param$keywords_param";
$pagination->generate_template_pagination($base_url, 'pagination', 'start', $log_count, $config['topics_per_page'], $start);
if (!function_exists('phpbb_get_user_rank'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
// Generate the appropriate user information for the user we are looking at
$rank_data = phpbb_get_user_rank($userrow, $userrow['user_posts']);
/** @var \phpbb\avatar\helper $avatar_helper */
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($userrow);
$template->assign_vars($avatar_helper->get_template_vars($avatar));
$template->assign_vars(array(
'U_POST_ACTION' => $this->u_action,
'S_CLEAR_ALLOWED' => ($auth->acl_get('a_clearlogs')) ? true : false,
@ -256,13 +257,6 @@ class mcp_notes
'USERNAME' => get_username_string('username', $userrow['user_id'], $userrow['username'], $userrow['user_colour']),
'U_PROFILE' => get_username_string('profile', $userrow['user_id'], $userrow['username'], $userrow['user_colour']),
'AVATAR_IMG' => $avatar['html'],
'AVATAR_LAZY' => $avatar['lazy'],
'AVATAR_SOURCE' => $avatar['src'],
'AVATAR_TITLE' => $avatar['title'],
'AVATAR_TYPE' => $avatar['type'],
'AVATAR_WIDTH' => $avatar['width'],
'AVATAR_HEIGHT' => $avatar['height'],
'RANK_IMG' => $rank_data['img'],
'RANK_TITLE' => $rank_data['title'],
));

View File

@ -347,6 +347,7 @@ class mcp_warn
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($user_row);
$template->assign_vars($avatar_helper->get_template_vars($avatar));
$template->assign_vars(array(
'U_POST_ACTION' => $this->u_action,
@ -359,13 +360,6 @@ class mcp_warn
'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0,
'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0,
'AVATAR_IMG' => $avatar['html'],
'AVATAR_LAZY' => $avatar['lazy'],
'AVATAR_SOURCE' => $avatar['src'],
'AVATAR_TITLE' => $avatar['title'],
'AVATAR_TYPE' => $avatar['type'],
'AVATAR_WIDTH' => $avatar['width'],
'AVATAR_HEIGHT' => $avatar['height'],
'RANK_IMG' => $user_rank_data['img'],
'L_WARNING_POST_DEFAULT' => sprintf($user->lang['WARNING_POST_DEFAULT'], generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&amp;p=$post_id#p$post_id"),
@ -506,6 +500,7 @@ class mcp_warn
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($user_row);
$template->assign_vars($avatar_helper->get_template_vars($avatar));
// OK, they didn't submit a warning so lets build the page for them to do so
$template->assign_vars(array(
@ -521,13 +516,6 @@ class mcp_warn
'USERNAME' => get_username_string('username', $user_row['user_id'], $user_row['username'], $user_row['user_colour']),
'U_PROFILE' => get_username_string('profile', $user_row['user_id'], $user_row['username'], $user_row['user_colour']),
'AVATAR_IMG' => $avatar['html'],
'AVATAR_LAZY' => $avatar['lazy'],
'AVATAR_SOURCE' => $avatar['src'],
'AVATAR_TITLE' => $avatar['title'],
'AVATAR_TYPE' => $avatar['type'],
'AVATAR_WIDTH' => $avatar['width'],
'AVATAR_HEIGHT' => $avatar['height'],
'RANK_IMG' => $user_rank_data['img'],
'S_CAN_NOTIFY' => $s_can_notify,

View File

@ -431,7 +431,11 @@ class ucp_groups
$group_name = $group_row['group_name'];
$group_type = $group_row['group_type'];
$group_avatar = $group_helper->get_avatar($group_row, 'GROUP_AVATAR', true);
/** @var \phpbb\avatar\helper $avatar_helper */
$avatar_helper = $phpbb_container->get('avatar.helper');
$group_avatar = $avatar_helper->get_group_avatar($group_row, 'GROUP_AVATAR', true);
$template->assign_vars($avatar_helper->get_template_vars($group_avatar));
$template->assign_vars(array(
'GROUP_NAME' => $group_helper->get_name($group_name),
@ -439,15 +443,6 @@ class ucp_groups
'GROUP_COLOUR' => (isset($group_row['group_colour'])) ? $group_row['group_colour'] : '',
'GROUP_DESC_DISP' => generate_text_for_display($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_bitfield'], $group_row['group_desc_options']),
'GROUP_TYPE' => $group_row['group_type'],
'AVATAR' => empty($group_avatar['html']) ? '<img class="avatar" src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $group_avatar['html'],
'AVATAR_IMAGE' => empty($group_avatar['html']) ? '<img class="avatar" src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $group_avatar['html'],
'AVATAR_LAZY' => $group_avatar['lazy'],
'AVATAR_SRC' => $group_avatar['src'],
'AVATAR_TITLE' => $group_avatar['title'],
'AVATAR_TYPE' => $group_avatar['type'],
'AVATAR_WIDTH' => $group_avatar['width'],
'AVATAR_HEIGHT' => $group_avatar['height'],
));
}

View File

@ -221,13 +221,6 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
'RANK_TITLE' => $user_info['rank_title'],
'RANK_IMG' => $user_info['rank_image'],
'AUTHOR_AVATAR' => !empty($user_info['avatar']) ? $user_info['avatar']['html'] : '',
'AUTHOR_AVATAR_LAZY' => !empty($user_info['avatar']) ? $user_info['avatar']['lazy'] : false,
'AUTHOR_AVATAR_SOURCE' => !empty($user_info['avatar']) ? $user_info['avatar']['src'] : '',
'AUTHOR_AVATAR_TITLE' => !empty($user_info['avatar']) ? $user_info['avatar']['title'] : '',
'AUTHOR_AVATAR_TYPE' => !empty($user_info['avatar']) ? $user_info['avatar']['type'] : '',
'AUTHOR_AVATAR_WIDTH' => !empty($user_info['avatar']) ? $user_info['avatar']['width'] : 0,
'AUTHOR_AVATAR_HEIGHT' => !empty($user_info['avatar']) ? $user_info['avatar']['height'] : 0,
'AUTHOR_JOINED' => $user->format_date($user_info['user_regdate']),
'AUTHOR_POSTS' => (int) $user_info['user_posts'],
'U_AUTHOR_POSTS' => ($config['load_search'] && $auth->acl_get('u_search')) ? append_sid("{$phpbb_root_path}search.$phpEx", "author_id=$author_id&amp;sr=posts") : '',
@ -279,6 +272,15 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
'U_FORWARD_PM' => ($config['forward_pm'] && $auth->acl_get('u_sendpm') && $auth->acl_get('u_pm_forward')) ? "$url&amp;mode=compose&amp;action=forward&amp;f=$folder_id&amp;p=" . $message_row['msg_id'] : '',
);
if (!empty($user_info['avatar']))
{
/** @var \phpbb\avatar\helper $avatar_helper */
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar_data = $avatar_helper->get_template_vars($user_info['avatar'], 'AUTHOR_');
$msg_data = array_merge($msg_data, $avatar_data);
}
/**
* Modify pm and sender data before it is assigned to the template
*

View File

@ -761,16 +761,10 @@ class ucp_profile
$avatar_helper = $phpbb_container->get('avatar.helper');
$avatar = $avatar_helper->get_user_avatar($user->data, 'USER_AVATAR', true);
$template->assign_vars($avatar_helper->get_template_vars($avatar));
$template->assign_vars(array(
'ERROR' => (count($error)) ? implode('<br />', $error) : '',
'AVATAR' => $avatar['html'],
'AVATAR_LAZY' => $avatar['lazy'],
'AVATAR_SOURCE' => $avatar['src'],
'AVATAR_TITLE' => $avatar['title'],
'AVATAR_TYPE' => $avatar['type'],
'AVATAR_WIDTH' => $avatar['width'],
'AVATAR_HEIGHT' => $avatar['height'],
'ERROR' => !empty($error) ? implode('<br />', $error) : '',
'S_FORM_ENCTYPE' => ' enctype="multipart/form-data"',

View File

@ -1290,8 +1290,6 @@ switch ($mode)
break;
}
$avatar = $group_helper->get_avatar($group_row);
// ... same for group rank
$group_rank_data = array(
'title' => null,
@ -1331,6 +1329,12 @@ switch ($mode)
'U_BREADCRUMB' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=group&amp;g=$group_id"),
));
/** @var \phpbb\avatar\helper $avatar_helper */
$avatar_helper = $phpbb_container->get('avatar.helper');
$group_avatar = $avatar_helper->get_group_avatar($group_row);
$template->assign_vars($avatar_helper->get_template_vars($group_avatar));
$template->assign_vars(array(
'GROUP_DESC' => generate_text_for_display($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_bitfield'], $group_row['group_desc_options']),
'GROUP_NAME' => $group_helper->get_name($group_row['group_name']),
@ -1338,14 +1342,6 @@ switch ($mode)
'GROUP_TYPE' => $user->lang['GROUP_IS_' . $group_row['l_group_type']],
'GROUP_RANK' => $group_rank_data['title'],
'AVATAR_IMG' => $avatar['html'],
'AVATAR_LAZY' => $avatar['lazy'],
'AVATAR_SRC' => $avatar['src'],
'AVATAR_TITLE' => $avatar['title'],
'AVATAR_TYPE' => $avatar['type'],
'AVATAR_WIDTH' => $avatar['width'],
'AVATAR_HEIGHT' => $avatar['height'],
'RANK_IMG' => $group_rank_data['img'],
'RANK_IMG_SRC' => $group_rank_data['img_src'],

View File

@ -13,43 +13,55 @@
namespace phpbb\avatar;
use phpbb\avatar\driver\driver_interface;
use phpbb\config\config;
use phpbb\event\dispatcher;
use phpbb\language\language;
use phpbb\path_helper;
use phpbb\user;
/**
* Avatar helper object.
*
* Generates avatars and their variables for display.
*/
class helper
{
/** @var \phpbb\config\config */
/** @var config */
protected $config;
/** @var \phpbb\event\dispatcher */
/** @var dispatcher */
protected $dispatcher;
/** @var \phpbb\language\language */
/** @var language */
protected $language;
/** @var \phpbb\avatar\manager */
/** @var manager */
protected $manager;
/** @var \phpbb\path_helper */
/** @var path_helper */
protected $path_helper;
/** @var \phpbb\user */
/** @var user */
protected $user;
/**
* Constructor.
*
* @param \phpbb\config\config $config Config object
* @param \phpbb\event\dispatcher $dispatcher Event dispatcher object
* @param \phpbb\language\language $language Language object
* @param \phpbb\avatar\manager $manager Avatar manager object
* @param \phpbb\path_helper $path_helper Path helper object
* @param \phpbb\user $user User object
* @param config $config Config object
* @param dispatcher $dispatcher Event dispatcher object
* @param language $language Language object
* @param manager $manager Avatar manager object
* @param path_helper $path_helper Path helper object
* @param user $user User object
*/
public function __construct(
\phpbb\config\config $config,
\phpbb\event\dispatcher $dispatcher,
\phpbb\language\language $language,
config $config,
dispatcher $dispatcher,
language $language,
manager $manager,
\phpbb\path_helper $path_helper,
\phpbb\user $user
path_helper $path_helper,
user $user
)
{
$this->config = $config;
@ -60,6 +72,32 @@ class helper
$this->user = $user;
}
/**
* Get an avatar's template variables.
*
* @param array $avatar The avatar's data
* @param string $prefix The variables' prefix
* @return array The avatar's template variables
*/
public function get_template_vars(array $avatar, string $prefix = ''): array
{
$prefix = $prefix && substr($prefix, -1) !== '_' ? "{$prefix}_" : $prefix;
return [
"{$prefix}AVATAR" => $avatar,
"{$prefix}AVATAR_SOURCE" => $avatar['src'],
"{$prefix}AVATAR_TITLE" => $avatar['title'],
"{$prefix}AVATAR_TYPE" => $avatar['type'],
"{$prefix}AVATAR_WIDTH" => $avatar['width'],
"{$prefix}AVATAR_HEIGHT" => $avatar['height'],
"{$prefix}AVATAR_LAZY" => $avatar['lazy'],
"{$prefix}AVATAR_HTML" => $avatar['html'],
];
}
/**
* Get user avatar data.
*
@ -69,9 +107,9 @@ class helper
* @param bool $lazy Indicator whether the avatar should be lazy loaded (requires JS) or not
* @return array The avatar data array
*/
public function get_user_avatar(array $row, $title = 'USER_AVATAR', $ignore_config = false, $lazy = false)
public function get_user_avatar(array $row, string $title = 'USER_AVATAR', bool $ignore_config = false, bool $lazy = false): array
{
$row = $this->manager->clean_row($row, 'user');
$row = manager::clean_row($row, 'user');
return $this->get_avatar($row, $title, $ignore_config, $lazy);
}
@ -85,9 +123,9 @@ class helper
* @param bool $lazy Indicator whether the avatar should be lazy loaded (requires JS) or not
* @return array The avatar data array
*/
public function get_group_avatar(array $row, $title = 'GROUP_AVATAR', $ignore_config = false, $lazy = false)
public function get_group_avatar(array $row, string $title = 'GROUP_AVATAR', bool $ignore_config = false, bool $lazy = false): array
{
$row = $this->manager->clean_row($row, 'group');
$row = manager::clean_row($row, 'group');
return $this->get_avatar($row, $title, $ignore_config, $lazy);
}
@ -101,7 +139,7 @@ class helper
* @param bool $lazy Indicator whether the avatar should be lazy loaded (requires JS) or not
* @return array The avatar data array
*/
public function get_avatar(array $row, $title, $ignore_config = false, $lazy = false)
public function get_avatar(array $row, string $title, bool $ignore_config = false, bool $lazy = false): array
{
if (!$this->config['allow_avatar'] && !$ignore_config)
{
@ -126,7 +164,7 @@ class helper
'html' => '',
];
/** @var \phpbb\avatar\driver\driver_interface $driver */
/** @var driver_interface $driver */
$driver = $this->manager->get_driver($row['avatar_type'], !$ignore_config);
if ($driver !== null)
@ -182,6 +220,24 @@ class helper
return $data;
}
/**
* Get the "no avatar" source string.
*
* @return string The "no avatar" source string
*/
public function get_no_avatar_source(): string
{
/**
* We need to correct the phpBB root path in case this is called from a controller,
* because the web path will be incorrect otherwise.
*/
$board_url = defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH;
$web_path = $board_url ? generate_board_url() . '/' : $this->path_helper->get_web_root_path();
$style_path = rawurlencode($this->user->style['style_path']);
return "{$web_path}styles/{$style_path}/theme/images/no_avatar.gif";
}
/**
* Get an avatar's HTML <img> element.
*
@ -193,21 +249,11 @@ class helper
* @param array $data The avatar data array
* @return string The avatar's HTML <img> element
*/
protected function get_avatar_html(array $data)
private function get_avatar_html(array $data): string
{
if ($data['lazy'])
{
/**
* We need to correct the phpBB root path in case this is called from a controller,
* because the web path will be incorrect otherwise.
*/
$board_url = defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH;
$web_path = $board_url ? generate_board_url() . '/' : $this->path_helper->get_web_root_path();
$style_path = rawurlencode($this->user->style['style_path']);
$theme = "{$web_path}styles/{$style_path}/theme";
$data['src'] = $theme . '/images/no_avatar.gif" data-src="' . $data['src'];
$data['src'] = $this->get_no_avatar_source() . ' data-src="' . $data['src'];
}
$src = ' src="' . $data['src'] . '"';

View File

@ -297,14 +297,16 @@ abstract class base implements \phpbb\notification\type\type_interface
'TIME' => $this->user->format_date($this->notification_time),
'UNREAD' => !$this->notification_read,
'AVATAR' => $avatar ? $avatar['html'] : '',
'AVATAR_LAZY' => $avatar ? $avatar['lazy'] : true,
'AVATAR_SRC' => $avatar ? $avatar['src'] : '',
'AVATAR_SOURCE' => $avatar ? $avatar['src'] : '',
'AVATAR_TITLE' => $avatar ? $avatar['title'] : '',
'AVATAR_TYPE' => $avatar ? $avatar['type'] : '',
'AVATAR_WIDTH' => $avatar ? $avatar['width'] : 0,
'AVATAR_HEIGHT' => $avatar ? $avatar['height'] : 0,
'AVATAR_HTML' => $avatar ? $avatar['html'] : '',
'AVATAR_LAZY' => $avatar ? $avatar['lazy'] : true,
'U_MARK_READ' => (!$this->notification_read) ? $u_mark_read : '',
];
}

View File

@ -11,7 +11,7 @@
<div>
<div class="column1">
<!-- IF AVATAR_IMG --><div>{AVATAR_IMG}</div><!-- ENDIF -->
<!-- IF AVATAR_HTML --><div>{AVATAR_HTML}</div><!-- ENDIF -->
</div>
<div class="column2">

View File

@ -11,7 +11,7 @@
<div>
<div class="column1">
<!-- IF AVATAR_IMG --><div>{AVATAR_IMG}</div><!-- ENDIF -->
<!-- IF AVATAR_HTML --><div>{AVATAR_HTML}</div><!-- ENDIF -->
</div>
<div class="column2">

View File

@ -11,7 +11,7 @@
<div>
<div class="column1">
<!-- IF AVATAR_IMG --><div>{AVATAR_IMG}</div><!-- ENDIF -->
<!-- IF AVATAR_HTML --><div>{AVATAR_HTML}</div><!-- ENDIF -->
</div>
<div class="column2">

View File

@ -26,7 +26,7 @@
{% EVENT memberlist_body_group_desc_after %}
<p>
<!-- IF AVATAR_IMG -->{AVATAR_IMG}<!-- ENDIF -->
<!-- IF AVATAR_HTML -->{AVATAR_HTML}<!-- ENDIF -->
{% EVENT memberlist_body_group_rank_before %}
{% if RANK_IMG %}{{ RANK_IMG }}{% endif %}
{% if GROUP_RANK %}

View File

@ -8,9 +8,9 @@
<div class="panel bg1">
<div class="inner">
<!-- IF AVATAR_IMG -->
<!-- IF AVATAR_HTML -->
<dl class="left-box">
<dt class="profile-avatar">{AVATAR_IMG}</dt>
<dt class="profile-avatar">{AVATAR_HTML}</dt>
<!-- EVENT memberlist_view_rank_avatar_before -->
<!-- IF RANK_TITLE --><dd style="text-align: center;">{RANK_TITLE}</dd><!-- ENDIF -->
<!-- IF RANK_IMG --><dd style="text-align: center;">{RANK_IMG}</dd><!-- ENDIF -->
@ -29,7 +29,7 @@
<!-- IF U_USER_BAN --> [ <a href="{U_USER_BAN}">{L_USER_BAN}</a> ]<!-- ENDIF -->
<!-- IF U_SWITCH_PERMISSIONS --> [ <a href="{U_SWITCH_PERMISSIONS}">{L_USE_PERMISSIONS}</a> ]<!-- ENDIF -->
</dd>
<!-- IF not AVATAR_IMG -->
<!-- IF not AVATAR_HTML -->
<!-- EVENT memberlist_view_rank_no_avatar_before -->
<!-- IF RANK_TITLE --><dt>{L_RANK}{L_COLON}</dt> <dd>{RANK_TITLE}</dd><!-- ENDIF -->
<!-- IF RANK_IMG --><dt><!-- IF RANK_TITLE -->&nbsp;<!-- ELSE -->{L_RANK}{L_COLON}<!-- ENDIF --></dt> <dd>{RANK_IMG}</dd><!-- ENDIF -->

View File

@ -106,11 +106,11 @@
{% if S_REGISTERED_USER %}
{% EVENT navbar_header_user_profile_prepend %}
<li id="username_logged_in" class="rightside {% if CURRENT_USER_AVATAR %} no-bulletin{% endif %}">
<li id="username_logged_in" class="rightside {% if CURRENT_USER_AVATAR_HTML %} no-bulletin{% endif %}">
{% EVENT navbar_header_username_prepend %}
<div class="header-profile dropdown-container">
<a href="{{ U_PROFILE }}" class="header-avatar dropdown-trigger">
{% if CURRENT_USER_AVATAR %}{{ CURRENT_USER_AVATAR }} {% endif %}
{% if CURRENT_USER_AVATAR_HTML %}{{ CURRENT_USER_AVATAR_HTML }} {% endif %}
{{ CURRENT_USERNAME_SIMPLE }}
{{ Icon('iconify', 'fa:caret-down', '', true, '', {'style': 'color: #' ~ CURRENT_USER_GROUP_COLOR}) }}
</a>

View File

@ -22,7 +22,7 @@
<!-- IF notifications.URL -->
<a class="notification-block" href="<!-- IF notifications.UNREAD -->{notifications.U_MARK_READ}" data-real-url="{notifications.URL}<!-- ELSE -->{notifications.URL}<!-- ENDIF -->">
<!-- ENDIF -->
<!-- IF notifications.AVATAR -->{notifications.AVATAR}<!-- ELSE --><img class="avatar notification-avatar" src="{T_THEME_PATH}/images/no_avatar.gif" alt="" /><!-- ENDIF -->
<!-- IF notifications.AVATAR -->{notifications.AVATAR_HTML}<!-- ELSE --><img class="avatar notification-avatar" src="{{ NO_AVATAR_SOURCE }}" alt="" /><!-- ENDIF -->
<div class="notification-text">
<p class="notification-title">{notifications.FORMATTED_TITLE}</p>
<!-- IF notifications.REFERENCE --><p class="notification-reference">{notifications.REFERENCE}</p><!-- ENDIF -->

View File

@ -8,7 +8,7 @@
<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
<dl>
<dt><label>{L_CURRENT_IMAGE}{L_COLON}</label><br /><span>{L_AVATAR_EXPLAIN}</span></dt>
<dd><!-- IF AVATAR -->{AVATAR}<!-- ELSE --><img src="{T_THEME_PATH}/images/no_avatar.gif" alt="" /><!-- ENDIF --></dd>
<dd><!-- IF AVATAR -->{AVATAR_HTML}<!-- ELSE --><img src="{{ NO_AVATAR_SOURCE }}" alt="" /><!-- ENDIF --></dd>
<dd><label for="avatar_delete"><input type="checkbox" name="avatar_delete" id="avatar_delete" /> {L_DELETE_AVATAR}</label></dd>
</dl>
</fieldset>

View File

@ -67,7 +67,7 @@
<dl>
<dt>
<div class="list-inner notification-item">
<!-- IF notification_list.AVATAR -->{notification_list.AVATAR}<!-- ELSE --><img class="avatar notification-avatar" src="{T_THEME_PATH}/images/no_avatar.gif" alt="" /><!-- ENDIF -->
<!-- IF notification_list.AVATAR -->{notification_list.AVATAR_HTML}<!-- ELSE --><img class="avatar notification-avatar" src="{{ NO_AVATAR_SOURCE }}" alt="" /><!-- ENDIF -->
<div class="notification-text">
<!-- IF notification_list.URL --><a href="<!-- IF notification_list.UNREAD -->{notification_list.U_MARK_READ}<!-- ELSE -->{notification_list.URL}<!-- ENDIF -->"><!-- ENDIF -->
<p class="notification-title">{notification_list.FORMATTED_TITLE}<!-- IF notification_list.REFERENCE --> {notification_list.REFERENCE}<!-- ENDIF --></p>

View File

@ -26,10 +26,10 @@
<div class="inner">
<dl class="postprofile" id="profile{MESSAGE_ID}">
<dt class="<!-- IF RANK_TITLE or RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF --> <!-- IF AUTHOR_AVATAR -->has-avatar<!-- ELSE -->no-avatar<!-- ENDIF -->">
<dt class="<!-- IF RANK_TITLE or RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF --> <!-- IF AUTHOR_AVATAR_HTML -->has-avatar<!-- ELSE -->no-avatar<!-- ENDIF -->">
<div class="avatar-container">
<!-- EVENT ucp_pm_viewmessage_avatar_before -->
<!-- IF AUTHOR_AVATAR --><a href="{U_MESSAGE_AUTHOR}" class="avatar">{AUTHOR_AVATAR}</a><!-- ENDIF -->
<!-- IF AUTHOR_AVATAR_HTML --><a href="{U_MESSAGE_AUTHOR}" class="avatar">{AUTHOR_AVATAR_HTML}</a><!-- ENDIF -->
<!-- EVENT ucp_pm_viewmessage_avatar_after -->
</div>
{% apply spaceless %}

View File

@ -140,11 +140,11 @@
<div class="inner">
<dl class="postprofile" id="profile{postrow.POST_ID}"<!-- IF postrow.S_POST_HIDDEN --> style="display: none;"<!-- ENDIF -->>
<dt class="<!-- IF postrow.RANK_TITLE or postrow.RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF --> <!-- IF postrow.POSTER_AVATAR -->has-avatar<!-- ELSE -->no-avatar<!-- ENDIF -->">
<dt class="<!-- IF postrow.RANK_TITLE or postrow.RANK_IMG -->has-profile-rank<!-- ELSE -->no-profile-rank<!-- ENDIF --> <!-- IF postrow.POSTER_AVATAR_HTML -->has-avatar<!-- ELSE -->no-avatar<!-- ENDIF -->">
<div class="avatar-container">
<!-- EVENT viewtopic_body_avatar_before -->
<!-- IF postrow.POSTER_AVATAR -->
<!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}" class="avatar">{postrow.POSTER_AVATAR}</a><!-- ELSE --><span class="avatar">{postrow.POSTER_AVATAR}</span><!-- ENDIF -->
<!-- IF postrow.POSTER_AVATAR_HTML -->
<!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}" class="avatar">{postrow.POSTER_AVATAR_HTML}</a><!-- ELSE --><span class="avatar">{postrow.POSTER_AVATAR}</span><!-- ENDIF -->
<!-- ENDIF -->
<!-- EVENT viewtopic_body_avatar_after -->
</div>

View File

@ -2040,13 +2040,6 @@ for ($i = 0, $end = count($post_list); $i < $end; ++$i)
'RANK_IMG_SRC' => $user_cache[$poster_id]['rank_image_src'],
'POSTER_JOINED' => $user_cache[$poster_id]['joined'],
'POSTER_POSTS' => $user_cache[$poster_id]['posts'],
'POSTER_AVATAR' => $user_cache[$poster_id]['avatar'] ? $user_cache[$poster_id]['avatar']['html'] : '',
'POSTER_AVATAR_LAZY' => $user_cache[$poster_id]['avatar'] ? $user_cache[$poster_id]['avatar']['lazy'] : false,
'POSTER_AVATAR_SOURCE' => $user_cache[$poster_id]['avatar'] ? $user_cache[$poster_id]['avatar']['src'] : '',
'POSTER_AVATAR_TITLE' => $user_cache[$poster_id]['avatar'] ? $user_cache[$poster_id]['avatar']['title'] : '',
'POSTER_AVATAR_TYPE' => $user_cache[$poster_id]['avatar'] ? $user_cache[$poster_id]['avatar']['type'] : '',
'POSTER_AVATAR_WIDTH' => $user_cache[$poster_id]['avatar'] ? $user_cache[$poster_id]['avatar']['width'] : 0,
'POSTER_AVATAR_HEIGHT' => $user_cache[$poster_id]['avatar'] ? $user_cache[$poster_id]['avatar']['height'] : 0,
'POSTER_WARNINGS' => $auth->acl_get('m_warn') ? $user_cache[$poster_id]['warnings'] : '',
'POSTER_AGE' => $user_cache[$poster_id]['age'],
'CONTACT_USER' => $user_cache[$poster_id]['contact_user'],
@ -2119,6 +2112,11 @@ for ($i = 0, $end = count($post_list); $i < $end; ++$i)
'S_DELETE_PERMANENT' => $permanent_delete_allowed,
);
if ($user_cache[$poster_id]['avatar'])
{
$post_row += $avatar_helper->get_template_vars($user_cache[$poster_id]['avatar'], 'POSTER_');
}
$user_poster_data = $user_cache[$poster_id];
$current_row_number = $i;