From f8d341014acd785d7081689afccde017cb3cecee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sat, 20 Jul 2019 23:18:45 -0400 Subject: [PATCH] fix: #7763, parse about me on all profile pages --- src/controllers/accounts/helpers.js | 26 +++++++++++++++++++++++--- src/controllers/accounts/profile.js | 9 --------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/controllers/accounts/helpers.js b/src/controllers/accounts/helpers.js index 9e46fa3e63..6ebd6821a6 100644 --- a/src/controllers/accounts/helpers.js +++ b/src/controllers/accounts/helpers.js @@ -12,10 +12,12 @@ var plugins = require('../../plugins'); var meta = require('../../meta'); var utils = require('../../utils'); var privileges = require('../../privileges'); +const translator = require('../../translator'); var helpers = module.exports; helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { + let results; async.waterfall([ function (next) { user.getUidByUserslug(userslug, next); @@ -113,11 +115,14 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { }, }, next); }, - function (results, next) { + function (_results, next) { + results = _results; if (!results.userData) { return callback(new Error('[[error:invalid-uid]]')); } - + parseAboutMe(results.userData, next); + }, + function (next) { var userData = results.userData; var userSettings = results.userSettings; var isAdmin = results.isAdmin; @@ -192,7 +197,6 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { userData.fullname = validator.escape(String(userData.fullname || '')); userData.location = validator.escape(String(userData.location || '')); userData.signature = validator.escape(String(userData.signature || '')); - userData.aboutme = validator.escape(String(userData.aboutme || '')); userData.birthday = validator.escape(String(userData.birthday || '')); userData.moderationNote = validator.escape(String(userData.moderationNote || '')); @@ -211,6 +215,22 @@ helpers.getUserDataByUserSlug = function (userslug, callerUID, callback) { ], callback); }; +function parseAboutMe(userData, callback) { + if (!userData.aboutme) { + return callback(); + } + userData.aboutme = validator.escape(String(userData.aboutme || '')); + async.waterfall([ + function (next) { + plugins.fireHook('filter:parse.aboutme', userData.aboutme, next); + }, + function (aboutme, next) { + userData.aboutmeParsed = translator.escape(aboutme); + next(); + }, + ], callback); +} + function filterLinks(links, states) { return links.filter(function (link, index) { // "public" is the old property, if visibility is defined, discard `public` diff --git a/src/controllers/accounts/profile.js b/src/controllers/accounts/profile.js index 7d8b65131a..f84d6107f5 100644 --- a/src/controllers/accounts/profile.js +++ b/src/controllers/accounts/profile.js @@ -12,7 +12,6 @@ var meta = require('../../meta'); var accountHelpers = require('./helpers'); var helpers = require('../helpers'); var messaging = require('../../messaging'); -var translator = require('../../translator'); var utils = require('../../utils'); var profileController = module.exports; @@ -61,13 +60,6 @@ profileController.get = function (req, res, callback) { signature: function (next) { posts.parseSignature(userData, req.uid, next); }, - aboutme: function (next) { - if (userData.aboutme) { - plugins.fireHook('filter:parse.aboutme', userData.aboutme, next); - } else { - next(); - } - }, }, next); }, function (results, next) { @@ -79,7 +71,6 @@ profileController.get = function (req, res, callback) { userData.latestPosts = results.latestPosts; userData.bestPosts = results.bestPosts; userData.hasPrivateChat = results.hasPrivateChat; - userData.aboutme = translator.escape(results.aboutme); userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username }]); userData.title = userData.username; userData.allowCoverPicture = !userData.isSelf || !!meta.config['reputation:disabled'] || userData.reputation >= meta.config['min:rep:cover-picture'];