From 17fa18665f4fd35da72c47f7c3b814678d1ca59e Mon Sep 17 00:00:00 2001 From: flashwave Date: Wed, 27 Feb 2019 16:32:13 +0100 Subject: [PATCH] Updated profile.php in accordance with user assets no longer being served through it. --- assets/less/classes/profile/header.less | 4 + public/profile.php | 574 ++++++++++++------------ src/url.php | 7 +- templates/user/_layout/header.twig | 51 ++- templates/user/profile.twig | 41 +- 5 files changed, 349 insertions(+), 328 deletions(-) diff --git a/assets/less/classes/profile/header.less b/assets/less/classes/profile/header.less index 7f0feb94..3f36bdbf 100644 --- a/assets/less/classes/profile/header.less +++ b/assets/less/classes/profile/header.less @@ -198,6 +198,10 @@ text-align: left; } + &--link { + cursor: pointer; + } + @media (max-width: @site-mobile-width) { &--date &__value { text-align: right; diff --git a/public/profile.php b/public/profile.php index 9d0cacce..42de164f 100644 --- a/public/profile.php +++ b/public/profile.php @@ -1,19 +1,280 @@ perms_check($userPerms, MSZ_PERM_USER_EDIT_PROFILE), + 'edit_avatar' => perms_check($userPerms, MSZ_PERM_USER_CHANGE_AVATAR), + 'edit_background' => perms_check($userPerms, MSZ_PERM_USER_CHANGE_BACKGROUND), + 'edit_about' => perms_check($userPerms, MSZ_PERM_USER_EDIT_ABOUT), + 'edit_birthdate' => perms_check($userPerms, MSZ_PERM_USER_EDIT_BIRTHDATE), + 'edit_signature' => perms_check($userPerms, MSZ_PERM_USER_EDIT_SIGNATURE), + ]; + + tpl_vars([ + 'perms' => $perms, + 'guidelines' => [ + 'avatar' => $avatarProps = user_avatar_default_options(), + 'background' => $backgroundProps = user_background_default_options(), + ], + 'background_attachments' => MSZ_USER_BACKGROUND_ATTACHMENTS_NAMES, + ]); + + if (!csrf_verify('profile', $_POST['csrf'] ?? '')) { + $notices[] = MSZ_TMP_USER_ERROR_STRINGS['csrf']; + } else { + if (!empty($_POST['profile']) && is_array($_POST['profile'])) { + if (!$perms['edit_profile']) { + $notices[] = MSZ_TMP_USER_ERROR_STRINGS['profile']['not-allowed']; + } else { + $setUserFieldErrors = user_profile_fields_set($userId, $_POST['profile']); + + if (count($setUserFieldErrors) > 0) { + foreach ($setUserFieldErrors as $name => $error) { + $notices[] = sprintf( + MSZ_TMP_USER_ERROR_STRINGS['profile'][$error] ?? MSZ_TMP_USER_ERROR_STRINGS['profile']['_'], + $name, + user_profile_field_get_display_name($name) + ); + } + } + } } + if (!empty($_POST['about']) && is_array($_POST['about'])) { + if (!$perms['edit_about']) { + $notices[] = MSZ_TMP_USER_ERROR_STRINGS['about']['not-allowed']; + } else { + $setAboutError = user_set_about_page( + $userId, + $_POST['about']['text'] ?? '', + (int)($_POST['about']['parser'] ?? MSZ_PARSER_PLAIN) + ); + + if ($setAboutError !== MSZ_E_USER_ABOUT_OK) { + $notices[] = sprintf( + MSZ_TMP_USER_ERROR_STRINGS['about'][$setAboutError] ?? MSZ_TMP_USER_ERROR_STRINGS['about']['_'], + MSZ_USER_ABOUT_MAX_LENGTH + ); + } + } + } + + if (!empty($_POST['signature']) && is_array($_POST['signature'])) { + if (!$perms['edit_signature']) { + $notices[] = MSZ_TMP_USER_ERROR_STRINGS['signature']['not-allowed']; + } else { + $setSignatureError = user_set_signature( + $userId, + $_POST['signature']['text'] ?? '', + (int)($_POST['signature']['parser'] ?? MSZ_PARSER_PLAIN) + ); + + if ($setSignatureError !== MSZ_E_USER_SIGNATURE_OK) { + $notices[] = sprintf( + MSZ_TMP_USER_ERROR_STRINGS['signature'][$setSignatureError] ?? MSZ_TMP_USER_ERROR_STRINGS['signature']['_'], + MSZ_USER_SIGNATURE_MAX_LENGTH + ); + } + } + } + + if (!empty($_POST['birthdate']) && is_array($_POST['birthdate'])) { + if (!$perms['edit_birthdate']) { + $notices[] = "You aren't allow to change your birthdate."; + } else { + $setBirthdate = user_set_birthdate( + $userId, + (int)($_POST['birthdate']['day'] ?? 0), + (int)($_POST['birthdate']['month'] ?? 0), + (int)($_POST['birthdate']['year'] ?? 0) + ); + + switch ($setBirthdate) { + case MSZ_E_USER_BIRTHDATE_USER: + $notices[] = 'Invalid user specified while setting birthdate?'; + break; + case MSZ_E_USER_BIRTHDATE_DATE: + $notices[] = 'The given birthdate is invalid.'; + break; + case MSZ_E_USER_BIRTHDATE_FAIL: + $notices[] = 'Failed to set birthdate.'; + break; + case MSZ_E_USER_BIRTHDATE_YEAR: + $notices[] = 'The given birth year is invalid.'; + break; + case MSZ_E_USER_BIRTHDATE_OK: + break; + default: + $notices[] = 'Something unexpected happened while setting your birthdate.'; + } + } + } + + if (!empty($_FILES['avatar'])) { + if (!empty($_POST['avatar']['delete'])) { + user_avatar_delete($userId); + } else { + if (!$perms['edit_avatar']) { + $notices[] = MSZ_TMP_USER_ERROR_STRINGS['avatar']['not-allowed']; + } elseif (!empty($_FILES['avatar']) + && is_array($_FILES['avatar']) + && !empty($_FILES['avatar']['name']['file'])) { + if ($_FILES['avatar']['error']['file'] !== UPLOAD_ERR_OK) { + $notices[] = sprintf( + MSZ_TMP_USER_ERROR_STRINGS['avatar']['upload'][$_FILES['avatar']['error']['file']] + ?? MSZ_TMP_USER_ERROR_STRINGS['avatar']['upload']['_'], + $_FILES['avatar']['error']['file'], + byte_symbol($avatarProps['max_size'], true), + $avatarProps['max_width'], + $avatarProps['max_height'] + ); + } else { + $setAvatar = user_avatar_set_from_path( + $userId, + $_FILES['avatar']['tmp_name']['file'], + $avatarProps + ); + + if ($setAvatar !== MSZ_USER_AVATAR_NO_ERRORS) { + $notices[] = sprintf( + MSZ_TMP_USER_ERROR_STRINGS['avatar']['set'][$setAvatar] + ?? MSZ_TMP_USER_ERROR_STRINGS['avatar']['set']['_'], + $setAvatar, + byte_symbol($avatarProps['max_size'], true), + $avatarProps['max_width'], + $avatarProps['max_height'] + ); + } + } + } + } + } + + if (!empty($_FILES['background'])) { + if ((int)($_POST['background']['attach'] ?? -1) === 0) { + user_background_delete($userId); + user_background_set_settings($userId, MSZ_USER_BACKGROUND_ATTACHMENT_NONE); + } else { + if (!$perms['edit_background']) { + $notices[] = MSZ_TMP_USER_ERROR_STRINGS['background']['not-allowed']; + } elseif (!empty($_FILES['background']) + && is_array($_FILES['background'])) { + if (!empty($_FILES['background']['name']['file'])) { + if ($_FILES['background']['error']['file'] !== UPLOAD_ERR_OK) { + $notices[] = sprintf( + MSZ_TMP_USER_ERROR_STRINGS['background']['upload'][$_FILES['background']['error']['file']] + ?? MSZ_TMP_USER_ERROR_STRINGS['background']['upload']['_'], + $_FILES['background']['error']['file'], + byte_symbol($backgroundProps['max_size'], true), + $backgroundProps['max_width'], + $backgroundProps['max_height'] + ); + } else { + $setBackground = user_background_set_from_path( + $userId, + $_FILES['background']['tmp_name']['file'], + $backgroundProps + ); + + if ($setBackground !== MSZ_USER_BACKGROUND_NO_ERRORS) { + $notices[] = sprintf( + MSZ_TMP_USER_ERROR_STRINGS['background']['set'][$setBackground] + ?? MSZ_TMP_USER_ERROR_STRINGS['background']['set']['_'], + $setBackground, + byte_symbol($backgroundProps['max_size'], true), + $backgroundProps['max_width'], + $backgroundProps['max_height'] + ); + } + } + } + + $backgroundSettings = in_array($_POST['background']['attach'] ?? '', MSZ_USER_BACKGROUND_ATTACHMENTS) + ? (int)($_POST['background']['attach']) + : MSZ_USER_BACKGROUND_ATTACHMENTS[0]; + + if (!empty($_POST['background']['attr']['blend'])) { + $backgroundSettings |= MSZ_USER_BACKGROUND_ATTRIBUTE_BLEND; + } + + if (!empty($_POST['background']['attr']['slide'])) { + $backgroundSettings |= MSZ_USER_BACKGROUND_ATTRIBUTE_SLIDE; + } + + user_background_set_settings($userId, $backgroundSettings); + } + } + } + } + + // Unset $isEditing and hope the user doesn't refresh their profile! + if (empty($notices)) { + $isEditing = false; + } +} + +$profile = user_profile_get($userId); +$relationInfo = user_session_active() + ? user_relation_info($currentUserId, $profile['user_id']) + : []; + +$backgroundPath = sprintf('%s/backgrounds/original/%d.msz', MSZ_STORAGE, $profile['user_id']); + +if (is_file($backgroundPath)) { + $backgroundInfo = getimagesize($backgroundPath); + + if ($backgroundInfo) { + tpl_var('site_background', [ + 'url' => url('user-background', ['user' => $profile['user_id']]), + 'width' => $backgroundInfo[0], + 'height' => $backgroundInfo[1], + 'settings' => $profile['user_background_settings'], + ]); + } +} + +switch ($mode) { + default: + echo render_error(404); + return; + + case 'following': $followingIds = user_relation_users_from($userId, MSZ_USER_RELATION_FOLLOW); foreach ($followingIds as $user) { @@ -22,14 +283,6 @@ switch ($mode) { break; case 'followers': - $userId = (int)($_GET['u'] ?? 0); - - if (!user_exists($userId)) { - http_response_code(404); - echo tpl_render('user.notfound'); - break; - } - $followerIds = user_relation_users_to($userId, MSZ_USER_RELATION_FOLLOW); foreach ($followerIds as $user) { @@ -37,30 +290,8 @@ switch ($mode) { } break; - default: - $userId = user_find_for_profile($_GET['u'] ?? 0); - - if ($userId < 1) { - http_response_code(404); - echo tpl_render('user.notfound'); - break; - } - - $viewingAsGuest = user_session_current('user_id', 0) === 0; - $viewingOwnProfile = user_session_current('user_id', 0) === $userId; - $isRestricted = user_warning_check_restriction($userId); - $userPerms = perms_get_user(MSZ_PERMS_USER, user_session_current('user_id', 0)); - $canManageWarnings = perms_check($userPerms, MSZ_PERM_USER_MANAGE_WARNINGS); - $canEdit = !$isRestricted && user_session_active() && ( - $viewingOwnProfile || user_check_super($userId) || (perms_check($userPerms, MSZ_PERM_USER_MANAGE_USERS) && user_check_authority(user_session_current('user_id', 0), $userId)) - ); - $isEditing = $mode === 'edit'; - - if (!$canEdit && $isEditing) { - echo render_error(403); - break; - } - + case '': + $template = 'user.profile'; $warnings = $viewingAsGuest ? [] : user_warning_fetch( @@ -74,251 +305,24 @@ switch ($mode) { : MSZ_WARN_TYPES_VISIBLE_TO_PUBLIC ) ); - $notices = []; - if ($isEditing) { - $perms = [ - 'edit_profile' => perms_check($userPerms, MSZ_PERM_USER_EDIT_PROFILE), - 'edit_avatar' => perms_check($userPerms, MSZ_PERM_USER_CHANGE_AVATAR), - 'edit_background' => perms_check($userPerms, MSZ_PERM_USER_CHANGE_BACKGROUND), - 'edit_about' => perms_check($userPerms, MSZ_PERM_USER_EDIT_ABOUT), - 'edit_birthdate' => perms_check($userPerms, MSZ_PERM_USER_EDIT_BIRTHDATE), - 'edit_signature' => perms_check($userPerms, MSZ_PERM_USER_EDIT_SIGNATURE), - ]; - - tpl_vars([ - 'perms' => $perms, - 'guidelines' => [ - 'avatar' => $avatarProps = user_avatar_default_options(), - 'background' => $backgroundProps = user_background_default_options(), - ], - 'background_attachments' => MSZ_USER_BACKGROUND_ATTACHMENTS_NAMES, - ]); - - if (!empty($_POST)) { - if (!csrf_verify('profile', $_POST['csrf'] ?? '')) { - $notices[] = MSZ_TMP_USER_ERROR_STRINGS['csrf']; - } else { - if (!empty($_POST['profile']) && is_array($_POST['profile'])) { - if (!$perms['edit_profile']) { - $notices[] = MSZ_TMP_USER_ERROR_STRINGS['profile']['not-allowed']; - } else { - $setUserFieldErrors = user_profile_fields_set($userId, $_POST['profile']); - - if (count($setUserFieldErrors) > 0) { - foreach ($setUserFieldErrors as $name => $error) { - $notices[] = sprintf( - MSZ_TMP_USER_ERROR_STRINGS['profile'][$error] ?? MSZ_TMP_USER_ERROR_STRINGS['profile']['_'], - $name, - user_profile_field_get_display_name($name) - ); - } - } - } - } - - if (!empty($_POST['about']) && is_array($_POST['about'])) { - if (!$perms['edit_about']) { - $notices[] = MSZ_TMP_USER_ERROR_STRINGS['about']['not-allowed']; - } else { - $setAboutError = user_set_about_page( - $userId, - $_POST['about']['text'] ?? '', - (int)($_POST['about']['parser'] ?? MSZ_PARSER_PLAIN) - ); - - if ($setAboutError !== MSZ_E_USER_ABOUT_OK) { - $notices[] = sprintf( - MSZ_TMP_USER_ERROR_STRINGS['about'][$setAboutError] ?? MSZ_TMP_USER_ERROR_STRINGS['about']['_'], - MSZ_USER_ABOUT_MAX_LENGTH - ); - } - } - } - - if (!empty($_POST['signature']) && is_array($_POST['signature'])) { - if (!$perms['edit_signature']) { - $notices[] = MSZ_TMP_USER_ERROR_STRINGS['signature']['not-allowed']; - } else { - $setSignatureError = user_set_signature( - $userId, - $_POST['signature']['text'] ?? '', - (int)($_POST['signature']['parser'] ?? MSZ_PARSER_PLAIN) - ); - - if ($setSignatureError !== MSZ_E_USER_SIGNATURE_OK) { - $notices[] = sprintf( - MSZ_TMP_USER_ERROR_STRINGS['signature'][$setSignatureError] ?? MSZ_TMP_USER_ERROR_STRINGS['signature']['_'], - MSZ_USER_SIGNATURE_MAX_LENGTH - ); - } - } - } - - if (!empty($_POST['birthdate']) && is_array($_POST['birthdate'])) { - if (!$perms['edit_birthdate']) { - $notices[] = "You aren't allow to change your birthdate."; - } else { - $setBirthdate = user_set_birthdate( - $userId, - (int)($_POST['birthdate']['day'] ?? 0), - (int)($_POST['birthdate']['month'] ?? 0), - (int)($_POST['birthdate']['year'] ?? 0) - ); - - switch ($setBirthdate) { - case MSZ_E_USER_BIRTHDATE_USER: - $notices[] = 'Invalid user specified while setting birthdate?'; - break; - case MSZ_E_USER_BIRTHDATE_DATE: - $notices[] = 'The given birthdate is invalid.'; - break; - case MSZ_E_USER_BIRTHDATE_FAIL: - $notices[] = 'Failed to set birthdate.'; - break; - case MSZ_E_USER_BIRTHDATE_YEAR: - $notices[] = 'The given birth year is invalid.'; - break; - case MSZ_E_USER_BIRTHDATE_OK: - break; - default: - $notices[] = 'Something unexpected happened while setting your birthdate.'; - } - } - } - - if (!empty($_FILES['avatar'])) { - if (!empty($_POST['avatar']['delete'])) { - user_avatar_delete($userId); - } else { - if (!$perms['edit_avatar']) { - $notices[] = MSZ_TMP_USER_ERROR_STRINGS['avatar']['not-allowed']; - } elseif (!empty($_FILES['avatar']) - && is_array($_FILES['avatar']) - && !empty($_FILES['avatar']['name']['file'])) { - if ($_FILES['avatar']['error']['file'] !== UPLOAD_ERR_OK) { - $notices[] = sprintf( - MSZ_TMP_USER_ERROR_STRINGS['avatar']['upload'][$_FILES['avatar']['error']['file']] - ?? MSZ_TMP_USER_ERROR_STRINGS['avatar']['upload']['_'], - $_FILES['avatar']['error']['file'], - byte_symbol($avatarProps['max_size'], true), - $avatarProps['max_width'], - $avatarProps['max_height'] - ); - } else { - $setAvatar = user_avatar_set_from_path( - $userId, - $_FILES['avatar']['tmp_name']['file'], - $avatarProps - ); - - if ($setAvatar !== MSZ_USER_AVATAR_NO_ERRORS) { - $notices[] = sprintf( - MSZ_TMP_USER_ERROR_STRINGS['avatar']['set'][$setAvatar] - ?? MSZ_TMP_USER_ERROR_STRINGS['avatar']['set']['_'], - $setAvatar, - byte_symbol($avatarProps['max_size'], true), - $avatarProps['max_width'], - $avatarProps['max_height'] - ); - } - } - } - } - } - - if (!empty($_FILES['background'])) { - if ((int)($_POST['background']['attach'] ?? -1) === 0) { - user_background_delete($userId); - user_background_set_settings($userId, MSZ_USER_BACKGROUND_ATTACHMENT_NONE); - } else { - if (!$perms['edit_background']) { - $notices[] = MSZ_TMP_USER_ERROR_STRINGS['background']['not-allowed']; - } elseif (!empty($_FILES['background']) - && is_array($_FILES['background'])) { - if (!empty($_FILES['background']['name']['file'])) { - if ($_FILES['background']['error']['file'] !== UPLOAD_ERR_OK) { - $notices[] = sprintf( - MSZ_TMP_USER_ERROR_STRINGS['background']['upload'][$_FILES['background']['error']['file']] - ?? MSZ_TMP_USER_ERROR_STRINGS['background']['upload']['_'], - $_FILES['background']['error']['file'], - byte_symbol($backgroundProps['max_size'], true), - $backgroundProps['max_width'], - $backgroundProps['max_height'] - ); - } else { - $setBackground = user_background_set_from_path( - $userId, - $_FILES['background']['tmp_name']['file'], - $backgroundProps - ); - - if ($setBackground !== MSZ_USER_BACKGROUND_NO_ERRORS) { - $notices[] = sprintf( - MSZ_TMP_USER_ERROR_STRINGS['background']['set'][$setBackground] - ?? MSZ_TMP_USER_ERROR_STRINGS['background']['set']['_'], - $setBackground, - byte_symbol($backgroundProps['max_size'], true), - $backgroundProps['max_width'], - $backgroundProps['max_height'] - ); - } - } - } - - $backgroundSettings = in_array($_POST['background']['attach'] ?? '', MSZ_USER_BACKGROUND_ATTACHMENTS) - ? (int)($_POST['background']['attach']) - : MSZ_USER_BACKGROUND_ATTACHMENTS[0]; - - if (!empty($_POST['background']['attr']['blend'])) { - $backgroundSettings |= MSZ_USER_BACKGROUND_ATTRIBUTE_BLEND; - } - - if (!empty($_POST['background']['attr']['slide'])) { - $backgroundSettings |= MSZ_USER_BACKGROUND_ATTRIBUTE_SLIDE; - } - - user_background_set_settings($userId, $backgroundSettings); - } - } - } - } - - // If there are no notices, redirect to regular profile. - if (empty($notices)) { - header('Location: ' . url('user-profile', ['user' => $userId])); - return; - } - } - } - - $profile = user_profile_get($userId); - $backgroundPath = MSZ_STORAGE . "/backgrounds/original/{$profile['user_id']}.msz"; - - if (is_file($backgroundPath)) { - $backgroundInfo = getimagesize($backgroundPath); - - if ($backgroundInfo) { - tpl_var('site_background', [ - 'url' => url('user-background', ['user' => $userId]), - 'width' => $backgroundInfo[0], - 'height' => $backgroundInfo[1], - 'settings' => $profile['user_background_settings'], - ]); - } - } - - echo tpl_render('user.profile', [ - 'profile' => $profile, - 'profile_notices' => $notices, - 'can_edit' => $canEdit, - 'is_editing' => $isEditing, - 'warnings' => $warnings, - 'can_view_private_note' => $viewingOwnProfile, - 'can_manage_warnings' => $canManageWarnings, - 'is_restricted' => $isRestricted, + tpl_vars([ + 'profile_warnings' => $warnings, + 'prpfile_warnings_view_private' => $viewingOwnProfile, + 'profile_warnings_can_manage' => $canManageWarnings, 'profile_fields' => user_session_active() ? user_profile_fields_display($profile, !$isEditing) : [], - 'friend_info' => user_session_active() ? user_relation_info(user_session_current('user_id', 0), $profile['user_id']) : [], ]); break; } + +if (!empty($template)) { + echo tpl_render($template, [ + 'profile' => $profile, + 'profile_mode' => $mode, + 'profile_notices' => $notices, + 'profile_can_edit' => $canEdit, + 'profile_is_editing' => $isEditing, + 'profile_is_banned' => $isBanned, + 'profile_relation_info' => $relationInfo, + ]); +} diff --git a/src/url.php b/src/url.php index 3fc4cf0a..e74801e2 100644 --- a/src/url.php +++ b/src/url.php @@ -41,10 +41,13 @@ define('MSZ_URLS', [ 'forum-post-edit' => ['/forum/posting.php', ['p' => '', 'm' => 'edit']], 'user-profile' => ['/profile.php', ['u' => '']], - 'user-profile-edit' => ['/profile.php', ['u' => '', 'm' => 'edit']], + 'user-profile-following' => ['/profile.php', ['u' => '', 'm' => 'following']], + 'user-profile-followers' => ['/profile.php', ['u' => '', 'm' => 'followers']], + 'user-profile-edit' => ['/profile.php', ['u' => '', 'edit' => '1']], + 'user-account-standing' => ['/profile.php', ['u' => ''], 'account-standing'], + 'user-avatar' => ['/user-assets.php', ['u' => '', 'm' => 'avatar']], 'user-background' => ['/user-assets.php', ['u' => '', 'm' => 'background']], - 'user-account-standing' => ['/profile.php', ['u' => ''], 'account-standing'], 'user-relation-none' => ['/relations.php', ['u' => '', 'm' => '[MSZ_USER_RELATION_NONE]', 'c' => '{user_relation}']], 'user-relation-follow' => ['/relations.php', ['u' => '', 'm' => '[MSZ_USER_RELATION_FOLLOW]', 'c' => '{user_relation}']], diff --git a/templates/user/_layout/header.twig b/templates/user/_layout/header.twig index c024cf12..9457594a 100644 --- a/templates/user/_layout/header.twig +++ b/templates/user/_layout/header.twig @@ -5,7 +5,7 @@
- {% if is_editing and perms.edit_avatar %} + {% if profile_is_editing and perms.edit_avatar %}
- {% if friend_info|length > 0 and (friend_info.subject_relation is not null or friend_info.user_relation is not null) %} -
- {% if friend_info.subject_relation and friend_info.user_relation %} + {% if profile_relation_info|length > 0 and (profile_relation_info.subject_relation is not null or profile_relation_info.user_relation is not null) %} +
+ {% if profile_relation_info.subject_relation and profile_relation_info.user_relation %} Mutual Friends - {% elseif friend_info.user_relation %} + {% elseif profile_relation_info.user_relation %} You Follow - {% elseif friend_info.subject_relation %} + {% elseif profile_relation_info.subject_relation %} Follows You {% endif %}
@@ -61,20 +61,24 @@
- {% if is_editing %} - - Discard - Settings - {% elseif can_edit %} - Edit Profile - {% endif %} - - {% if current_user is defined and current_user.user_id != profile.user_id and not is_editing %} - {% if friend_info.user_relation == constant('MSZ_USER_RELATION_FOLLOW') %} - Unfollow - {% else %} - Follow + {% if profile_mode is empty %} + {% if profile_is_editing %} + + Discard + Settings + {% elseif profile_can_edit %} + Edit Profile {% endif %} + + {% if current_user is defined and current_user.user_id != profile.user_id and not profile_is_editing %} + {% if profile_relation_info.user_relation == constant('MSZ_USER_RELATION_FOLLOW') %} + Unfollow + {% else %} + Follow + {% endif %} + {% endif %} + {% else %} + Return {% endif %}
@@ -83,8 +87,13 @@ {% for stat in stats %} {% if stat.value|default(false) %} {% set is_date = stat.is_date|default(false) %} + {% set is_url = stat.url is defined %} - + {% if is_url %}{% else %}
{% endif %} {% endif %} {% endfor %}
diff --git a/templates/user/profile.twig b/templates/user/profile.twig index 9d42dce8..4545bc0c 100644 --- a/templates/user/profile.twig +++ b/templates/user/profile.twig @@ -22,10 +22,12 @@ { 'title': 'Following', 'value': profile.following_count, + 'url': url('user-profile-following', {'user': profile.user_id}), }, { 'title': 'Followers', 'value': profile.followers_count, + 'url': url('user-profile-followers', {'user': profile.user_id}), }, { 'title': 'Topics', @@ -46,9 +48,8 @@ ] %} {% block content %} - {% if is_editing %} -
- {{ input_hidden('user', profile.user_id) }} + {% if profile_is_editing %} + {{ input_csrf('profile') }} {% if perms.edit_avatar %} @@ -73,7 +74,7 @@ {% include 'user/_layout/header.twig' %} - {% if is_editing %} + {% if profile_is_editing %}
  • General
  • @@ -113,9 +114,9 @@ {% endif %}
    - {% set show_profile_fields = is_editing ? perms.edit_profile : profile_fields|default([])|length > 0 %} - {% set show_background_settings = is_editing and perms.edit_background %} - {% set show_birthdate = is_editing and perms.edit_birthdate %} + {% set show_profile_fields = profile_is_editing ? perms.edit_profile : profile_fields|default([])|length > 0 %} + {% set show_background_settings = profile_is_editing and perms.edit_background %} + {% set show_birthdate = profile_is_editing and perms.edit_birthdate %} {% set show_sidebar = current_user is not defined or show_profile_fields or show_background_settings %} {% if show_sidebar %} @@ -154,7 +155,7 @@ {{ data.name }}
    - {% if is_editing %} + {% if profile_is_editing %} {{ input_text('profile[' ~ name ~ ']', 'profile__accounts__input', profile['user_' ~ name], data.type|default('text')) }} {% else %}
    - {% if (is_editing and perms.edit_about) or profile.user_about_content|length > 0 %} + {% if (profile_is_editing and perms.edit_about) or profile.user_about_content|length > 0 %}
    {{ container_title('About ' ~ profile.username) }} - {% if is_editing %} + {% if profile_is_editing %}
    {{ input_select('about[parser]', constant('MSZ_PARSERS_NAMES'), profile.user_about_parser, '', '', false, 'profile__about__select') }}
    {% else %} -
    +
    {{ profile.user_about_content|escape|parse_text(profile.user_about_parser)|raw }}
    {% endif %}
    {% endif %} - {% if (is_editing and perms.edit_signature) or profile.user_signature_content|length > 0 %} + {% if (profile_is_editing and perms.edit_signature) or profile.user_signature_content|length > 0 %}
    {{ container_title('Signature') }} - {% if is_editing %} + {% if profile_is_editing %}
    {{ input_select('signature[parser]', constant('MSZ_PARSERS_NAMES'), profile.user_signature_parser, '', '', false, 'profile__signature__select') }}
    {% else %} -
    +
    {{ profile.user_signature_content|escape|parse_text(profile.user_signature_parser)|raw }}
    {% endif %}
    {% endif %} - {% if warnings|length > 0 %} + {% if profile_warnings|length > 0 %}
    - {{ container_title('Account Standing', false, can_manage_warnings ? '/manage/users.php?v=warnings&u=' ~ profile.user_id : '') }} + {{ container_title('Account Standing', false, profile_warnings_can_manage ? '/manage/users.php?v=warnings&u=' ~ profile.user_id : '') }}
    - {% if can_manage_warnings %} + {% if profile_warnings_can_manage %}
    @@ -289,14 +290,14 @@
    - {% for warning in warnings %} - {{ user_profile_warning(warning, can_view_private_note, can_manage_warnings, can_manage_warnings ? csrf_token('warning-delete[%d]'|format(warning.warning_id)) : '') }} + {% for warning in profile_warnings %} + {{ user_profile_warning(warning, prpfile_warnings_view_private, profile_warnings_can_manage, profile_warnings_can_manage ? csrf_token('warning-delete[%d]'|format(warning.warning_id)) : '') }} {% endfor %}
    {% endif %}
    - {% if is_editing %} + {% if profile_is_editing %}