From c9d502320f5eb46f86cb8a034e19e312854437ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Wed, 24 May 2017 00:02:30 -0400 Subject: [PATCH] file.delete method --- src/controllers/accounts/edit.js | 105 +++++++++++++++---------------- src/controllers/admin/uploads.js | 22 ++----- src/controllers/uploads.js | 12 +--- src/file.js | 12 +++- src/groups/cover.js | 11 +--- src/topics/thumb.js | 15 +---- src/user/picture.js | 18 +----- 7 files changed, 76 insertions(+), 119 deletions(-) diff --git a/src/controllers/accounts/edit.js b/src/controllers/accounts/edit.js index eca16192c9..d51b1f857e 100644 --- a/src/controllers/accounts/edit.js +++ b/src/controllers/accounts/edit.js @@ -1,8 +1,6 @@ 'use strict'; var async = require('async'); -var fs = require('fs'); -var winston = require('winston'); var db = require('../../database'); var user = require('../../user'); @@ -12,49 +10,51 @@ var helpers = require('../helpers'); var groups = require('../../groups'); var accountHelpers = require('./helpers'); var privileges = require('../../privileges'); +var file = require('../../file'); -var editController = {}; +var editController = module.exports; editController.get = function (req, res, callback) { - accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, function (err, userData) { - if (err || !userData) { - return callback(err); - } - - userData.maximumSignatureLength = parseInt(meta.config.maximumSignatureLength, 10) || 255; - userData.maximumAboutMeLength = parseInt(meta.config.maximumAboutMeLength, 10) || 1000; - userData.maximumProfileImageSize = parseInt(meta.config.maximumProfileImageSize, 10); - userData.allowProfileImageUploads = parseInt(meta.config.allowProfileImageUploads, 10) === 1; - userData.allowAccountDelete = parseInt(meta.config.allowAccountDelete, 10) === 1; - userData.profileImageDimension = parseInt(meta.config.profileImageDimension, 10) || 200; - - userData.groups = userData.groups.filter(function (group) { - return group && group.userTitleEnabled && !groups.isPrivilegeGroup(group.name) && group.name !== 'registered-users'; - }); - userData.groups.forEach(function (group) { - group.selected = group.name === userData.groupTitle; - }); - - userData.title = '[[pages:account/edit, ' + userData.username + ']]'; - userData.breadcrumbs = helpers.buildBreadcrumbs([ - { - text: userData.username, - url: '/user/' + userData.userslug, - }, - { - text: '[[user:edit]]', - }, - ]); - userData.editButtons = []; - - plugins.fireHook('filter:user.account.edit', userData, function (err, userData) { - if (err) { - return callback(err); + async.waterfall([ + function (next) { + accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next); + }, + function (userData, next) { + if (!userData) { + return callback(); } - + userData.maximumSignatureLength = parseInt(meta.config.maximumSignatureLength, 10) || 255; + userData.maximumAboutMeLength = parseInt(meta.config.maximumAboutMeLength, 10) || 1000; + userData.maximumProfileImageSize = parseInt(meta.config.maximumProfileImageSize, 10); + userData.allowProfileImageUploads = parseInt(meta.config.allowProfileImageUploads, 10) === 1; + userData.allowAccountDelete = parseInt(meta.config.allowAccountDelete, 10) === 1; + userData.profileImageDimension = parseInt(meta.config.profileImageDimension, 10) || 200; + + userData.groups = userData.groups.filter(function (group) { + return group && group.userTitleEnabled && !groups.isPrivilegeGroup(group.name) && group.name !== 'registered-users'; + }); + userData.groups.forEach(function (group) { + group.selected = group.name === userData.groupTitle; + }); + + userData.title = '[[pages:account/edit, ' + userData.username + ']]'; + userData.breadcrumbs = helpers.buildBreadcrumbs([ + { + text: userData.username, + url: '/user/' + userData.userslug, + }, + { + text: '[[user:edit]]', + }, + ]); + userData.editButtons = []; + + plugins.fireHook('filter:user.account.edit', userData, next); + }, + function (userData) { res.render('account/edit', userData); - }); - }); + }, + ], callback); }; editController.password = function (req, res, next) { @@ -115,14 +115,11 @@ function getUserData(req, next, callback) { } db.getObjectField('user:' + userData.uid, 'password', next); }, - ], function (err, password) { - if (err) { - return callback(err); - } - - userData.hasPassword = !!password; - callback(null, userData); - }); + function (password, next) { + userData.hasPassword = !!password; + next(null, userData); + }, + ], callback); } editController.uploadPicture = function (req, res, next) { @@ -147,11 +144,7 @@ editController.uploadPicture = function (req, res, next) { user.uploadPicture(updateUid, userPhoto, next); }, ], function (err, image) { - fs.unlink(userPhoto.path, function (err) { - if (err) { - winston.warn('[user/picture] Unable to delete picture ' + userPhoto.path, err); - } - }); + file.delete(userPhoto.path); if (err) { return next(err); } @@ -165,11 +158,13 @@ editController.uploadPicture = function (req, res, next) { editController.uploadCoverPicture = function (req, res, next) { var params = JSON.parse(req.body.params); + var coverPhoto = req.files.files[0]; user.updateCoverPicture({ - file: req.files.files[0], + file: coverPhoto, uid: params.uid, }, function (err, image) { + file.delete(coverPhoto.path); if (err) { return next(err); } @@ -179,5 +174,3 @@ editController.uploadCoverPicture = function (req, res, next) { }]); }); }; - -module.exports = editController; diff --git a/src/controllers/admin/uploads.js b/src/controllers/admin/uploads.js index b23f67ea0a..a040f12ba2 100644 --- a/src/controllers/admin/uploads.js +++ b/src/controllers/admin/uploads.js @@ -1,10 +1,8 @@ 'use strict'; -var fs = require('fs'); var path = require('path'); var async = require('async'); var nconf = require('nconf'); -var winston = require('winston'); var mime = require('mime'); var meta = require('../../meta'); @@ -23,7 +21,7 @@ uploadsController.uploadCategoryPicture = function (req, res, next) { try { params = JSON.parse(req.body.params); } catch (e) { - deleteTempFile(uploadedFile.path); + file.delete(uploadedFile.path); return next(new Error('[[error:invalid-json]]')); } @@ -39,7 +37,7 @@ uploadsController.uploadFavicon = function (req, res, next) { if (validateUpload(req, res, next, uploadedFile, allowedTypes)) { file.saveFileToLocal('favicon.ico', 'system', uploadedFile.path, function (err, image) { - deleteTempFile(uploadedFile.path); + file.delete(uploadedFile.path); if (err) { return next(err); } @@ -72,7 +70,7 @@ uploadsController.uploadTouchIcon = function (req, res, next) { }), ], next); }, function (err) { - deleteTempFile(uploadedFile.path); + file.delete(uploadedFile.path); if (err) { return next(err); @@ -104,7 +102,7 @@ uploadsController.uploadSound = function (req, res, next) { meta.sounds.build(next); }, ], function (err) { - deleteTempFile(uploadedFile.path); + file.delete(uploadedFile.path); if (err) { return next(err); } @@ -131,7 +129,7 @@ function upload(name, req, res, next) { function validateUpload(req, res, next, uploadedFile, allowedTypes) { if (allowedTypes.indexOf(uploadedFile.type) === -1) { - deleteTempFile(uploadedFile.path); + file.delete(uploadedFile.path); res.json({ error: '[[error:invalid-image-type, ' + allowedTypes.join(', ') + ']]' }); return false; } @@ -149,18 +147,10 @@ function uploadImage(filename, folder, uploadedFile, req, res, next) { } }, ], function (err, image) { - deleteTempFile(uploadedFile.path); + file.delete(uploadedFile.path); if (err) { return next(err); } res.json([{ name: uploadedFile.name, url: image.url.startsWith('http') ? image.url : nconf.get('relative_path') + image.url }]); }); } - -function deleteTempFile(path) { - fs.unlink(path, function (err) { - if (err) { - winston.error(err); - } - }); -} diff --git a/src/controllers/uploads.js b/src/controllers/uploads.js index 39db4bc00b..cae09a5043 100644 --- a/src/controllers/uploads.js +++ b/src/controllers/uploads.js @@ -1,11 +1,9 @@ 'use strict'; -var fs = require('fs'); var path = require('path'); var async = require('async'); var nconf = require('nconf'); var validator = require('validator'); -var winston = require('winston'); var meta = require('../meta'); var file = require('../file'); @@ -242,13 +240,9 @@ function saveFileToLocal(uploadedFile, callback) { } function deleteTempFiles(files) { - async.each(files, function (file, next) { - fs.unlink(file.path, function (err) { - if (err) { - winston.error(err); - } - next(); - }); + async.each(files, function (fileObj, next) { + file.delete(fileObj.path); + next(); }); } diff --git a/src/file.js b/src/file.js index a936a4a43b..31806d6252 100644 --- a/src/file.js +++ b/src/file.js @@ -115,6 +115,16 @@ file.existsSync = function (path) { return true; }; +file.delete = function (path) { + if (path) { + fs.unlink(path, function (err) { + if (err) { + winston.error(err); + } + }); + } +}; + file.link = function link(filePath, destPath, cb) { if (process.platform === 'win32') { fs.link(filePath, destPath, cb); @@ -178,5 +188,3 @@ file.walk = function (dir, done) { }); }); }; - -module.exports = file; diff --git a/src/groups/cover.js b/src/groups/cover.js index 99386879c1..66cac228bf 100644 --- a/src/groups/cover.js +++ b/src/groups/cover.js @@ -1,14 +1,13 @@ 'use strict'; var async = require('async'); -var fs = require('fs'); var path = require('path'); var Jimp = require('jimp'); var mime = require('mime'); -var winston = require('winston'); var db = require('../database'); var image = require('../image'); +var file = require('../file'); var uploadsController = require('../controllers/uploads'); module.exports = function (Groups) { @@ -70,12 +69,8 @@ module.exports = function (Groups) { } }, ], function (err) { - fs.unlink(tempPath, function (unlinkErr) { - if (unlinkErr) { - winston.error(unlinkErr); - } - callback(err, { url: url }); - }); + file.delete(tempPath); + callback(err, { url: url }); }); }; diff --git a/src/topics/thumb.js b/src/topics/thumb.js index 574ca302ad..92963f70df 100644 --- a/src/topics/thumb.js +++ b/src/topics/thumb.js @@ -3,7 +3,6 @@ var async = require('async'); var nconf = require('nconf'); -var winston = require('winston'); var path = require('path'); var fs = require('fs'); var request = require('request'); @@ -64,25 +63,15 @@ module.exports = function (Topics) { plugins.fireHook('filter:uploadImage', { image: { path: pathToUpload, name: '' }, uid: data.uid }, next); }, function (uploadedFile, next) { - deleteFile(pathToUpload); + file.delete(pathToUpload); data.thumb = uploadedFile.url; next(); }, ], function (err) { if (err) { - deleteFile(pathToUpload); + file.delete(pathToUpload); } callback(err); }); }; - - function deleteFile(path) { - if (path) { - fs.unlink(path, function (err) { - if (err) { - winston.error(err); - } - }); - } - } }; diff --git a/src/user/picture.js b/src/user/picture.js index dfe0aa72bb..78915691d2 100644 --- a/src/user/picture.js +++ b/src/user/picture.js @@ -1,8 +1,6 @@ 'use strict'; var async = require('async'); -var fs = require('fs'); -var winston = require('winston'); var request = require('request'); var mime = require('mime'); @@ -106,7 +104,7 @@ module.exports = function (User) { } }, ], function (err) { - deleteFile(picture.path); + file.delete(picture.path); callback(err, { url: url, }); @@ -175,7 +173,7 @@ module.exports = function (User) { }, next); }, ], function (err) { - deleteFile(picture.path); + file.delete(picture.path); callback(err, uploadedImage); }); }; @@ -190,7 +188,7 @@ module.exports = function (User) { if (err) { return callback(err); } - deleteFile(path); + file.delete(path); callback(null, newPath); }); } @@ -230,16 +228,6 @@ module.exports = function (User) { ], callback); } - function deleteFile(path) { - if (path) { - fs.unlink(path, function (err) { - if (err) { - winston.error(err); - } - }); - } - } - User.removeCoverPicture = function (data, callback) { db.deleteObjectFields('user:' + data.uid, ['cover:url', 'cover:position'], callback); };