|
|
|
@ -4,10 +4,12 @@ var async = require('async'),
|
|
|
|
|
path = require('path'),
|
|
|
|
|
fs = require('fs'),
|
|
|
|
|
nconf = require('nconf'),
|
|
|
|
|
crypto = require('crypto'),
|
|
|
|
|
winston = require('winston'),
|
|
|
|
|
request = require('request'),
|
|
|
|
|
mime = require('mime'),
|
|
|
|
|
|
|
|
|
|
uploadsController = require('../controllers/uploads'),
|
|
|
|
|
plugins = require('../plugins'),
|
|
|
|
|
file = require('../file'),
|
|
|
|
|
image = require('../image'),
|
|
|
|
@ -51,7 +53,7 @@ module.exports = function(User) {
|
|
|
|
|
next();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
], function(err, result) {
|
|
|
|
|
], function(err) {
|
|
|
|
|
function done(err, image) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
@ -99,7 +101,7 @@ module.exports = function(User) {
|
|
|
|
|
return callback(new Error('[[error:no-plugin]]'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
request.head(url, function(err, res, body) {
|
|
|
|
|
request.head(url, function(err, res) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
@ -126,4 +128,74 @@ module.exports = function(User) {
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
User.updateCoverPosition = function(uid, position, callback) {
|
|
|
|
|
User.setUserField(uid, 'cover:position', position, callback);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
User.updateCoverPicture = function(data, callback) {
|
|
|
|
|
var tempPath, url, md5sum;
|
|
|
|
|
|
|
|
|
|
if (!data.imageData && data.position) {
|
|
|
|
|
return User.updateCoverPosition(data.uid, data.position, callback);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async.series([
|
|
|
|
|
function(next) {
|
|
|
|
|
if (data.file) {
|
|
|
|
|
return next();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
md5sum = crypto.createHash('md5');
|
|
|
|
|
md5sum.update(data.imageData);
|
|
|
|
|
md5sum = md5sum.digest('hex');
|
|
|
|
|
next();
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
if (data.file) {
|
|
|
|
|
return next();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tempPath = path.join(nconf.get('base_dir'), nconf.get('upload_path'), md5sum);
|
|
|
|
|
var buffer = new Buffer(data.imageData.slice(data.imageData.indexOf('base64') + 7), 'base64');
|
|
|
|
|
|
|
|
|
|
fs.writeFile(tempPath, buffer, {
|
|
|
|
|
encoding: 'base64'
|
|
|
|
|
}, next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
uploadsController.uploadUserCover({
|
|
|
|
|
name: 'profileCover',
|
|
|
|
|
path: data.file ? data.file : tempPath,
|
|
|
|
|
uid: data.uid
|
|
|
|
|
}, function(err, uploadData) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return next(err);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
url = uploadData.url;
|
|
|
|
|
next();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
User.setUserField(data.uid, 'cover:url', url, next);
|
|
|
|
|
},
|
|
|
|
|
function(next) {
|
|
|
|
|
require('fs').unlink(data.file ? data.file : tempPath, next);
|
|
|
|
|
}
|
|
|
|
|
], function(err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return callback(err);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (data.position) {
|
|
|
|
|
User.updateCoverPosition(data.uid, data.position, function(err) {
|
|
|
|
|
callback(err, {url: url});
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
callback(err, {url: url});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
};
|