var Functions = require(pathThumbnails + '/handlers/functions.js'); var db = require(pathThumbnails + '/handlers/db.js'); function frontpage_lists(msg, socket) { if(msg == undefined || !msg.hasOwnProperty('version') || msg.version != VERSION || msg.version == undefined) { var result = { version: { expected: VERSION, got: msg.hasOwnProperty("version") ? msg.version : undefined, } }; socket.emit('update_required', result); return; } db.collection("frontpage_lists").find({frontpage:true}, function(err, docs){ db.collection("connected_users").find({"_id": "total_users"}, function(err, tot){ socket.compress(true).emit("playlists", {channels: docs, viewers: tot[0].total_users.length}); }); }); } function get_frontpage_lists(callback) { var project_object = { "_id": 1, "count": 1, "frontpage": 1, "id": 1, "title": 1, "viewers": 1, "accessed": 1, "pinned": { $ifNull: [ "$pinned", 0 ] }, "description": { $ifNull: [ {$cond: { "if": { "$or": [ { "$eq": [ "$description", ""] }, { "$eq": [ "$description", null] }, { "$eq": [ "$description", undefined] } ] }, then: "This list has no description", else: "$description" }}, "This list has no description"] }, "thumbnail": { $ifNull: [ {$cond: { "if": { "$or": [ { "$eq": [ "$thumbnail", ""] }, { "$eq": [ "$thumbnail", null] }, { "$eq": [ "$thumbnail", undefined] } ] }, then: { $concat : [ "https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"] }, else: "$thumbnail" }}, { $concat : [ "https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"]}] } }; db.collection("frontpage_lists").aggregate([ { "$match": { frontpage: true, count: {$gt: 3}, } }, { "$project": project_object }, { "$sort" : { "pinned": -1, "viewers": -1, "accessed": -1, "count": -1, "title": 1 } }, ], callback); } function update_frontpage(coll, id, title, thumbnail, source, callback) { //coll = coll.replace(/ /g,''); db.collection("frontpage_lists").find({_id: coll}, function(e, doc) { var updateObject = { id: id, title: title, accessed: Functions.get_time() }; if(doc.length > 0 && ((doc[0].thumbnail != "" && doc[0].thumbnail != undefined && (doc[0].thumbnail.indexOf("https://i1.sndcdn.com") > -1 || doc[0].thumbnail.indexOf("https://w1.sndcdn.com") > -1 || doc[0].thumbnail.indexOf("https://img.youtube.com") > -1)) || (doc[0].thumbnail == "" || doc[0].thumbnail == undefined))) { updateObject.thumbnail = thumbnail; if(thumbnail == undefined) updateObject.thumbnail = ""; } db.collection("frontpage_lists").update({_id: coll}, {$set: updateObject },{upsert: true}, function(err, returnDocs){ if(typeof(callback) == "function") callback(); }); }); } module.exports.get_frontpage_lists = get_frontpage_lists; module.exports.frontpage_lists = frontpage_lists; module.exports.update_frontpage = update_frontpage;