mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
128 lines
4 KiB
JavaScript
128 lines
4 KiB
JavaScript
isAdminById=function(userId){
|
|
var user = Meteor.users.findOne(userId);
|
|
return !!(user && isAdmin(user));
|
|
}
|
|
isAdmin=function(user){
|
|
user = (typeof user === 'undefined') ? Meteor.user() : user;
|
|
return !!user && !!user.isAdmin;
|
|
}
|
|
isInvited=function(user){
|
|
if(!user || typeof user === 'undefined')
|
|
return false;
|
|
return isAdmin(user) || !!user.isInvited;
|
|
}
|
|
adminUsers = function(){
|
|
return Meteor.users.find({isAdmin : true}).fetch();
|
|
}
|
|
getUserName = function(user){
|
|
return user.username;
|
|
}
|
|
getDisplayName = function(user){
|
|
return (user.profile && user.profile.name) ? user.profile.name : user.username;
|
|
}
|
|
getDisplayNameById = function(userId){
|
|
return getDisplayName(Meteor.users.findOne(userId));
|
|
}
|
|
getProfileUrl = function(user) {
|
|
return Meteor.absoluteUrl()+'users/' + slugify(getUserName(user));
|
|
}
|
|
getProfileUrlById = function(id){
|
|
return Meteor.absoluteUrl()+'users/'+ id;
|
|
}
|
|
getProfileUrlBySlug = function(slug) {
|
|
return Meteor.absoluteUrl()+'users/' + slug;
|
|
}
|
|
getTwitterName = function(user){
|
|
// return twitter name provided by user, or else the one used for twitter login
|
|
if(checkNested(user, 'profile', 'twitter')){
|
|
return user.profile.twitter;
|
|
}else if(checkNested(user, 'services', 'twitter', 'screenName')){
|
|
return user.services.twitter.screenName;
|
|
}
|
|
return null;
|
|
}
|
|
getGitHubName = function(user){
|
|
// return twitter name provided by user, or else the one used for twitter login
|
|
if(checkNested(user, 'profile', 'github')){
|
|
return user.profile.github;
|
|
}else if(checkNested(user, 'services', 'github', 'screenName')){ // TODO: double-check this with GitHub login
|
|
return user.services.github.screenName;
|
|
}
|
|
return null;
|
|
}
|
|
getTwitterNameById = function(userId){
|
|
return getTwitterName(Meteor.users.findOne(userId));
|
|
}
|
|
getSignupMethod = function(user){
|
|
if(user.services && user.services.twitter){
|
|
return 'twitter';
|
|
}else if(user.services && user.services.facebook){
|
|
return 'facebook';
|
|
}else{
|
|
return 'regular';
|
|
}
|
|
}
|
|
getEmail = function(user){
|
|
if(user.profile && user.profile.email){
|
|
return user.profile.email;
|
|
}else{
|
|
return '';
|
|
}
|
|
}
|
|
getAvatarUrl = function(user){
|
|
if(getSignupMethod(user)=='twitter'){
|
|
return 'http://twitter.com/api/users/profile_image/'+user.services.twitter.screenName;
|
|
}else if(getSignupMethod(user)=='facebook') {
|
|
return 'http://graph.facebook.com/'+user.services.facebook.id+'/picture';
|
|
} else{
|
|
return Gravatar.getGravatar(user, {
|
|
d: 'http://demo.telesc.pe/img/default_avatar.png',
|
|
s: 80
|
|
});
|
|
}
|
|
}
|
|
getCurrentUserEmail = function(){
|
|
return Meteor.user() ? getEmail(Meteor.user()) : '';
|
|
}
|
|
userProfileComplete = function(user) {
|
|
return !!getEmail(user);
|
|
}
|
|
|
|
findLast = function(user, collection){
|
|
return collection.findOne({userId: user._id}, {sort: {createdAt: -1}});
|
|
}
|
|
timeSinceLast = function(user, collection){
|
|
var now = new Date().getTime();
|
|
var last = findLast(user, collection);
|
|
if(!last)
|
|
return 999; // if this is the user's first post or comment ever, stop here
|
|
return Math.abs(Math.floor((now-last.createdAt)/1000));
|
|
}
|
|
numberOfItemsInPast24Hours = function(user, collection){
|
|
var mDate = moment(new Date());
|
|
var items=collection.find({
|
|
userId: user._id,
|
|
createdAt: {
|
|
$gte: mDate.subtract('hours',24).valueOf()
|
|
}
|
|
});
|
|
return items.count();
|
|
}
|
|
getUserSetting = function(setting, defaultValue, user){
|
|
var user = (typeof user == 'undefined') ? Meteor.user() : user;
|
|
var defaultValue = (typeof defaultValue == "undefined") ? null: defaultValue;
|
|
var settingValue = getProperty(user.profile, setting);
|
|
return (settingValue == null) ? defaultValue : settingValue;
|
|
}
|
|
getProperty = function(object, property){
|
|
// recursive function to get nested properties
|
|
var array = property.split('.');
|
|
if(array.length > 1){
|
|
var parent = array.shift();
|
|
// if our property is not at this level, call function again one level deeper if we can go deeper, else return null
|
|
return (typeof object[parent] == "undefined") ? null : getProperty(object[parent], array.join('.'))
|
|
}else{
|
|
// else return property
|
|
return object[array[0]];
|
|
}
|
|
}
|