@ -5,17 +5,18 @@ var user = require('./../user.js'),
utils = require ( './../../public/src/utils.js' ) ,
path = require ( 'path' ) ,
winston = require ( 'winston' ) ,
nconf = require ( 'nconf' ) ;
nconf = require ( 'nconf' ) ,
meta = require ( './../meta' ) ;
( function ( User ) {
User . create _routes = function ( app ) {
( function ( User ) {
User . create _routes = function ( app ) {
app . get ( '/uid/:uid' , function ( req , res ) {
app . get ( '/uid/:uid' , function ( req , res ) {
if ( ! req . params . uid )
return res . redirect ( '/404' ) ;
user . getUserData ( req . params . uid , function ( err , data ) {
user . getUserData ( req . params . uid , function ( err , data ) {
if ( data ) {
res . send ( data ) ;
} else {
@ -24,148 +25,162 @@ var user = require('./../user.js'),
} ) ;
}
} ) ;
} ) ;
app . get ( '/users' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users" , "users" ) + templates [ 'footer' ] ) ;
app . namespace ( '/users' , function ( ) {
app . get ( '' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users" , "users" ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/users/latest' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/latest" , "users" ) + templates [ 'footer' ] ) ;
app . get ( '/latest' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/latest" , "users" ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/users/sort-posts' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/sort-posts" , "users" ) + templates [ 'footer' ] ) ;
app . get ( '/sort-posts' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/sort-posts" , "users" ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/users/sort-reputation' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/sort-reputation" , "users" ) + templates [ 'footer' ] ) ;
app . get ( '/sort-reputation' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/sort-reputation" , "users" ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/users/search' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/search" , "users" ) + templates [ 'footer' ] ) ;
app . get ( '/online' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/online" , "users" ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/user/:userslug' , function ( req , res , next ) {
if ( ! req . params . userslug ) {
next ( ) ;
return ;
}
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
if ( ! uid ) {
return next ( ) ;
}
app . get ( '/search' , function ( req , res ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug , 'account' ) + templates [ 'footer' ] ) ;
} , function ( err , header ) {
res . send ( header + app . create _route ( "users/search" , "users" ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/user/:userslug/edit' , function ( req , res ) {
app . namespace ( '/user' , function ( ) {
app . get ( '/:userslug' , function ( req , res , next ) {
if ( ! req . user )
return res . redirect ( '/403' ) ;
if ( ! req . params . userslug ) {
next ( ) ;
return ;
}
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
if ( ! uid ) {
return next ( ) ;
}
user . getUserField ( req . user . uid , 'userslug' , function ( err , userslug ) {
if ( req . params . userslug && userslug === req . params . userslug ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug + '/edit' , 'accoun tedi t') + templates [ 'footer' ] ) ;
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug , 'accoun t') + templates [ 'footer' ] ) ;
} ) ;
} else {
return res . redirect ( '/404' ) ;
}
} ) ;
} ) ;
} ) ;
app . get ( '/user/:userslug/settings' , function ( req , res ) {
app . get ( '/:userslug/edit' , function ( req , res ) {
if ( ! req . user )
return res . redirect ( '/403' ) ;
if ( ! req . user )
return res . redirect ( '/403' ) ;
user . getUserField ( req . user . uid , 'userslug' , function ( err , userslug ) {
if ( req . params . userslug && userslug === req . params . userslug ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug + '/settings' , 'accountsettings' ) + templates [ 'footer' ] ) ;
} )
} else {
return res . redirect ( '/404' ) ;
}
user . getUserField ( req . user . uid , 'userslug' , function ( err , userslug ) {
if ( req . params . userslug && userslug === req . params . userslug ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug + '/edit' , 'accountedit' ) + templates [ 'footer' ] ) ;
} ) ;
} else {
return res . redirect ( '/404' ) ;
}
} ) ;
} ) ;
} ) ;
app . post ( '/user/uploadpicture' , function ( req , res ) {
if ( ! req . user )
return res . redirect ( '/403' ) ;
app . get ( '/:userslug/settings' , function ( req , res ) {
if ( req . files . userPhoto . size > 262144 ) {
res . send ( {
error : 'Images must be smaller than 256kb!'
if ( ! req . user )
return res . redirect ( '/403' ) ;
user . getUserField ( req . user . uid , 'userslug' , function ( err , userslug ) {
if ( req . params . userslug && userslug === req . params . userslug ) {
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug + '/settings' , 'accountsettings' ) + templates [ 'footer' ] ) ;
} )
} else {
return res . redirect ( '/404' ) ;
}
} ) ;
return ;
}
} ) ;
var allowedTypes = [ 'image/png' , 'image/jpeg' , 'image/jpg' , 'image/gif' ] ;
app . post ( '/uploadpicture' , function ( req , res ) {
if ( ! req . user )
return res . redirect ( '/403' ) ;
if ( allowedTypes . indexOf ( req . files . userPhoto . type ) === - 1 ) {
res . send ( {
error : 'Allowed image types are png, jpg and gif!'
} ) ;
return ;
}
var uploadSize = meta . config . maximumProfileImageSize || 256 ;
user . getUserField ( req . user . uid , 'uploadedpicture' , function ( err , oldpicture ) {
if ( ! oldpicture ) {
uploadUserPicture ( req . user . uid , path . extname ( req . files . userPhoto . name ) , req . files . userPhoto . path , res ) ;
if ( req . files . userPhoto . size > uploadSize * 1024 ) {
res . send ( {
error : 'Images must be smaller than ' + uploadSize + ' kb!'
} ) ;
return ;
}
var a bsolutePath = path . join ( process . cwd ( ) , nconf . get ( 'upload_path' ) , path . basename ( oldpicture ) ) ;
var a llowedTypes = [ 'image/png' , 'image/jpeg' , 'image/jpg' , 'image/gif' ] ;
fs . unlink ( absolutePath , function ( err ) {
if ( err ) {
winston . err ( err ) ;
if ( allowedTypes . indexOf ( req . files . userPhoto . type ) === - 1 ) {
res . send ( {
error : 'Allowed image types are png, jpg and gif!'
} ) ;
return ;
}
user . getUserField ( req . user . uid , 'uploadedpicture' , function ( err , oldpicture ) {
if ( ! oldpicture ) {
uploadUserPicture ( req . user . uid , path . extname ( req . files . userPhoto . name ) , req . files . userPhoto . path , res ) ;
return ;
}
uploadUserPicture ( req . user . uid , path . extname ( req . files . userPhoto . name ) , req . files . userPhoto . path , res ) ;
var absolutePath = path . join ( process . cwd ( ) , nconf . get ( 'upload_path' ) , path . basename ( oldpicture ) ) ;
fs . unlink ( absolutePath , function ( err ) {
if ( err ) {
winston . err ( err ) ;
}
uploadUserPicture ( req . user . uid , path . extname ( req . files . userPhoto . name ) , req . files . userPhoto . path , res ) ;
} ) ;
} ) ;
} ) ;
} ) ;
@ -186,7 +201,7 @@ var user = require('./../user.js'),
var is = fs . createReadStream ( tempPath ) ;
var os = fs . createWriteStream ( uploadPath ) ;
is . on ( 'end' , function ( ) {
is . on ( 'end' , function ( ) {
fs . unlinkSync ( tempPath ) ;
var imageUrl = nconf . get ( 'upload_url' ) + filename ;
@ -199,7 +214,7 @@ var user = require('./../user.js'),
dstPath : uploadPath ,
width : 128 ,
height : 128
} , function ( err , stdout , stderr ) {
} , function ( err , stdout , stderr ) {
if ( err ) {
winston . err ( err ) ;
}
@ -210,7 +225,7 @@ var user = require('./../user.js'),
} ) ;
} ) ;
os . on ( 'error' , function ( err ) {
os . on ( 'error' , function ( err ) {
fs . unlinkSync ( tempPath ) ;
winston . err ( err ) ;
} ) ;
@ -218,12 +233,12 @@ var user = require('./../user.js'),
is . pipe ( os ) ;
}
app . get ( '/user/:userslug/following' , function ( req , res ) {
app . get ( '/user/:userslug/following' , function ( req , res ) {
if ( ! req . user )
return res . redirect ( '/403' ) ;
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
if ( ! uid ) {
res . redirect ( '/404' ) ;
return ;
@ -232,18 +247,18 @@ var user = require('./../user.js'),
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug + '/following' , 'following' ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/user/:userslug/followers' , function ( req , res ) {
app . get ( '/user/:userslug/followers' , function ( req , res ) {
if ( ! req . user )
return res . redirect ( '/403' ) ;
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
if ( ! uid ) {
res . redirect ( '/404' ) ;
return ;
@ -251,18 +266,18 @@ var user = require('./../user.js'),
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug + '/followers' , 'followers' ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/user/:userslug/favourites' , function ( req , res ) {
app . get ( '/user/:userslug/favourites' , function ( req , res ) {
if ( ! req . user )
return res . redirect ( '/403' ) ;
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
if ( ! uid ) {
res . redirect ( '/404' ) ;
return ;
@ -270,18 +285,18 @@ var user = require('./../user.js'),
app . build _header ( {
req : req ,
res : res
} , function ( err , header ) {
} , function ( err , header ) {
res . send ( header + app . create _route ( 'user/' + req . params . userslug + '/favourites' , 'favourites' ) + templates [ 'footer' ] ) ;
} ) ;
} ) ;
} ) ;
app . get ( '/api/user/:userslug/following' , function ( req , res ) {
app . get ( '/api/user/:userslug/following' , function ( req , res ) {
var callerUID = req . user ? req . user . uid : '0' ;
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
if ( userData ) {
user . getFollowing ( userData . uid , function ( followingData ) {
user . getFollowing ( userData . uid , function ( followingData ) {
userData . following = followingData ;
userData . followingCount = followingData . length ;
res . json ( userData ) ;
@ -295,12 +310,12 @@ var user = require('./../user.js'),
} ) ;
} ) ;
app . get ( '/api/user/:userslug/followers' , function ( req , res ) {
app . get ( '/api/user/:userslug/followers' , function ( req , res ) {
var callerUID = req . user ? req . user . uid : '0' ;
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
if ( userData ) {
user . getFollowers ( userData . uid , function ( followersData ) {
user . getFollowers ( userData . uid , function ( followersData ) {
userData . followers = followersData ;
userData . followersCount = followersData . length ;
res . json ( userData ) ;
@ -313,18 +328,18 @@ var user = require('./../user.js'),
} ) ;
} ) ;
app . get ( '/api/user/:userslug/edit' , function ( req , res ) {
app . get ( '/api/user/:userslug/edit' , function ( req , res ) {
var callerUID = req . user ? req . user . uid : '0' ;
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
res . json ( userData ) ;
} ) ;
} ) ;
app . get ( '/api/user/:userslug/settings' , function ( req , res , next ) {
app . get ( '/api/user/:userslug/settings' , function ( req , res , next ) {
var callerUID = req . user ? req . user . uid : '0' ;
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
if ( ! uid ) {
res . json ( 404 , {
error : 'User not found!'
@ -339,8 +354,8 @@ var user = require('./../user.js'),
return ;
}
user . getUserFields ( uid , [ 'username' , 'userslug' , 'showemail' ] , function ( err , userData ) {
user . getUserFields ( uid , [ 'username' , 'userslug' , 'showemail' ] , function ( err , userData ) {
if ( err )
return next ( err ) ;
@ -359,10 +374,10 @@ var user = require('./../user.js'),
} ) ;
} ) ;
app . get ( '/api/user/:userslug/favourites' , function ( req , res , next ) {
app . get ( '/api/user/:userslug/favourites' , function ( req , res , next ) {
var callerUID = req . user ? req . user . uid : '0' ;
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
user . get _uid _by _userslug ( req . params . userslug , function ( err , uid ) {
if ( ! uid ) {
res . json ( 404 , {
error : 'User not found!'
@ -377,12 +392,12 @@ var user = require('./../user.js'),
return ;
}
user . getUserFields ( uid , [ 'username' , 'userslug' ] , function ( err , userData ) {
user . getUserFields ( uid , [ 'username' , 'userslug' ] , function ( err , userData ) {
if ( err )
return next ( err ) ;
if ( userData ) {
posts . getFavourites ( uid , function ( err , posts ) {
posts . getFavourites ( uid , function ( err , posts ) {
if ( err )
return next ( err ) ;
userData . posts = posts ;
@ -398,15 +413,15 @@ var user = require('./../user.js'),
} ) ;
} ) ;
app . get ( '/api/user/:userslug' , function ( req , res ) {
app . get ( '/api/user/:userslug' , function ( req , res ) {
var callerUID = req . user ? req . user . uid : '0' ;
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
getUserDataByUserSlug ( req . params . userslug , callerUID , function ( userData ) {
if ( userData ) {
user . isFollowing ( callerUID , userData . theirid , function ( isFollowing ) {
posts . getPostsByUid ( userData . theirid , 0 , 9 , function ( posts ) {
user . isFollowing ( callerUID , userData . theirid , function ( isFollowing ) {
posts . getPostsByUid ( userData . theirid , 0 , 9 , function ( posts ) {
userData . posts = posts . filter ( function ( p ) {
userData . posts = posts . filter ( function ( p ) {
return p . deleted !== "1" ;
} ) ;
userData . isFollowing = isFollowing ;
@ -415,7 +430,7 @@ var user = require('./../user.js'),
if ( callerUID !== userData . uid )
user . incrementUserFieldBy ( userData . uid , 'profileviews' , 1 ) ;
postTools . toHTML ( userData . signature , function ( err , signature ) {
postTools . parse ( userData . signature , function ( err , signature ) {
userData . signature = signature ;
res . json ( userData ) ;
} ) ;
@ -433,11 +448,12 @@ var user = require('./../user.js'),
app . get ( '/api/users/sort-posts' , getUsersSortedByPosts ) ;
app . get ( '/api/users/sort-reputation' , getUsersSortedByReputation ) ;
app . get ( '/api/users/latest' , getUsersSortedByJoinDate ) ;
app . get ( '/api/users/online' , getOnlineUsers ) ;
app . get ( '/api/users/search' , getUsersForSearch ) ;
function getUsersSortedByJoinDate ( req , res ) {
user . getUsers ( 'users:joindate' , 0 , 49 , function ( err , data ) {
user . getUsers ( 'users:joindate' , 0 , 49 , function ( err , data ) {
res . json ( {
search _display : 'none' ,
loadmore _display : 'block' ,
@ -447,7 +463,7 @@ var user = require('./../user.js'),
}
function getUsersSortedByPosts ( req , res ) {
user . getUsers ( 'users:postcount' , 0 , 49 , function ( err , data ) {
user . getUsers ( 'users:postcount' , 0 , 49 , function ( err , data ) {
res . json ( {
search _display : 'none' ,
loadmore _display : 'block' ,
@ -457,7 +473,17 @@ var user = require('./../user.js'),
}
function getUsersSortedByReputation ( req , res ) {
user . getUsers ( 'users:reputation' , 0 , 49 , function ( err , data ) {
user . getUsers ( 'users:reputation' , 0 , 49 , function ( err , data ) {
res . json ( {
search _display : 'none' ,
loadmore _display : 'block' ,
users : data
} ) ;
} ) ;
}
function getOnlineUsers ( req , res ) {
user . getUsers ( 'users:online' , 0 , 49 , function ( err , data ) {
res . json ( {
search _display : 'none' ,
loadmore _display : 'block' ,
@ -475,14 +501,14 @@ var user = require('./../user.js'),
}
function getUserDataByUserSlug ( userslug , callerUID , callback ) {
user . get _uid _by _userslug ( userslug , function ( err , uid ) {
user . get _uid _by _userslug ( userslug , function ( err , uid ) {
if ( uid === null ) {
callback ( null ) ;
return ;
}
user . getUserData ( uid , function ( err , data ) {
user . getUserData ( uid , function ( err , data ) {
if ( data ) {
data . joindate = new Date ( parseInt ( data . joindate , 10 ) ) . toISOString ( ) ;
@ -510,8 +536,8 @@ var user = require('./../user.js'),
data . yourid = callerUID ;
data . theirid = uid ;
user . getFollowingCount ( uid , function ( followingCount ) {
user . getFollowerCount ( uid , function ( followerCount ) {
user . getFollowingCount ( uid , function ( followingCount ) {
user . getFollowerCount ( uid , function ( followerCount ) {
data . followingCount = followingCount ;
data . followerCount = followerCount ;
callback ( data ) ;