| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 | 
							- Meteor.publish('card', cardId => {
 
-   check(cardId, String);
 
-   return Cards.find({ _id: cardId });
 
- });
 
- Meteor.publish('myCards', function() {
 
-   const userId = Meteor.userId();
 
-   const archivedBoards = [];
 
-   Boards.find({ archived: true }).forEach(board => {
 
-     archivedBoards.push(board._id);
 
-   });
 
-   const archivedSwimlanes = [];
 
-   Swimlanes.find({ archived: true }).forEach(swimlane => {
 
-     archivedSwimlanes.push(swimlane._id);
 
-   });
 
-   const archivedLists = [];
 
-   Lists.find({ archived: true }).forEach(list => {
 
-     archivedLists.push(list._id);
 
-   });
 
-   selector = {
 
-     archived: false,
 
-     boardId: { $nin: archivedBoards },
 
-     swimlaneId: { $nin: archivedSwimlanes },
 
-     listId: { $nin: archivedLists },
 
-     $or: [{ members: userId }, { assignees: userId }],
 
-   };
 
-   const cards = Cards.find(selector, {
 
-     fields: {
 
-       _id: 1,
 
-       archived: 1,
 
-       boardId: 1,
 
-       swimlaneId: 1,
 
-       listId: 1,
 
-       title: 1,
 
-       type: 1,
 
-       sort: 1,
 
-       members: 1,
 
-       assignees: 1,
 
-       colors: 1,
 
-       dueAt: 1,
 
-     },
 
-   });
 
-   const boards = [];
 
-   const swimlanes = [];
 
-   const lists = [];
 
-   const users = [];
 
-   cards.forEach(card => {
 
-     if (card.boardId) boards.push(card.boardId);
 
-     if (card.swimlaneId) swimlanes.push(card.swimlaneId);
 
-     if (card.listId) lists.push(card.listId);
 
-     if (card.members) {
 
-       card.members.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-     if (card.assignees) {
 
-       card.assignees.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-   });
 
-   return [
 
-     cards,
 
-     Boards.find({ _id: { $in: boards } }),
 
-     Swimlanes.find({ _id: { $in: swimlanes } }),
 
-     Lists.find({ _id: { $in: lists } }),
 
-     Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
 
-   ];
 
- });
 
- Meteor.publish('dueCards', function(allUsers = false) {
 
-   check(allUsers, Boolean);
 
-   // eslint-disable-next-line no-console
 
-   // console.log('all users:', allUsers);
 
-   const user = Users.findOne({ _id: this.userId });
 
-   const archivedBoards = [];
 
-   Boards.find({ archived: true }).forEach(board => {
 
-     archivedBoards.push(board._id);
 
-   });
 
-   const permiitedBoards = [];
 
-   let selector = {
 
-     archived: false,
 
-   };
 
-   selector.$or = [
 
-     { permission: 'public' },
 
-     { members: { $elemMatch: { userId: user._id, isActive: true } } },
 
-   ];
 
-   Boards.find(selector).forEach(board => {
 
-     permiitedBoards.push(board._id);
 
-   });
 
-   const archivedSwimlanes = [];
 
-   Swimlanes.find({ archived: true }).forEach(swimlane => {
 
-     archivedSwimlanes.push(swimlane._id);
 
-   });
 
-   const archivedLists = [];
 
-   Lists.find({ archived: true }).forEach(list => {
 
-     archivedLists.push(list._id);
 
-   });
 
-   selector = {
 
-     archived: false,
 
-     boardId: { $nin: archivedBoards, $in: permiitedBoards },
 
-     swimlaneId: { $nin: archivedSwimlanes },
 
-     listId: { $nin: archivedLists },
 
-     dueAt: { $ne: null },
 
-     endAt: null,
 
-   };
 
-   if (!allUsers) {
 
-     selector.$or = [{ members: user._id }, { assignees: user._id }];
 
-   }
 
-   const cards = Cards.find(selector, {
 
-     fields: {
 
-       _id: 1,
 
-       archived: 1,
 
-       boardId: 1,
 
-       swimlaneId: 1,
 
-       listId: 1,
 
-       title: 1,
 
-       type: 1,
 
-       sort: 1,
 
-       members: 1,
 
-       assignees: 1,
 
-       colors: 1,
 
-       dueAt: 1,
 
-     },
 
-   });
 
-   const boards = [];
 
-   const swimlanes = [];
 
-   const lists = [];
 
-   const users = [];
 
-   cards.forEach(card => {
 
-     if (card.boardId) boards.push(card.boardId);
 
-     if (card.swimlaneId) swimlanes.push(card.swimlaneId);
 
-     if (card.listId) lists.push(card.listId);
 
-     if (card.members) {
 
-       card.members.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-     if (card.assignees) {
 
-       card.assignees.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-   });
 
-   return [
 
-     cards,
 
-     Boards.find({ _id: { $in: boards } }),
 
-     Swimlanes.find({ _id: { $in: swimlanes } }),
 
-     Lists.find({ _id: { $in: lists } }),
 
-     Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
 
-   ];
 
- });
 
- Meteor.publish('globalSearch', function(queryParams) {
 
-   check(queryParams, Object);
 
-   // eslint-disable-next-line no-console
 
-   // console.log('queryParams:', queryParams);
 
-   const cards = Cards.globalSearch(queryParams).cards;
 
-   if (!cards) {
 
-     return [];
 
-   }
 
-   SessionData.upsert(
 
-     { userId: this.userId },
 
-     {
 
-       $set: {
 
-         totalHits: cards.count(),
 
-         lastHit: cards.count() > 50 ? 50 : cards.count(),
 
-       },
 
-     },
 
-   );
 
-   const boards = [];
 
-   const swimlanes = [];
 
-   const lists = [];
 
-   const users = [this.userId];
 
-   cards.forEach(card => {
 
-     if (card.boardId) boards.push(card.boardId);
 
-     if (card.swimlaneId) swimlanes.push(card.swimlaneId);
 
-     if (card.listId) lists.push(card.listId);
 
-     if (card.members) {
 
-       card.members.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-     if (card.assignees) {
 
-       card.assignees.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-   });
 
-   // eslint-disable-next-line no-console
 
-   // console.log('users:', users);
 
-   return [
 
-     cards,
 
-     Boards.find({ _id: { $in: boards } }),
 
-     Swimlanes.find({ _id: { $in: swimlanes } }),
 
-     Lists.find({ _id: { $in: lists } }),
 
-     Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
 
-     SessionData.find({ userId: this.userId }),
 
-   ];
 
- });
 
- Meteor.publish('brokenCards', function() {
 
-   const user = Users.findOne({ _id: this.userId });
 
-   const permiitedBoards = [null];
 
-   let selector = {};
 
-   selector.$or = [
 
-     { permission: 'public' },
 
-     { members: { $elemMatch: { userId: user._id, isActive: true } } },
 
-   ];
 
-   Boards.find(selector).forEach(board => {
 
-     permiitedBoards.push(board._id);
 
-   });
 
-   selector = {
 
-     boardId: { $in: permiitedBoards },
 
-     $or: [
 
-       { boardId: { $in: [null, ''] } },
 
-       { swimlaneId: { $in: [null, ''] } },
 
-       { listId: { $in: [null, ''] } },
 
-     ],
 
-   };
 
-   const cards = Cards.find(selector, {
 
-     fields: {
 
-       _id: 1,
 
-       archived: 1,
 
-       boardId: 1,
 
-       swimlaneId: 1,
 
-       listId: 1,
 
-       title: 1,
 
-       type: 1,
 
-       sort: 1,
 
-       members: 1,
 
-       assignees: 1,
 
-       colors: 1,
 
-       dueAt: 1,
 
-     },
 
-   });
 
-   const boards = [];
 
-   const swimlanes = [];
 
-   const lists = [];
 
-   const users = [];
 
-   cards.forEach(card => {
 
-     if (card.boardId) boards.push(card.boardId);
 
-     if (card.swimlaneId) swimlanes.push(card.swimlaneId);
 
-     if (card.listId) lists.push(card.listId);
 
-     if (card.members) {
 
-       card.members.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-     if (card.assignees) {
 
-       card.assignees.forEach(userId => {
 
-         users.push(userId);
 
-       });
 
-     }
 
-   });
 
-   return [
 
-     cards,
 
-     Boards.find({ _id: { $in: boards } }),
 
-     Swimlanes.find({ _id: { $in: swimlanes } }),
 
-     Lists.find({ _id: { $in: lists } }),
 
-     Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
 
-   ];
 
- });
 
 
  |