summaryrefslogtreecommitdiff
path: root/routes.js
diff options
context:
space:
mode:
authorDarius Kazemi <darius.kazemi@gmail.com>2020-01-24 16:16:27 -0800
committerDarius Kazemi <darius.kazemi@gmail.com>2020-01-24 16:16:27 -0800
commita390b02416777b045f03a286bfbb02ac369571e6 (patch)
tree8e690cf7a80635685b258eb6a4b2a1ca3f79ab36 /routes.js
parent111406040ec9f7f48b28077c8eea95a792b14cc7 (diff)
Converting all tabs to two-spaces
Diffstat (limited to 'routes.js')
-rwxr-xr-xroutes.js1764
1 files changed, 882 insertions, 882 deletions
diff --git a/routes.js b/routes.js
index 5080cd0..30e8c7a 100755
--- a/routes.js
+++ b/routes.js
@@ -70,17 +70,17 @@ function render_plain () {
render.image = function (href, title, text) {
return '';
};
- render.br = function () {
+ render.br = function () {
return '';
- };
+ };
return render;
}
const ical = require('ical');
const icalGenerator = require('ical-generator');
const cal = icalGenerator({
- domain: domain,
- name: siteName
+ domain: domain,
+ name: siteName
});
const sgMail = require('@sendgrid/mail');
@@ -89,8 +89,8 @@ const apiCredentials = require('./config/api.js');
let sendEmails = false;
if (apiCredentials.sendgrid) { // Only set up Sendgrid if an API key is set
- sgMail.setApiKey(apiCredentials.sendgrid);
- sendEmails = true;
+ sgMail.setApiKey(apiCredentials.sendgrid);
+ sendEmails = true;
}
const fileUpload = require('express-fileupload');
@@ -103,20 +103,20 @@ router.use(fileUpload());
const schedule = require('node-schedule');
const deleteOldEvents = schedule.scheduleJob('59 23 * * *', function(fireDate){
- const too_old = moment.tz('Etc/UTC').subtract(7, 'days').toDate();
- console.log("Old event deletion running! Deleting all events concluding before ", too_old);
-
- Event.find({ end: { $lte: too_old } }).then((oldEvents) => {
- oldEvents.forEach(event => {
- if (event.image){
- fs.unlink(global.appRoot + '/public/events/' + event.image, (err) => {
- if (err) {
- addToLog("deleteOldEvents", "error", "Attempt to delete event image for old event "+event.id+" failed with error: " + err);
- }
- // Image removed
- addToLog("deleteOldEvents", "error", "Image deleted for old event "+event.id);
- })
- }
+ const too_old = moment.tz('Etc/UTC').subtract(7, 'days').toDate();
+ console.log("Old event deletion running! Deleting all events concluding before ", too_old);
+
+ Event.find({ end: { $lte: too_old } }).then((oldEvents) => {
+ oldEvents.forEach(event => {
+ if (event.image){
+ fs.unlink(global.appRoot + '/public/events/' + event.image, (err) => {
+ if (err) {
+ addToLog("deleteOldEvents", "error", "Attempt to delete event image for old event "+event.id+" failed with error: " + err);
+ }
+ // Image removed
+ addToLog("deleteOldEvents", "error", "Image deleted for old event "+event.id);
+ })
+ }
// broadcast a Delete profile message to all followers so that at least Mastodon servers will delete their local profile information
const guidUpdateObject = crypto.randomBytes(16).toString('hex');
const jsonUpdateObject = JSON.parse(event.activityPubActor);
@@ -132,10 +132,10 @@ const deleteOldEvents = schedule.scheduleJob('59 23 * * *', function(fireDate){
});
});
});
- })
- }).catch((err) => {
- addToLog("deleteOldEvents", "error", "Attempt to delete old event "+event.id+" failed with error: " + err);
- });
+ })
+ }).catch((err) => {
+ addToLog("deleteOldEvents", "error", "Attempt to delete old event "+event.id+" failed with error: " + err);
+ });
});
// FRONTEND ROUTES
@@ -149,57 +149,57 @@ router.get('/', (req, res) => {
});
router.get('/new', (req, res) => {
- res.render('home');
+ res.render('home');
});
//router.get('/login', (req, res) => {
-// res.render('admin');
+// res.render('admin');
//})
//router.get('/login', (req, res) => {
-// res.render('login');
+// res.render('login');
//});
//
//router.get('/register', (req, res) => {
-// res.render('register');
+// res.render('register');
//});
router.get('/new/event', (req, res) => {
- res.render('newevent', {
+ res.render('newevent', {
domain: domain,
email: contactEmail,
siteName: siteName,
});
});
router.get('/new/event/public', (req, res) => {
- let isPrivate = false;
- let isPublic = true;
- let isOrganisation = false;
- let isUnknownType = false;
-// let eventType = req.params.eventType;
-// if (eventType == "private"){
-// isPrivate = true;
-// }
-// else if (eventType == "public"){
-// isPublic = true;
-// }
-// else if (eventType == "organisation"){
-// isOrganisation = true;
-// }
-// else {
-// isUnknownType = true;
-// }
- res.render('newevent', {
- title: 'New event',
- isPrivate: isPrivate,
- isPublic: isPublic,
- isOrganisation: isOrganisation,
- isUnknownType: isUnknownType,
- eventType: 'public',
+ let isPrivate = false;
+ let isPublic = true;
+ let isOrganisation = false;
+ let isUnknownType = false;
+// let eventType = req.params.eventType;
+// if (eventType == "private"){
+// isPrivate = true;
+// }
+// else if (eventType == "public"){
+// isPublic = true;
+// }
+// else if (eventType == "organisation"){
+// isOrganisation = true;
+// }
+// else {
+// isUnknownType = true;
+// }
+ res.render('newevent', {
+ title: 'New event',
+ isPrivate: isPrivate,
+ isPublic: isPublic,
+ isOrganisation: isOrganisation,
+ isUnknownType: isUnknownType,
+ eventType: 'public',
domain: domain,
email: contactEmail,
siteName: siteName,
- });
+ });
})
// return the JSON for the featured/pinned post for this event
@@ -285,78 +285,78 @@ router.get('/.well-known/webfinger', (req, res) => {
});
router.get('/:eventID', (req, res) => {
- Event.findOne({
- id: req.params.eventID
- })
- .populate('eventGroup')
- .then((event) => {
- if (event) {
- const parsedLocation = event.location.replace(/\s+/g, '+');
- let displayDate;
- if (moment.tz(event.end, event.timezone).isSame(event.start, 'day')){
- // Happening during one day
- displayDate = moment.tz(event.start, event.timezone).format('dddd D MMMM YYYY [<span class="text-muted">from</span>] h:mm a') + moment.tz(event.end, event.timezone).format(' [<span class="text-muted">to</span>] h:mm a [<span class="text-muted">](z)[</span>]');
- }
- else {
- displayDate = moment.tz(event.start, event.timezone).format('dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a') + moment.tz(event.end, event.timezone).format(' [<span class="text-muted">–</span>] dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a [<span class="text-muted">](z)[</span>]');
- }
- let eventStartISO = moment.tz(event.start, "Etc/UTC").toISOString();
- let eventEndISO = moment.tz(event.end, "Etc/UTC").toISOString();
- let parsedStart = moment.tz(event.start, event.timezone).format('YYYYMMDD[T]HHmmss');
- let parsedEnd = moment.tz(event.end, event.timezone).format('YYYYMMDD[T]HHmmss');
- let eventHasConcluded = false;
- if (moment.tz(event.end, event.timezone).isBefore(moment.tz(event.timezone))){
- eventHasConcluded = true;
- }
- let eventHasBegun = false;
- if (moment.tz(event.start, event.timezone).isBefore(moment.tz(event.timezone))){
- eventHasBegun = true;
- }
- let fromNow = moment.tz(event.start, event.timezone).fromNow();
- let parsedDescription = marked(event.description);
- let eventEditToken = event.editToken;
-
- let escapedName = event.name.replace(/\s+/g, '+');
-
- let eventHasCoverImage = false;
- if( event.image ) {
- eventHasCoverImage = true;
- }
- else {
- eventHasCoverImage = false;
- }
- let eventHasHost = false;
- if( event.hostName ) {
- eventHasHost = true;
- }
- else {
- eventHasHost = false;
- }
- let firstLoad = false;
- if (event.firstLoad === true) {
- firstLoad = true;
- Event.findOneAndUpdate({id: req.params.eventID}, {firstLoad: false}, function(err, raw) {
- if (err) {
- res.send(err);
- }
- });
- }
- let editingEnabled = false;
- if (Object.keys(req.query).length !== 0) {
- if (!req.query.e) {
- editingEnabled = false;
- console.log("No edit token set");
- }
- else {
- if (req.query.e === eventEditToken){
- editingEnabled = true;
- }
- else {
- editingEnabled = false;
- }
- }
- }
- let eventAttendees = event.attendees.sort((a,b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0))
+ Event.findOne({
+ id: req.params.eventID
+ })
+ .populate('eventGroup')
+ .then((event) => {
+ if (event) {
+ const parsedLocation = event.location.replace(/\s+/g, '+');
+ let displayDate;
+ if (moment.tz(event.end, event.timezone).isSame(event.start, 'day')){
+ // Happening during one day
+ displayDate = moment.tz(event.start, event.timezone).format('dddd D MMMM YYYY [<span class="text-muted">from</span>] h:mm a') + moment.tz(event.end, event.timezone).format(' [<span class="text-muted">to</span>] h:mm a [<span class="text-muted">](z)[</span>]');
+ }
+ else {
+ displayDate = moment.tz(event.start, event.timezone).format('dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a') + moment.tz(event.end, event.timezone).format(' [<span class="text-muted">–</span>] dddd D MMMM YYYY [<span class="text-muted">at</span>] h:mm a [<span class="text-muted">](z)[</span>]');
+ }
+ let eventStartISO = moment.tz(event.start, "Etc/UTC").toISOString();
+ let eventEndISO = moment.tz(event.end, "Etc/UTC").toISOString();
+ let parsedStart = moment.tz(event.start, event.timezone).format('YYYYMMDD[T]HHmmss');
+ let parsedEnd = moment.tz(event.end, event.timezone).format('YYYYMMDD[T]HHmmss');
+ let eventHasConcluded = false;
+ if (moment.tz(event.end, event.timezone).isBefore(moment.tz(event.timezone))){
+ eventHasConcluded = true;
+ }
+ let eventHasBegun = false;
+ if (moment.tz(event.start, event.timezone).isBefore(moment.tz(event.timezone))){
+ eventHasBegun = true;
+ }
+ let fromNow = moment.tz(event.start, event.timezone).fromNow();
+ let parsedDescription = marked(event.description);
+ let eventEditToken = event.editToken;
+
+ let escapedName = event.name.replace(/\s+/g, '+');
+
+ let eventHasCoverImage = false;
+ if( event.image ) {
+ eventHasCoverImage = true;
+ }
+ else {
+ eventHasCoverImage = false;
+ }
+ let eventHasHost = false;
+ if( event.hostName ) {
+ eventHasHost = true;
+ }
+ else {
+ eventHasHost = false;
+ }
+ let firstLoad = false;
+ if (event.firstLoad === true) {
+ firstLoad = true;
+ Event.findOneAndUpdate({id: req.params.eventID}, {firstLoad: false}, function(err, raw) {
+ if (err) {
+ res.send(err);
+ }
+ });
+ }
+ let editingEnabled = false;
+ if (Object.keys(req.query).length !== 0) {
+ if (!req.query.e) {
+ editingEnabled = false;
+ console.log("No edit token set");
+ }
+ else {
+ if (req.query.e === eventEditToken){
+ editingEnabled = true;
+ }
+ else {
+ editingEnabled = false;
+ }
+ }
+ }
+ let eventAttendees = event.attendees.sort((a,b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0))
.map(el => {
if (!el.id) {
el.id = el._id;
@@ -373,13 +373,13 @@ router.get('/:eventID', (req, res) => {
if (spotsRemaining <= 0) {
noMoreSpots = true;
}
- }
- let metadata = {
- title: event.name,
- description: marked(event.description, { renderer: render_plain()}).split(" ").splice(0,40).join(" ").trim(),
- image: (eventHasCoverImage ? `https://${domain}/events/` + event.image : null),
- url: `https://${domain}/` + req.params.eventID
- };
+ }
+ let metadata = {
+ title: event.name,
+ description: marked(event.description, { renderer: render_plain()}).split(" ").splice(0,40).join(" ").trim(),
+ image: (eventHasCoverImage ? `https://${domain}/events/` + event.image : null),
+ url: `https://${domain}/` + req.params.eventID
+ };
if (req.headers.accept && (req.headers.accept.includes('application/activity+json') || req.headers.accept.includes('application/json') || req.headers.accept.includes('application/json+ld'))) {
res.json(JSON.parse(event.activityPubActor));
}
@@ -393,8 +393,8 @@ router.get('/:eventID', (req, res) => {
escapedName: escapedName,
eventData: event,
eventAttendees: eventAttendees,
- spotsRemaining: spotsRemaining,
- noMoreSpots: noMoreSpots,
+ spotsRemaining: spotsRemaining,
+ noMoreSpots: noMoreSpots,
eventStartISO: eventStartISO,
eventEndISO: eventEndISO,
parsedLocation: parsedLocation,
@@ -414,30 +414,30 @@ router.get('/:eventID', (req, res) => {
siteName: siteName
})
}
- }
- else {
- res.status(404);
- res.render('404', { url: req.url });
- }
-
- })
- .catch((err) => {
- addToLog("displayEvent", "error", "Attempt to display event " + req.params.eventID + " failed with error: " + err);
- console.log(err)
- res.status(404);
- res.render('404', { url: req.url });
- return;
- });
+ }
+ else {
+ res.status(404);
+ res.render('404', { url: req.url });
+ }
+
+ })
+ .catch((err) => {
+ addToLog("displayEvent", "error", "Attempt to display event " + req.params.eventID + " failed with error: " + err);
+ console.log(err)
+ res.status(404);
+ res.render('404', { url: req.url });
+ return;
+ });
})
router.get('/:eventID/followers', (req, res) => {
if (!isFederated) return res.sendStatus(404);
const eventID = req.params.eventID;
- Event.findOne({
- id: eventID
- })
- .then((event) => {
- if (event) {
+ Event.findOne({
+ id: eventID
+ })
+ .then((event) => {
+ if (event) {
const followers = event.followers.map(el => el.actorId);
let followersCollection = {
"type": "OrderedCollection",
@@ -461,148 +461,148 @@ router.get('/:eventID/followers', (req, res) => {
})
router.get('/group/:eventGroupID', (req, res) => {
- EventGroup.findOne({
- id: req.params.eventGroupID
- })
- .then(async (eventGroup) => {
- if (eventGroup) {
- let parsedDescription = marked(eventGroup.description);
- let eventGroupEditToken = eventGroup.editToken;
-
- let escapedName = eventGroup.name.replace(/\s+/g, '+');
-
- let eventGroupHasCoverImage = false;
- if( eventGroup.image ) {
- eventGroupHasCoverImage = true;
- }
- else {
- eventGroupHasCoverImage = false;
- }
- let eventGroupHasHost = false;
- if( eventGroup.hostName ) {
- eventGroupHasHost = true;
- }
- else {
- eventGroupHasHost = false;
- }
-
- let events = await Event.find({eventGroup: eventGroup._id}).sort('start')
-
- events.forEach(event => {
- if (moment.tz(event.end, event.timezone).isSame(event.start, 'day')){
- // Happening during one day
- event.displayDate = moment.tz(event.start, event.timezone).format('D MMM YYYY');
- }
- else {
- event.displayDate = moment.tz(event.start, event.timezone).format('D MMM YYYY') + moment.tz(event.end, event.timezone).format(' - D MMM YYYY');
- }
- if (moment.tz(event.end, event.timezone).isBefore(moment.tz(event.timezone))){
- event.eventHasConcluded = true;
- } else {
- event.eventHasConcluded = false;
- }
- })
-
- let upcomingEventsExist = false;
- if (events.some(e => e.eventHasConcluded === false)) {
- upcomingEventsExist = true;
- }
-
- let firstLoad = false;
- if (eventGroup.firstLoad === true) {
- firstLoad = true;
- EventGroup.findOneAndUpdate({id: req.params.eventGroupID}, {firstLoad: false}, function(err, raw) {
- if (err) {
- res.send(err);
- }
- });
- }
- let editingEnabled = false;
- if (Object.keys(req.query).length !== 0) {
- if (!req.query.e) {
- editingEnabled = false;
- console.log("No edit token set");
- }
- else {
- if (req.query.e === eventGroupEditToken){
- editingEnabled = true;
- }
- else {
- editingEnabled = false;
- }
- }
- }
- let metadata = {
- title: eventGroup.name,
- description: marked(eventGroup.description, { renderer: render_plain()}).split(" ").splice(0,40).join(" ").trim(),
- image: (eventGroupHasCoverImage ? `https://${domain}/events/` + eventGroup.image : null),
- url: `https://${domain}/` + req.params.eventID
- };
- res.set("X-Robots-Tag", "noindex");
- res.render('eventgroup', {
+ EventGroup.findOne({
+ id: req.params.eventGroupID
+ })
+ .then(async (eventGroup) => {
+ if (eventGroup) {
+ let parsedDescription = marked(eventGroup.description);
+ let eventGroupEditToken = eventGroup.editToken;
+
+ let escapedName = eventGroup.name.replace(/\s+/g, '+');
+
+ let eventGroupHasCoverImage = false;
+ if( eventGroup.image ) {
+ eventGroupHasCoverImage = true;
+ }
+ else {
+ eventGroupHasCoverImage = false;
+ }
+ let eventGroupHasHost = false;
+ if( eventGroup.hostName ) {
+ eventGroupHasHost = true;
+ }
+ else {
+ eventGroupHasHost = false;
+ }
+
+ let events = await Event.find({eventGroup: eventGroup._id}).sort('start')
+
+ events.forEach(event => {
+ if (moment.tz(event.end, event.timezone).isSame(event.start, 'day')){
+ // Happening during one day
+ event.displayDate = moment.tz(event.start, event.timezone).format('D MMM YYYY');
+ }
+ else {
+ event.displayDate = moment.tz(event.start, event.timezone).format('D MMM YYYY') + moment.tz(event.end, event.timezone).format(' - D MMM YYYY');
+ }
+ if (moment.tz(event.end, event.timezone).isBefore(moment.tz(event.timezone))){
+ event.eventHasConcluded = true;
+ } else {
+ event.eventHasConcluded = false;
+ }
+ })
+
+ let upcomingEventsExist = false;
+ if (events.some(e => e.eventHasConcluded === false)) {
+ upcomingEventsExist = true;
+ }
+
+ let firstLoad = false;
+ if (eventGroup.firstLoad === true) {
+ firstLoad = true;
+ EventGroup.findOneAndUpdate({id: req.params.eventGroupID}, {firstLoad: false}, function(err, raw) {
+ if (err) {
+ res.send(err);
+ }
+ });
+ }
+ let editingEnabled = false;
+ if (Object.keys(req.query).length !== 0) {
+ if (!req.query.e) {
+ editingEnabled = false;
+ console.log("No edit token set");
+ }
+ else {
+ if (req.query.e === eventGroupEditToken){
+ editingEnabled = true;
+ }
+ else {
+ editingEnabled = false;
+ }
+ }
+ }
+ let metadata = {
+ title: eventGroup.name,
+ description: marked(eventGroup.description, { renderer: render_plain()}).split(" ").splice(0,40).join(" ").trim(),
+ image: (eventGroupHasCoverImage ? `https://${domain}/events/` + eventGroup.image : null),
+ url: `https://${domain}/` + req.params.eventID
+ };
+ res.set("X-Robots-Tag", "noindex");
+ res.render('eventgroup', {
domain: domain,
- title: eventGroup.name,
- eventGroupData: eventGroup,
- escapedName: escapedName,
- events: events,
- upcomingEventsExist: upcomingEventsExist,
- parsedDescription: parsedDescription,
- editingEnabled: editingEnabled,
- eventGroupHasCoverImage: eventGroupHasCoverImage,
- eventGroupHasHost: eventGroupHasHost,
- firstLoad: firstLoad,
- metadata: metadata
- })
- }
- else {
- res.status(404);
- res.render('404', { url: req.url });
- }
-
- })
- .catch((err) => {
- addToLog("displayEventGroup", "error", "Attempt to display event group " + req.params.eventGroupID + " failed with error: " + err);
- console.log(err)
- res.status(404);
- res.render('404', { url: req.url });
- return;
- });
+ title: eventGroup.name,
+ eventGroupData: eventGroup,
+ escapedName: escapedName,
+ events: events,
+ upcomingEventsExist: upcomingEventsExist,
+ parsedDescription: parsedDescription,
+ editingEnabled: editingEnabled,
+ eventGroupHasCoverImage: eventGroupHasCoverImage,
+ eventGroupHasHost: eventGroupHasHost,
+ firstLoad: firstLoad,
+ metadata: metadata
+ })
+ }
+ else {
+ res.status(404);
+ res.render('404', { url: req.url });
+ }
+
+ })
+ .catch((err) => {
+ addToLog("displayEventGroup", "error", "Attempt to display event group " + req.params.eventGroupID + " failed with error: " + err);
+ console.log(err)
+ res.status(404);
+ res.render('404', { url: req.url });
+ return;
+ });
})
router.get('/exportevent/:eventID', (req, res) => {
- Event.findOne({
- id: req.params.eventID
- })
- .populate('eventGroup')
- .then((event) => {
- if (event) {
- const icalEvent = cal.createEvent({
- start: moment.tz(event.start, event.timezone),
- end: moment.tz(event.start, event.timezone),
- timezone: event.timezone,
- timestamp: moment(),
- summary: event.name,
- description: event.description,
- organizer: {
- name: event.hostName ? event.hostName : "Anonymous",
- email: event.creatorEmail
- },
- location: event.location,
- url: 'https://gath.io/' + event.id
- });
-
- let string = cal.toString();
- console.log(string)
- res.send(string);
- }
- })
- .catch((err) => {
- addToLog("exportEvent", "error", "Attempt to export event " + req.params.eventID + " failed with error: " + err);
- console.log(err)
- res.status(404);
- res.render('404', { url: req.url });
- return;
- });
+ Event.findOne({
+ id: req.params.eventID
+ })
+ .populate('eventGroup')
+ .then((event) => {
+ if (event) {
+ const icalEvent = cal.createEvent({
+ start: moment.tz(event.start, event.timezone),
+ end: moment.tz(event.start, event.timezone),
+ timezone: event.timezone,
+ timestamp: moment(),
+ summary: event.name,
+ description: event.description,
+ organizer: {
+ name: event.hostName ? event.hostName : "Anonymous",
+ email: event.creatorEmail
+ },
+ location: event.location,
+ url: 'https://gath.io/' + event.id
+ });
+
+ let string = cal.toString();
+ console.log(string)
+ res.send(string);
+ }
+ })
+ .catch((err) => {
+ addToLog("exportEvent", "error", "Attempt to export event " + req.params.eventID + " failed with error: " + err);
+ console.log(err)
+ res.status(404);
+ res.render('404', { url: req.url });
+ return;
+ });
})
// BACKEND ROUTES
@@ -615,73 +615,73 @@ router.get('/exportevent/:eventID', (req, res) => {
router.post('/newevent', async (req, res) => {
- let eventID = shortid.generate();
+ let eventID = shortid.generate();
// this is a hack, activitypub does not like "-" in ids so we are essentially going
// to have a 63-character alphabet instead of a 64-character one
eventID = eventID.replace(/-/g,'_');
- let editToken = randomstring.generate();
- let eventImageFilename = "";
- let isPartOfEventGroup = false;
- if (req.files && Object.keys(req.files).length !== 0) {
- let eventImageBuffer = req.files.imageUpload.data;
- Jimp.read(eventImageBuffer, (err, img) => {
- if (err) addToLog("Jimp", "error", "Attempt to edit image failed with error: " + err);
- img
- .resize(920, Jimp.AUTO) // resize
- .quality(80) // set JPEG quality
- .write('./public/events/' + eventID + '.jpg'); // save
- });
- eventImageFilename = eventID + '.jpg';
- }
- let startUTC = moment.tz(req.body.eventStart, 'D MMMM YYYY, hh:mm a', req.body.timezone);
- let endUTC = moment.tz(req.body.eventEnd, 'D MMMM YYYY, hh:mm a', req.body.timezone);
- let eventGroup;
- if (req.body.eventGroupCheckbox) {
- eventGroup = await EventGroup.findOne({
- id: req.body.eventGroupID,
- editToken: req.body.eventGroupEditToken
- })
- if (eventGroup) {
- isPartOfEventGroup = true;
- }
- }
+ let editToken = randomstring.generate();
+ let eventImageFilename = "";
+ let isPartOfEventGroup = false;
+ if (req.files && Object.keys(req.files).length !== 0) {
+ let eventImageBuffer = req.files.imageUpload.data;
+ Jimp.read(eventImageBuffer, (err, img) => {
+ if (err) addToLog("Jimp", "error", "Attempt to edit image failed with error: " + err);
+ img
+ .resize(920, Jimp.AUTO) // resize
+ .quality(80) // set JPEG quality
+ .write('./public/events/' + eventID + '.jpg'); // save
+ });
+ eventImageFilename = eventID + '.jpg';
+ }
+ let startUTC = moment.tz(req.body.eventStart, 'D MMMM YYYY, hh:mm a', req.body.timezone);
+ let endUTC = moment.tz(req.body.eventEnd, 'D MMMM YYYY, hh:mm a', req.body.timezone);
+ let eventGroup;
+ if (req.body.eventGroupCheckbox) {
+ eventGroup = await EventGroup.findOne({
+ id: req.body.eventGroupID,
+ editToken: req.body.eventGroupEditToken
+ })
+ if (eventGroup) {
+ isPartOfEventGroup = true;
+ }
+ }
// generate RSA keypair for ActivityPub
let pair = generateRSAKeypair();
- const event = new Event({
- id: eventID,
- type: req.body.eventType,
- name: req.body.eventName,
- location: req.body.eventLocation,
- start: startUTC,
- end: endUTC,
- timezone: req.body.timezone,
- description: req.body.eventDescription,
- image: eventImageFilename,
- creatorEmail: req.body.creatorEmail,
- url: req.body.eventURL,
- hostName: req.body.hostName,
- viewPassword: req.body.viewPassword,
- editPassword: req.body.editPassword,
- editToken: editToken,
- eventGroup: isPartOfEventGroup ? eventGroup._id : null,
- usersCanAttend: req.body.joinCheckbox ? true : false,
- showUsersList: req.body.guestlistCheckbox ? true : false,
- usersCanComment: req.body.interactionCheckbox ? true : false,
- maxAttendees: req.body.maxAttendees,
- firstLoad: true,
+ const event = new Event({
+ id: eventID,
+ type: req.body.eventType,
+ name: req.body.eventName,
+ location: req.body.eventLocation,
+ start: startUTC,
+ end: endUTC,
+ timezone: req.body.timezone,
+ description: req.body.eventDescription,
+ image: eventImageFilename,
+ creatorEmail: req.body.creatorEmail,
+ url: req.body.eventURL,
+ hostName: req.body.hostName,
+ viewPassword: req.body.viewPassword,
+ editPassword: req.body.editPassword,
+ editToken: editToken,
+ eventGroup: isPartOfEventGroup ? eventGroup._id : null,
+ usersCanAttend: req.body.joinCheckbox ? true : false,
+ showUsersList: req.body.guestlistCheckbox ? true : false,
+ usersCanComment: req.body.interactionCheckbox ? true : false,
+ maxAttendees: req.body.maxAttendees,
+ firstLoad: true,
activityPubActor: ap.createActivityPubActor(eventID, domain, pair.public, marked(req.body.eventDescription), req.body.eventName, req.body.eventLocation, eventImageFilename, startUTC, endUTC, req.body.timezone),
activityPubEvent: ap.createActivityPubEvent(req.body.eventName, startUTC, endUTC, req.body.timezone, req.body.eventDescription, req.body.eventLocation),
activityPubMessages: [ { id: `https://${domain}/${eventID}/m/featuredPost`, content: JSON.stringify(ap.createFeaturedPost(eventID, req.body.eventName, startUTC, endUTC, req.body.timezone, req.body.eventDescription, req.body.eventLocation)) } ],
publicKey: pair.public,
privateKey: pair.private
- });
- event.save()
- .then((event) => {
- addToLog("createEvent", "success", "Event " + eventID + "created");
- // Send email with edit link
- if (sendEmails) {
+ });
+ event.save()
+ .then((event) => {
+ addToLog("createEvent", "success", "Event " + eventID + "created");
+ // Send email with edit link
+ if (sendEmails) {
req.app.get('hbsInstance').renderView('./views/emails/createevent.handlebars', {eventID, editToken, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) {
const msg = {
to: req.body.creatorEmail,
@@ -697,117 +697,117 @@ router.post('/newevent', async (req, res) => {
res.status(500).end();
});
});
- }
- res.writeHead(302, {
- 'Location': '/' + eventID + '?e=' + editToken
- });
- res.end();
- })
- .catch((err) => { res.status(500).send('Database error, please try again :( - ' + err); addToLog("createEvent", "error", "Attempt to create event failed with error: " + err);});
+ }
+ res.writeHead(302, {
+ 'Location': '/' + eventID + '?e=' + editToken
+ });
+ res.end();
+ })
+ .catch((err) => { res.status(500).send('Database error, please try again :( - ' + err); addToLog("createEvent", "error", "Attempt to create event failed with error: " + err);});
});
router.post('/importevent', (req, res) => {
- let eventID = shortid.generate();
- let editToken = randomstring.generate();
- if (req.files && Object.keys(req.files).length !== 0) {
- let iCalObject = ical.parseICS(req.files.icsImportControl.data.toString('utf8'));
- let importedEventData = iCalObject[Object.keys(iCalObject)];
-
- let creatorEmail;
- if (req.body.creatorEmail) {
- creatorEmail = req.body.creatorEmail
- } else if (importedEventData.organizer) {
- creatorEmail = importedEventData.organizer.val.replace("MAILTO:", "");
- } else {
- res.status(500).send("Please supply an email address on the previous page.");
- }
-
- const event = new Event({
- id: eventID,
- type: 'public',
- name: importedEventData.summary,
- location: importedEventData.location,
- start: importedEventData.start,
- end: importedEventData.end,
- timezone: typeof importedEventData.start.tz !== 'undefined' ? importedEventData.start.tz : "Etc/UTC",
- description: importedEventData.description,
- image: '',
- creatorEmail: creatorEmail,
- url: '',
- hostName: importedEventData.organizer ? importedEventData.organizer.params.CN.replace(/["]+/g, '') : "",
- viewPassword: '',
- editPassword: '',
- editToken: editToken,
- usersCanAttend: false,
- showUsersList: false,
- usersCanComment: false,
- firstLoad: true
- });
- event.save()
- .then(() => {
- addToLog("createEvent", "success", "Event " + eventID + " created");
- // Send email with edit link
- if (sendEmails) {
- req.app.get('hbsInstance').renderView('./views/emails/createevent.handlebars', {eventID, editToken, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) {
- const msg = {
- to: req.body.creatorEmail,
- from: {
- name: siteName,
- email: contactEmail,
- },
- subject: `${siteName}: ${importedEventData.summary}`,
- html,
- };
- sgMail.send(msg).catch(e => {
- console.error(e.toString());
- res.status(500).end();
- });
- });
- }
- res.writeHead(302, {
- 'Location': '/' + eventID + '?e=' + editToken
- });
- res.end();
- })
- .catch((err) => { res.send('Database error, please try again :('); addToLog("createEvent", "error", "Attempt to create event failed with error: " + err);});
- }
- else {
- console.log("Files array is empty!")
- res.status(500).end();
- }
+ let eventID = shortid.generate();
+ let editToken = randomstring.generate();
+ if (req.files && Object.keys(req.files).length !== 0) {
+ let iCalObject = ical.parseICS(req.files.icsImportControl.data.toString('utf8'));
+ let importedEventData = iCalObject[Object.keys(iCalObject)];
+
+ let creatorEmail;
+ if (req.body.creatorEmail) {
+ creatorEmail = req.body.creatorEmail
+ } else if (importedEventData.organizer) {
+ creatorEmail = importedEventData.organizer.val.replace("MAILTO:", "");
+ } else {
+ res.status(500).send("Please supply an email address on the previous page.");
+ }
+
+ const event = new Event({
+ id: eventID,
+ type: 'public',
+ name: importedEventData.summary,
+ location: importedEventData.location,
+ start: importedEventData.start,
+ end: importedEventData.end,
+ timezone: typeof importedEventData.start.tz !== 'undefined' ? importedEventData.start.tz : "Etc/UTC",
+ description: importedEventData.description,
+ image: '',
+ creatorEmail: creatorEmail,
+ url: '',
+ hostName: importedEventData.organizer ? importedEventData.organizer.params.CN.replace(/["]+/g, '') : "",
+ viewPassword: '',
+ editPassword: '',
+ editToken: editToken,
+ usersCanAttend: false,
+ showUsersList: false,
+ usersCanComment: false,
+ firstLoad: true
+ });
+ event.save()
+ .then(() => {
+ addToLog("createEvent", "success", "Event " + eventID + " created");
+ // Send email with edit link
+ if (sendEmails) {
+ req.app.get('hbsInstance').renderView('./views/emails/createevent.handlebars', {eventID, editToken, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) {
+ const msg = {
+ to: req.body.creatorEmail,
+ from: {
+ name: siteName,
+ email: contactEmail,
+ },
+ subject: `${siteName}: ${importedEventData.summary}`,
+ html,
+ };
+ sgMail.send(msg).catch(e => {
+ console.error(e.toString());
+ res.status(500).end();
+ });
+ });
+ }
+ res.writeHead(302, {
+ 'Location': '/' + eventID + '?e=' + editToken
+ });
+ res.end();
+ })
+ .catch((err) => { res.send('Database error, please try again :('); addToLog("createEvent", "error", "Attempt to create event failed with error: " + err);});
+ }
+ else {
+ console.log("Files array is empty!")
+ res.status(500).end();
+ }
});
router.post('/neweventgroup', (req, res) => {
- let eventGroupID = shortid.generate();
- let editToken = randomstring.generate();
- let eventGroupImageFilename = "";
- if (req.files && Object.keys(req.files).length !== 0) {
- let eventImageBuffer = req.files.imageUpload.data;
- Jimp.read(eventImageBuffer, (err, img) => {
- if (err) addToLog("Jimp", "error", "Attempt to edit image failed with error: " + err);
- img
- .resize(920, Jimp.AUTO) // resize
- .quality(80) // set JPEG quality
- .write('./public/events/' + eventGroupID + '.jpg'); // save
- });
- eventGroupImageFilename = eventGroupID + '.jpg';
- }
- const eventGroup = new EventGroup({
- id: eventGroupID,
- name: req.body.eventGroupName,
- description: req.body.eventGroupDescription,
- image: eventGroupImageFilename,
- creatorEmail: req.body.creatorEmail,
- url: req.body.eventGroupURL,
- hostName: req.body.hostName,
- editToken: editToken,
- firstLoad: true
- });
- eventGroup.save()
- .then(() => {
- addToLog("createEventGroup", "success", "Event group " + eventGroupID + " created");
- // Send email with edit link
- if (sendEmails) {
+ let eventGroupID = shortid.generate();
+ let editToken = randomstring.generate();
+ let eventGroupImageFilename = "";
+ if (req.files && Object.keys(req.files).length !== 0) {
+ let eventImageBuffer = req.files.imageUpload.data;
+ Jimp.read(eventImageBuffer, (err, img) => {
+ if (err) addToLog("Jimp", "error", "Attempt to edit image failed with error: " + err);
+ img
+ .resize(920, Jimp.AUTO) // resize
+ .quality(80) // set JPEG quality
+ .write('./public/events/' + eventGroupID + '.jpg'); // save
+ });
+ eventGroupImageFilename = eventGroupID + '.jpg';
+ }
+ const eventGroup = new EventGroup({
+ id: eventGroupID,
+ name: req.body.eventGroupName,
+ description: req.body.eventGroupDescription,
+ image: eventGroupImageFilename,
+ creatorEmail: req.body.creatorEmail,
+ url: req.body.eventGroupURL,
+ hostName: req.body.hostName,
+ editToken: editToken,
+ firstLoad: true
+ });
+ eventGroup.save()
+ .then(() => {
+ addToLog("createEventGroup", "success", "Event group " + eventGroupID + " created");
+ // Send email with edit link
+ if (sendEmails) {
req.app.get('hbsInstance').renderView('./views/emails/createeventgroup.handlebars', {eventGroupID, editToken, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) {
const msg = {
to: req.body.creatorEmail,
@@ -823,71 +823,71 @@ router.post('/neweventgroup', (req, res) => {
res.status(500).end();
});
});
- }
- res.writeHead(302, {
- 'Location': '/group/' + eventGroupID + '?e=' + editToken
- });
- res.end();
- })
- .catch((err) => { res.send('Database error, please try again :( - ' + err); addToLog("createEvent", "error", "Attempt to create event failed with error: " + err);});
+ }
+ res.writeHead(302, {
+ 'Location': '/group/' + eventGroupID + '?e=' + editToken
+ });
+ res.end();
+ })
+ .catch((err) => { res.send('Database error, please try again :( - ' + err); addToLog("createEvent", "error", "Attempt to create event failed with error: " + err);});
});
router.post('/editevent/:eventID/:editToken', (req, res) => {
- console.log(req.body);
- let submittedEditToken = req.params.editToken;
- Event.findOne(({
- id: req.params.eventID,
- }))
- .then(async (event) => {
- if (event.editToken === submittedEditToken) {
- // Token matches
-
- // If there is a new image, upload that first
- let eventID = req.params.eventID;
- let eventImageFilename = event.image;
- if (req.files && Object.keys(req.files).length !== 0) {
- let eventImageBuffer = req.files.imageUpload.data;
- Jimp.read(eventImageBuffer, (err, img) => {
- if (err) throw err;
- img
- .resize(920, Jimp.AUTO) // resize
- .quality(80) // set JPEG
- .write('./public/events/' + eventID + '.jpg'); // save
- });
- eventImageFilename = eventID + '.jpg';
- }
- let startUTC = moment.tz(req.body.eventStart, 'D MMMM YYYY, hh:mm a', req.body.timezone);
- let endUTC = moment.tz(req.body.eventEnd, 'D MMMM YYYY, hh:mm a', req.body.timezone);
-
- let isPartOfEventGroup = false;
+ console.log(req.body);
+ let submittedEditToken = req.params.editToken;
+ Event.findOne(({
+ id: req.params.eventID,
+ }))
+ .then(async (event) => {
+ if (event.editToken === submittedEditToken) {
+ // Token matches
+
+ // If there is a new image, upload that first
+ let eventID = req.params.eventID;
+ let eventImageFilename = event.image;
+ if (req.files && Object.keys(req.files).length !== 0) {
+ let eventImageBuffer = req.files.imageUpload.data;
+ Jimp.read(eventImageBuffer, (err, img) => {
+ if (err) throw err;
+ img
+ .resize(920, Jimp.AUTO) // resize
+ .quality(80) // set JPEG
+ .write('./public/events/' + eventID + '.jpg'); // save
+ });
+ eventImageFilename = eventID + '.jpg';
+ }
+ let startUTC = moment.tz(req.body.eventStart, 'D MMMM YYYY, hh:mm a', req.body.timezone);
+ let endUTC = moment.tz(req.body.eventEnd, 'D MMMM YYYY, hh:mm a', req.body.timezone);
+
+ let isPartOfEventGroup = false;
let eventGroup;
- if (req.body.eventGroupCheckbox) {
- eventGroup = await EventGroup.findOne({
- id: req.body.eventGroupID,
- editToken: req.body.eventGroupEditToken
- })
- if (eventGroup) {
- isPartOfEventGroup = true;
- }
- }
- const updatedEvent = {
- name: req.body.eventName,
- location: req.body.eventLocation,
- start: startUTC,
- end: endUTC,
- timezone: req.body.timezone,
- description: req.body.eventDescription,
- url: req.body.eventURL,
- hostName: req.body.hostName,
- image: eventImageFilename,
- usersCanAttend: req.body.joinCheckbox ? true : false,
- showUsersList: req.body.guestlistCheckbox ? true : false,
- usersCanComment: req.body.interactionCheckbox ? true : false,
- maxAttendees: req.body.maxAttendeesCheckbox ? req.body.maxAttendees : null,
- eventGroup: isPartOfEventGroup ? eventGroup._id : null,
+ if (req.body.eventGroupCheckbox) {
+ eventGroup = await EventGroup.findOne({
+ id: req.body.eventGroupID,
+ editToken: req.body.eventGroupEditToken
+ })
+ if (eventGroup) {
+ isPartOfEventGroup = true;
+ }
+ }
+ const updatedEvent = {
+ name: req.body.eventName,
+ location: req.body.eventLocation,
+ start: startUTC,
+ end: endUTC,
+ timezone: req.body.timezone,
+ description: req.body.eventDescription,
+ url: req.body.eventURL,
+ hostName: req.body.hostName,
+ image: eventImageFilename,
+ usersCanAttend: req.body.joinCheckbox ? true : false,
+ showUsersList: req.body.guestlistCheckbox ? true : false,
+ usersCanComment: req.body.interactionCheckbox ? true : false,
+ maxAttendees: req.body.maxAttendeesCheckbox ? req.body.maxAttendees : null,
+ eventGroup: isPartOfEventGroup ? eventGroup._id : null,
activityPubActor: ap.updateActivityPubActor(JSON.parse(event.activityPubActor), req.body.eventDescription, req.body.eventName, req.body.eventLocation, eventImageFilename, startUTC, endUTC, req.body.timezone),
activityPubEvent: ap.updateActivityPubEvent(JSON.parse(event.activityPubEvent), req.body.eventName, req.body.startUTC, req.body.endUTC, req.body.timezone),
- }
+ }
let diffText = '<p>This event was just updated with new information.</p><ul>';
let displayDate;
if (event.name !== updatedEvent.name) {
@@ -912,14 +912,14 @@ router.post('/editevent/:eventID/:editToken', (req, res) => {
diffText += `<li>the event description changed</li>`;
}
diffText += `</ul>`;
- Event.findOneAndUpdate({id: req.params.eventID}, updatedEvent, function(err, raw) {
- if (err) {
- addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: " + err);
- res.send(err);
- }
- })
- .then(() => {
- addToLog("editEvent", "success", "Event " + req.params.eventID + " edited");
+ Event.findOneAndUpdate({id: req.params.eventID}, updatedEvent, function(err, raw) {
+ if (err) {
+ addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: " + err);
+ res.send(err);
+ }
+ })
+ .then(() => {
+ addToLog("editEvent", "success", "Event " + req.params.eventID + " edited");
// send update to ActivityPub subscribers
Event.findOne({id: req.params.eventID}, function(err,event) {
if (!event) return;
@@ -957,11 +957,11 @@ router.post('/editevent/:eventID/:editToken', (req, res) => {
}
}
})
- if (sendEmails) {
- Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
- let attendeeEmails = ids;
- if (!error && attendeeEmails !== ""){
- console.log("Sending emails to: " + attendeeEmails);
+ if (sendEmails) {
+ Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
+ let attendeeEmails = ids;
+ if (!error && attendeeEmails !== ""){
+ console.log("Sending emails to: " + attendeeEmails);
req.app.get('hbsInstance').renderView('./views/emails/editevent.handlebars', {diffText, eventID: req.params.eventID, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) {
const msg = {
to: attendeeEmails,
@@ -977,130 +977,130 @@ router.post('/editevent/:eventID/:editToken', (req, res) => {
res.status(500).end();
});
});
- }
- else {
- console.log("Nothing to send!");
- }
- })
- }
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID + '?e=' + req.params.editToken
- });
- res.end();
- })
- .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: " + err);});
- }
- else {
- // Token doesn't match
- res.send('Sorry! Something went wrong');
- addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: token does not match");
- }
- })
- .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: " + err);});
+ }
+ else {
+ console.log("Nothing to send!");
+ }
+ })
+ }
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID + '?e=' + req.params.editToken
+ });
+ res.end();
+ })
+ .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: " + err);});
+ }
+ else {
+ // Token doesn't match
+ res.send('Sorry! Something went wrong');
+ addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: token does not match");
+ }
+ })
+ .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEvent", "error", "Attempt to edit event " + req.params.eventID + " failed with error: " + err);});
});
router.post('/editeventgroup/:eventGroupID/:editToken', (req, res) => {
- let submittedEditToken = req.params.editToken;
- EventGroup.findOne(({
- id: req.params.eventGroupID,
- }))
- .then((eventGroup) => {
- if (eventGroup.editToken === submittedEditToken) {
- // Token matches
-
- // If there is a new image, upload that first
- let eventGroupID = req.params.eventGroupID;
- let eventGroupImageFilename = eventGroup.image;
- if (req.files && Object.keys(req.files).length !== 0) {
- let eventImageBuffer = req.files.eventGroupImageUpload.data;
- Jimp.read(eventImageBuffer, (err, img) => {
- if (err) throw err;
- img
- .resize(920, Jimp.AUTO) // resize
- .quality(80) // set JPEG
- .write('./public/events/' + eventGroupID + '.jpg'); // save
- });
- eventGroupImageFilename = eventGroupID + '.jpg';
- }
- const updatedEventGroup = {
- name: req.body.eventGroupName,
- description: req.body.eventGroupDescription,
- url: req.body.eventGroupURL,
- hostName: req.body.hostName,
- image: eventGroupImageFilename
- }
- EventGroup.findOneAndUpdate({id: req.params.eventGroupID}, updatedEventGroup, function(err, raw) {
- if (err) {
- addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: " + err);
- res.send(err);
- }
- })
- .then(() => {
- addToLog("editEventGroup", "success", "Event group " + req.params.eventGroupID + " edited");
- res.writeHead(302, {
- 'Location': '/group/' + req.params.eventGroupID + '?e=' + req.params.editToken
- });
- res.end();
- })
- .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: " + err);});
- }
- else {
- // Token doesn't match
- res.send('Sorry! Something went wrong');
- addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: token does not match");
- }
- })
- .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: " + err);});
+ let submittedEditToken = req.params.editToken;
+ EventGroup.findOne(({
+ id: req.params.eventGroupID,
+ }))
+ .then((eventGroup) => {
+ if (eventGroup.editToken === submittedEditToken) {
+ // Token matches
+
+ // If there is a new image, upload that first
+ let eventGroupID = req.params.eventGroupID;
+ let eventGroupImageFilename = eventGroup.image;
+ if (req.files && Object.keys(req.files).length !== 0) {
+ let eventImageBuffer = req.files.eventGroupImageUpload.data;
+ Jimp.read(eventImageBuffer, (err, img) => {
+ if (err) throw err;
+ img
+ .resize(920, Jimp.AUTO) // resize
+ .quality(80) // set JPEG
+ .write('./public/events/' + eventGroupID + '.jpg'); // save
+ });
+ eventGroupImageFilename = eventGroupID + '.jpg';
+ }
+ const updatedEventGroup = {
+ name: req.body.eventGroupName,
+ description: req.body.eventGroupDescription,
+ url: req.body.eventGroupURL,
+ hostName: req.body.hostName,
+ image: eventGroupImageFilename
+ }
+ EventGroup.findOneAndUpdate({id: req.params.eventGroupID}, updatedEventGroup, function(err, raw) {
+ if (err) {
+ addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: " + err);
+ res.send(err);
+ }
+ })
+ .then(() => {
+ addToLog("editEventGroup", "success", "Event group " + req.params.eventGroupID + " edited");
+ res.writeHead(302, {
+ 'Location': '/group/' + req.params.eventGroupID + '?e=' + req.params.editToken
+ });
+ res.end();
+ })
+ .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: " + err);});
+ }
+ else {
+ // Token doesn't match
+ res.send('Sorry! Something went wrong');
+ addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: token does not match");
+ }
+ })
+ .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: " + err);});
});
router.post('/deleteimage/:eventID/:editToken', (req, res) => {
- let submittedEditToken = req.params.editToken;
- Event.findOne(({
- id: req.params.eventID,
- }))
- .then((event) => {
- if (event.editToken === submittedEditToken) {
- // Token matches
- if (event.image){
- eventImage = event.image;
- } else {
- res.status(500).send('This event doesn\'t have a linked image. What are you even doing');
- }
- fs.unlink(global.appRoot + '/public/events/' + eventImage, (err) => {
- if (err) {
- res.status(500).send(err);
- addToLog("deleteEventImage", "error", "Attempt to delete event image for event " + req.params.eventID + " failed with error: " + err);
- }
- // Image removed
- addToLog("deleteEventImage", "success", "Image for event " + req.params.eventID + " deleted");
- event.image = "";
- event.save()
- .then(response => {
- res.status(200).send('Success');
- })
- .catch(err => {
- res.status(500).send(err);
- addToLog("deleteEventImage", "error", "Attempt to delete event image for event " + req.params.eventID + " failed with error: " + err);
- })
- });
- }
- });
+ let submittedEditToken = req.params.editToken;
+ Event.findOne(({
+ id: req.params.eventID,
+ }))
+ .then((event) => {
+ if (event.editToken === submittedEditToken) {
+ // Token matches
+ if (event.image){
+ eventImage = event.image;
+ } else {
+ res.status(500).send('This event doesn\'t have a linked image. What are you even doing');
+ }
+ fs.unlink(global.appRoot + '/public/events/' + eventImage, (err) => {
+ if (err) {
+ res.status(500).send(err);
+ addToLog("deleteEventImage", "error", "Attempt to delete event image for event " + req.params.eventID + " failed with error: " + err);
+ }
+ // Image removed
+ addToLog("deleteEventImage", "success", "Image for event " + req.params.eventID + " deleted");
+ event.image = "";
+ event.save()
+ .then(response => {
+ res.status(200).send('Success');
+ })
+ .catch(err => {
+ res.status(500).send(err);
+ addToLog("deleteEventImage", "error", "Attempt to delete event image for event " + req.params.eventID + " failed with error: " + err);
+ })
+ });
+ }
+ });
});
router.post('/deleteevent/:eventID/:editToken', (req, res) => {
- let submittedEditToken = req.params.editToken;
- let eventImage;
- Event.findOne(({
- id: req.params.eventID,
- }))
- .then((event) => {
- if (event.editToken === submittedEditToken) {
- // Token matches
+ let submittedEditToken = req.params.editToken;
+ let eventImage;
+ Event.findOne(({
+ id: req.params.eventID,
+ }))
+ .then((event) => {
+ if (event.editToken === submittedEditToken) {
+ // Token matches
let eventImage;
- if (event.image){
- eventImage = event.image;
- }
+ if (event.image){
+ eventImage = event.image;
+ }
// broadcast a Delete profile message to all followers so that at least Mastodon servers will delete their local profile information
const guidUpdateObject = crypto.randomBytes(16).toString('hex');
@@ -1132,12 +1132,12 @@ router.post('/deleteevent/:eventID/:editToken', (req, res) => {
})
.catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteEvent", "error", "Attempt to delete event " + req.params.eventID + " failed with error: " + err);});
});
- // Send emails here otherwise they don't exist lol
- if (sendEmails) {
- Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
- attendeeEmails = ids;
- if (!error){
- console.log("Sending emails to: " + attendeeEmails);
+ // Send emails here otherwise they don't exist lol
+ if (sendEmails) {
+ Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
+ attendeeEmails = ids;
+ if (!error){
+ console.log("Sending emails to: " + attendeeEmails);
req.app.get('hbsInstance').renderView('./views/emails/deleteevent.handlebars', {siteName, siteLogo, domain, eventName: event.name, cache: true, layout: 'email.handlebars'}, function(err, html) {
const msg = {
to: attendeeEmails,
@@ -1159,89 +1159,89 @@ router.post('/deleteevent/:eventID/:editToken', (req, res) => {
}
});
}
- }
- else {
- // Token doesn't match
- res.send('Sorry! Something went wrong');
- addToLog("deleteEvent", "error", "Attempt to delete event " + req.params.eventID + " failed with error: token does not match");
- }
- })
- .catch((err) => { res.send('Sorry! Something went wrong: ' + err); addToLog("deleteEvent", "error", "Attempt to delete event " + req.params.eventID + " failed with error: " + err);});
+ }
+ else {
+ // Token doesn't match
+ res.send('Sorry! Something went wrong');
+ addToLog("deleteEvent", "error", "Attempt to delete event " + req.params.eventID + " failed with error: token does not match");
+ }
+ })
+ .catch((err) => { res.send('Sorry! Something went wrong: ' + err); addToLog("deleteEvent", "error", "Attempt to delete event " + req.params.eventID + " failed with error: " + err);});
});
router.post('/deleteeventgroup/:eventGroupID/:editToken', (req, res) => {
- let submittedEditToken = req.params.editToken;
- EventGroup.findOne(({
- id: req.params.eventGroupID,
- }))
- .then(async (eventGroup) => {
- if (eventGroup.editToken === submittedEditToken) {
- // Token matches
-
- let linkedEvents = await Event.find({eventGroup: eventGroup._id});
-
- let linkedEventIDs = linkedEvents.map(event => event._id);
- let eventGroupImage = false;
- if (eventGroup.image){
- eventGroupImage = eventGroup.image;
- }
-
- EventGroup.deleteOne({id: req.params.eventGroupID}, function(err, raw) {
- if (err) {
- res.send(err);
- addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);
- }
- })
- .then(() => {
- // Delete image
- if (eventGroupImage){
- fs.unlink(global.appRoot + '/public/events/' + eventGroupImage, (err) => {
- if (err) {
- res.send(err);
- addToLog("deleteEventGroup", "error", "Attempt to delete event image for event group " + req.params.eventGroupID + " failed with error: " + err);
- }
- })
- }
- Event.update({_id: {$in: linkedEventIDs}}, { $set: { eventGroup: null } }, { multi: true })
- .then(response => {
- console.log(response);
- addToLog("deleteEventGroup", "success", "Event group " + req.params.eventGroupID + " deleted");
- res.writeHead(302, {
- 'Location': '/'
- });
- res.end();
- })
- .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);});
- })
- .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);});
- }
- else {
- // Token doesn't match
- res.send('Sorry! Something went wrong');
- addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: token does not match");
- }
- })
- .catch((err) => { res.send('Sorry! Something went wrong: ' + err); addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);});
+ let submittedEditToken = req.params.editToken;
+ EventGroup.findOne(({
+ id: req.params.eventGroupID,
+ }))
+ .then(async (eventGroup) => {
+ if (eventGroup.editToken === submittedEditToken) {
+ // Token matches
+
+ let linkedEvents = await Event.find({eventGroup: eventGroup._id});
+
+ let linkedEventIDs = linkedEvents.map(event => event._id);
+ let eventGroupImage = false;
+ if (eventGroup.image){
+ eventGroupImage = eventGroup.image;
+ }
+
+ EventGroup.deleteOne({id: req.params.eventGroupID}, function(err, raw) {
+ if (err) {
+ res.send(err);
+ addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);
+ }
+ })
+ .then(() => {
+ // Delete image
+ if (eventGroupImage){
+ fs.unlink(global.appRoot + '/public/events/' + eventGroupImage, (err) => {
+ if (err) {
+ res.send(err);
+ addToLog("deleteEventGroup", "error", "Attempt to delete event image for event group " + req.params.eventGroupID + " failed with error: " + err);
+ }
+ })
+ }
+ Event.update({_id: {$in: linkedEventIDs}}, { $set: { eventGroup: null } }, { multi: true })
+ .then(response => {
+ console.log(response);
+ addToLog("deleteEventGroup", "success", "Event group " + req.params.eventGroupID + " deleted");
+ res.writeHead(302, {
+ 'Location': '/'
+ });
+ res.end();
+ })
+ .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);});
+ })
+ .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);});
+ }
+ else {
+ // Token doesn't match
+ res.send('Sorry! Something went wrong');
+ addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: token does not match");
+ }
+ })
+ .catch((err) => { res.send('Sorry! Something went wrong: ' + err); addToLog("deleteEventGroup", "error", "Attempt to delete event group " + req.params.eventGroupID + " failed with error: " + err);});
});
router.post('/attendevent/:eventID', (req, res) => {
- const newAttendee = {
- name: req.body.attendeeName,
- status: 'attending',
- email: req.body.attendeeEmail,
- removalPassword: req.body.removeAttendancePassword
- };
-
- Event.findOne({
- id: req.params.eventID,
- }, function(err,event) {
+ const newAttendee = {
+ name: req.body.attendeeName,
+ status: 'attending',
+ email: req.body.attendeeEmail,
+ removalPassword: req.body.removeAttendancePassword
+ };
+
+ Event.findOne({
+ id: req.params.eventID,
+ }, function(err,event) {
if (!event) return;
- event.attendees.push(newAttendee);
- event.save()
- .then(() => {
- addToLog("addEventAttendee", "success", "Attendee added to event " + req.params.eventID);
- if (sendEmails) {
- if (req.body.attendeeEmail){
+ event.attendees.push(newAttendee);
+ event.save()
+ .then(() => {
+ addToLog("addEventAttendee", "success", "Attendee added to event " + req.params.eventID);
+ if (sendEmails) {
+ if (req.body.attendeeEmail){
req.app.get('hbsInstance').renderView('./views/emails/addeventattendee.handlebars', {eventID: req.params.eventID, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) {
const msg = {
to: req.body.attendeeEmail,
@@ -1257,34 +1257,34 @@ router.post('/attendevent/:eventID', (req, res) => {
res.status(500).end();
});
});
- }
- }
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID
- });
- res.end();
- })
- .catch((err) => { res.send('Database error, please try again :('); addToLog("addEventAttendee", "error", "Attempt to add attendee to event " + req.params.eventID + " failed with error: " + err); });
- });
+ }
+ }
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID
+ });
+ res.end();
+ })
+ .catch((err) => { res.send('Database error, please try again :('); addToLog("addEventAttendee", "error", "Attempt to add attendee to event " + req.params.eventID + " failed with error: " + err); });
+ });
});
router.post('/unattendevent/:eventID', (req, res) => {
- Event.update(
- { id: req.params.eventID },
- { $pull: { attendees: { removalPassword: req.body.removeAttendancePassword } } }
- )
- .then(response => {
- console.log(response)
- addToLog("unattendEvent", "success", "Attendee removed self from event " + req.params.eventID);
- if (sendEmails) {
- if (req.body.attendeeEmail){
+ Event.update(
+ { id: req.params.eventID },
+ { $pull: { attendees: { removalPassword: req.body.removeAttendancePassword } } }
+ )
+ .then(response => {
+ console.log(response)
+ addToLog("unattendEvent", "success", "Attendee removed self from event " + req.params.eventID);
+ if (sendEmails) {
+ if (req.body.attendeeEmail){
req.app.get('hbsInstance').renderView('./views/emails/unattendevent.handlebars', {eventID: req.params.eventID, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) { const msg = {
to: req.body.attendeeEmail,
from: {
name: siteName,
email: contactEmail,
},
- subject: `${siteName}: You have been removed from an event`,
+ subject: `${siteName}: You have been removed from an event`,
html,
};
sgMail.send(msg).catch(e => {
@@ -1292,16 +1292,16 @@ router.post('/unattendevent/:eventID', (req, res) => {
res.status(500).end();
});
});
- }
- }
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID
- });
- res.end();
- })
- .catch((err) => {
- res.send('Database error, please try again :('); addToLog("removeEventAttendee", "error", "Attempt to remove attendee from event " + req.params.eventID + " failed with error: " + err);
- });
+ }
+ }
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID
+ });
+ res.end();
+ })
+ .catch((err) => {
+ res.send('Database error, please try again :('); addToLog("removeEventAttendee", "error", "Attempt to remove attendee from event " + req.params.eventID + " failed with error: " + err);
+ });
});
// this is a one-click unattend that requires a secret URL that only the person who RSVPed over
@@ -1312,22 +1312,22 @@ router.get('/oneclickunattendevent/:eventID/:attendeeID', (req, res) => {
if (req.headers['user-agent'] && req.headers['user-agent'].includes('Mastodon')) {
return res.sendStatus(200);
}
- Event.update(
- { id: req.params.eventID },
- { $pull: { attendees: { _id: req.params.attendeeID } } }
- )
- .then(response => {
- addToLog("oneClickUnattend", "success", "Attendee removed via one click unattend " + req.params.eventID);
- if (sendEmails) {
+ Event.update(
+ { id: req.params.eventID },
+ { $pull: { attendees: { _id: req.params.attendeeID } } }
+ )
+ .then(response => {
+ addToLog("oneClickUnattend", "success", "Attendee removed via one click unattend " + req.params.eventID);
+ if (sendEmails) {
// currently this is never called because we don't have the email address
- if (req.body.attendeeEmail){
+ if (req.body.attendeeEmail){
req.app.get('hbsInstance').renderView('./views/emails/removeeventattendee.handlebars', {eventName: req.params.eventName, siteName, domain, cache: true, layout: 'email.handlebars'}, function(err, html) { const msg = {
to: req.body.attendeeEmail,
from: {
name: siteName,
email: contactEmail,
},
- subject: `${siteName}: You have been removed from an event`,
+ subject: `${siteName}: You have been removed from an event`,
html,
};
sgMail.send(msg).catch(e => {
@@ -1335,36 +1335,36 @@ router.get('/oneclickunattendevent/:eventID/:attendeeID', (req, res) => {
res.status(500).end();
});
});
- }
- }
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID
- });
- res.end();
- })
- .catch((err) => {
- res.send('Database error, please try again :('); addToLog("removeEventAttendee", "error", "Attempt to remove attendee by admin from event " + req.params.eventID + " failed with error: " + err);
- });
+ }
+ }
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID
+ });
+ res.end();
+ })
+ .catch((err) => {
+ res.send('Database error, please try again :('); addToLog("removeEventAttendee", "error", "Attempt to remove attendee by admin from event " + req.params.eventID + " failed with error: " + err);
+ });
});
router.post('/removeattendee/:eventID/:attendeeID', (req, res) => {
- Event.update(
- { id: req.params.eventID },
- { $pull: { attendees: { _id: req.params.attendeeID } } }
- )
- .then(response => {
- console.log(response)
- addToLog("removeEventAttendee", "success", "Attendee removed by admin from event " + req.params.eventID);
- if (sendEmails) {
+ Event.update(
+ { id: req.params.eventID },
+ { $pull: { attendees: { _id: req.params.attendeeID } } }
+ )
+ .then(response => {
+ console.log(response)
+ addToLog("removeEventAttendee", "success", "Attendee removed by admin from event " + req.params.eventID);
+ if (sendEmails) {
// currently this is never called because we don't have the email address
- if (req.body.attendeeEmail){
+ if (req.body.attendeeEmail){
req.app.get('hbsInstance').renderView('./views/emails/removeeventattendee.handlebars', {eventName: req.params.eventName, siteName, siteLogo, domain, cache: true, layout: 'email.handlebars'}, function(err, html) { const msg = {
to: req.body.attendeeEmail,
from: {
name: siteName,
email: contactEmail,
},
- subject: `${siteName}: You have been removed from an event`,
+ subject: `${siteName}: You have been removed from an event`,
html,
};
sgMail.send(msg).catch(e => {
@@ -1372,35 +1372,35 @@ router.post('/removeattendee/:eventID/:attendeeID', (req, res) => {
res.status(500).end();
});
});
- }
- }
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID
- });
- res.end();
- })
- .catch((err) => {
- res.send('Database error, please try again :('); addToLog("removeEventAttendee", "error", "Attempt to remove attendee by admin from event " + req.params.eventID + " failed with error: " + err);
- });
+ }
+ }
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID
+ });
+ res.end();
+ })
+ .catch((err) => {
+ res.send('Database error, please try again :('); addToLog("removeEventAttendee", "error", "Attempt to remove attendee by admin from event " + req.params.eventID + " failed with error: " + err);
+ });
});
router.post('/post/comment/:eventID', (req, res) => {
- let commentID = shortid.generate();
- const newComment = {
- id: commentID,
- author: req.body.commentAuthor,
- content: req.body.commentContent,
- timestamp: moment()
- };
-
- Event.findOne({
- id: req.params.eventID,
- }, function(err,event) {
+ let commentID = shortid.generate();
+ const newComment = {
+ id: commentID,
+ author: req.body.commentAuthor,
+ content: req.body.commentContent,
+ timestamp: moment()
+ };
+
+ Event.findOne({
+ id: req.params.eventID,
+ }, function(err,event) {
if (!event) return;
- event.comments.push(newComment);
- event.save()
- .then(() => {
- addToLog("addEventComment", "success", "Comment added to event " + req.params.eventID);
+ event.comments.push(newComment);
+ event.save()
+ .then(() => {
+ addToLog("addEventComment", "success", "Comment added to event " + req.params.eventID);
// broadcast an identical message to all followers, will show in their home timeline
// and in the home timeline of the event
const guidObject = crypto.randomBytes(16).toString('hex');
@@ -1413,11 +1413,11 @@ router.post('/post/comment/:eventID', (req, res) => {
"content": `<p>${req.body.commentAuthor} commented: ${req.body.commentContent}.</p><p><a href="https://${domain}/${req.params.eventID}/">See the full conversation here.</a></p>`,
}
ap.broadcastCreateMessage(jsonObject, event.followers, req.params.eventID)
- if (sendEmails) {
- Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
- let attendeeEmails = ids;
- if (!error){
- console.log("Sending emails to: " + attendeeEmails);
+ if (sendEmails) {
+ Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
+ let attendeeEmails = ids;
+ if (!error){
+ console.log("Sending emails to: " + attendeeEmails);
req.app.get('hbsInstance').renderView('./views/emails/addeventcomment.handlebars', {siteName, siteLogo, domain, eventID: req.params.eventID, commentAuthor: req.body.commentAuthor, cache: true, layout: 'email.handlebars'}, function(err, html) {
const msg = {
to: attendeeEmails,
@@ -1433,39 +1433,39 @@ router.post('/post/comment/:eventID', (req, res) => {
res.status(500).end();
});
});
- }
- else {
- console.log("Nothing to send!");
- }
- });
- }
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID
- });
- res.end();
- })
- .catch((err) => { res.send('Database error, please try again :(' + err); addToLog("addEventComment", "error", "Attempt to add comment to event " + req.params.eventID + " failed with error: " + err); });
- });
+ }
+ else {
+ console.log("Nothing to send!");
+ }
+ });
+ }
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID
+ });
+ res.end();
+ })
+ .catch((err) => { res.send('Database error, please try again :(' + err); addToLog("addEventComment", "error", "Attempt to add comment to event " + req.params.eventID + " failed with error: " + err); });
+ });
});
router.post('/post/reply/:eventID/:commentID', (req, res) => {
- let replyID = shortid.generate();
- let commentID = req.params.commentID;
- const newReply = {
- id: replyID,
- author: req.body.replyAuthor,
- content: req.body.replyContent,
- timestamp: moment()
- };
- Event.findOne({
- id: req.params.eventID,
- }, function(err,event) {
+ let replyID = shortid.generate();
+ let commentID = req.params.commentID;
+ const newReply = {
+ id: replyID,
+ author: req.body.replyAuthor,
+ content: req.body.replyContent,
+ timestamp: moment()
+ };
+ Event.findOne({
+ id: req.params.eventID,
+ }, function(err,event) {
if (!event) return;
- var parentComment = event.comments.id(commentID);
- parentComment.replies.push(newReply);
- event.save()
- .then(() => {
- addToLog("addEventReply", "success", "Reply added to comment " + commentID + " in event " + req.params.eventID);
+ var parentComment = event.comments.id(commentID);
+ parentComment.replies.push(newReply);
+ event.save()
+ .then(() => {
+ addToLog("addEventReply", "success", "Reply added to comment " + commentID + " in event " + req.params.eventID);
// broadcast an identical message to all followers, will show in their home timeline
const guidObject = crypto.randomBytes(16).toString('hex');
const jsonObject = {
@@ -1477,11 +1477,11 @@ router.post('/post/reply/:eventID/:commentID', (req, res) => {
"content": `<p>${req.body.replyAuthor} commented: ${req.body.replyContent}</p><p><a href="https://${domain}/${req.params.eventID}/">See the full conversation here.</a></p>`,
}
ap.broadcastCreateMessage(jsonObject, event.followers, req.params.eventID)
- if (sendEmails) {
- Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
- let attendeeEmails = ids;
- if (!error){
- console.log("Sending emails to: " + attendeeEmails);
+ if (sendEmails) {
+ Event.findOne({id: req.params.eventID}).distinct('attendees.email', function(error, ids) {
+ let attendeeEmails = ids;
+ if (!error){
+ console.log("Sending emails to: " + attendeeEmails);
req.app.get('hbsInstance').renderView('./views/emails/addeventcomment.handlebars', {siteName, siteLogo, domain, eventID: req.params.eventID, commentAuthor: req.body.replyAuthor, cache: true, layout: 'email.handlebars'}, function(err, html) {
const msg = {
to: attendeeEmails,
@@ -1497,47 +1497,47 @@ router.post('/post/reply/:eventID/:commentID', (req, res) => {
res.status(500).end();
});
});
- }
- else {
- console.log("Nothing to send!");
- }
- });
- }
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID
- });
- res.end();
- })
- .catch((err) => { res.send('Database error, please try again :('); addToLog("addEventReply", "error", "Attempt to add reply to comment " + commentID + " in event " + req.params.eventID + " failed with error: " + err); });
- });
+ }
+ else {
+ console.log("Nothing to send!");
+ }
+ });
+ }
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID
+ });
+ res.end();
+ })
+ .catch((err) => { res.send('Database error, please try again :('); addToLog("addEventReply", "error", "Attempt to add reply to comment " + commentID + " in event " + req.params.eventID + " failed with error: " + err); });
+ });
});
router.post('/deletecomment/:eventID/:commentID/:editToken', (req, res) => {
- let submittedEditToken = req.params.editToken;
- Event.findOne(({
- id: req.params.eventID,
- }))
- .then((event) => {
- if (event.editToken === submittedEditToken) {
- // Token matches
- event.comments.id(req.params.commentID).remove();
- event.save()
- .then(() => {
- addToLog("deleteComment", "success", "Comment deleted from event " + req.params.eventID);
- res.writeHead(302, {
- 'Location': '/' + req.params.eventID + '?e=' + req.params.editToken
- });
- res.end();
- })
- .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteComment", "error", "Attempt to delete comment " + req.params.commentID + "from event " + req.params.eventID + " failed with error: " + err);});
- }
- else {
- // Token doesn't match
- res.send('Sorry! Something went wrong');
- addToLog("deleteComment", "error", "Attempt to delete comment " + req.params.commentID + "from event " + req.params.eventID + " failed with error: token does not match");
- }
- })
- .catch((err) => { res.send('Sorry! Something went wrong: ' + err); addToLog("deleteComment", "error", "Attempt to delete comment " + req.params.commentID + "from event " + req.params.eventID + " failed with error: " + err);});
+ let submittedEditToken = req.params.editToken;
+ Event.findOne(({
+ id: req.params.eventID,
+ }))
+ .then((event) => {
+ if (event.editToken === submittedEditToken) {
+ // Token matches
+ event.comments.id(req.params.commentID).remove();
+ event.save()
+ .then(() => {
+ addToLog("deleteComment", "success", "Comment deleted from event " + req.params.eventID);
+ res.writeHead(302, {
+ 'Location': '/' + req.params.eventID + '?e=' + req.params.editToken
+ });
+ res.end();
+ })
+ .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteComment", "error", "Attempt to delete comment " + req.params.commentID + "from event " + req.params.eventID + " failed with error: " + err);});
+ }
+ else {
+ // Token doesn't match
+ res.send('Sorry! Something went wrong');
+ addToLog("deleteComment", "error", "Attempt to delete comment " + req.params.commentID + "from event " + req.params.eventID + " failed with error: token does not match");
+ }
+ })
+ .catch((err) => { res.send('Sorry! Something went wrong: ' + err); addToLog("deleteComment", "error", "Attempt to delete comment " + req.params.commentID + "from event " + req.params.eventID + " failed with error: " + err);});
});
router.post('/activitypub/inbox', (req, res) => {
@@ -1602,9 +1602,9 @@ router.post('/activitypub/inbox', (req, res) => {
});
router.use(function(req, res, next){
- res.status(404);
- res.render('404', { url: req.url });
- return;
+ res.status(404);
+ res.render('404', { url: req.url });
+ return;
});
addToLog("startup", "success", "Started up successfully");