2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								var  topics  =  require ( '../topics' ) ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									threadTools  =  require ( '../threadTools' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									index  =  require ( './index' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-26 16:22:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									async  =  require ( 'async' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									SocketTopics  =  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . post  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-14 07:39:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! data )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'Invalid data' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! socket . uid  &&  ! parseInt ( meta . config . allowGuestPosting ,  10 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										socket . emit ( 'event:alert' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title :  'Post Unsuccessful' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											message :  'You don't seem to be logged in, so you cannot reply.' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											type :  'danger' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											timeout :  2000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 15:46:39 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'not-logged-in' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									topics . post ( socket . uid ,  data . title ,  data . content ,  data . category _id ,  function ( err ,  result )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										if ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 	if  ( err . message  ===  'title-too-short' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 16:00:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												module . parent . exports . emitAlert ( socket ,  'Title too short' ,  'Please enter a longer title. At least '  +  meta . config . minimumTitleLength  +  ' characters.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											}  else  if  ( err . message  ===  'title-too-long' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 16:00:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												module . parent . exports . emitAlert ( socket ,  'Title too long' ,  'Please enter a shorter title. Titles can\'t be longer than '  +  meta . config . maximumTitleLength  +  ' characters.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											}  else  if  ( err . message  ===  'content-too-short' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 16:00:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												module . parent . exports . emitContentTooShortAlert ( socket ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											}  else  if  ( err . message  ===  'too-many-posts' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 16:00:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												module . parent . exports . emitTooManyPostsAlert ( socket ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											}  else  if  ( err . message  ===  'no-privileges' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												socket . emit ( 'event:alert' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title :  'Unable to post' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													message :  'You do not have posting privileges in this category.' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													type :  'danger' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													timeout :  7500 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												socket . emit ( 'event:alert' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title :  'Error' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													message :  err . message , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													type :  'warning' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													timeout :  7500 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 15:46:39 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  callback ( err ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( result )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											index . server . sockets . in ( 'category_'  +  data . category _id ) . emit ( 'event:new_topic' ,  result . topicData ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											index . server . sockets . in ( 'recent_posts' ) . emit ( 'event:new_topic' ,  result . topicData ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											index . server . sockets . in ( 'user/'  +  socket . uid ) . emit ( 'event:new_post' ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												posts :  result . postData 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											module . parent . exports . emitTopicPostStats ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-14 07:39:01 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											socket . emit ( 'event:alert' ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												title :  'Thank you for posting' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												message :  'You have successfully posted. Click here to view your post.' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												type :  'success' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												timeout :  2000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											callback ( null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . postcount  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									topics . getTopicField ( tid ,  'postcount' ,  callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 10:06:13 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . markAsRead  =  function ( socket ,  data )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! data  ||  ! data . tid  ||  ! data . uid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									topics . markAsRead ( data . tid ,  data . uid ,  function ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										topics . pushUnreadCount ( data . uid ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . markAllRead  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									topics . markAllRead ( socket . uid ,  function ( err )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  callback ( err ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 10:06:13 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										index . server . sockets . in ( 'uid_'  +  socket . uid ) . emit ( 'event:unread.updateCount' ,  null ,  [ ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										callback ( null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-17 17:26:07 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . markAsUnreadForAll  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									topics . markAsUnreadForAll ( tid ,  function ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  callback ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										topics . pushUnreadCount ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										callback ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  doTopicAction ( action ,  socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! tid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'Invalid tid' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									threadTools . privileges ( tid ,  socket . uid ,  function ( err ,  privileges )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  callback ( err ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( ! privileges  ||  ! privileges . editable )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  callback ( new  Error ( 'not-allowed' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( threadTools [ action ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											threadTools [ action ] ( tid ,  socket . uid ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . delete  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doTopicAction ( 'delete' ,  socket ,  tid ,  callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . restore  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doTopicAction ( 'restore' ,  socket ,  tid ,  callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . lock  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doTopicAction ( 'lock' ,  socket ,  tid ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . unlock  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doTopicAction ( 'unlock' ,  socket ,  tid ,  callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . pin  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doTopicAction ( 'pin' ,  socket ,  tid ,  callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 19:58:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . unpin  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doTopicAction ( 'unpin' ,  socket ,  tid ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . createTopicFromPosts  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! socket . uid )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										socket . emit ( 'event:alert' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title :  'Can't fork' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											message :  'Guests can't fork topics!' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											type :  'warning' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											timeout :  2000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! data  ||  ! data . title  ||  ! data . pids  ||  ! Array . isArray ( data . pids ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'invalid data' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									topics . createTopicFromPosts ( socket . uid ,  data . title ,  data . pids ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . movePost  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! socket . uid )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										socket . emit ( 'event:alert' ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title :  'Can't fork' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											message :  'Guests can't fork topics!' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											type :  'warning' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											timeout :  2000 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! data  ||  ! data . pid  ||  ! data . tid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'invalid data' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-19 17:28:08 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									threadTools . privileges ( data . tid ,  socket . uid ,  function ( err ,  privileges )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  callback ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ! ( privileges . admin  ||  privileges . moderator ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  callback ( new  Error ( 'not allowed' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										topics . movePostToTopic ( data . pid ,  data . tid ,  callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . move  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! data  ||  ! data . tid  ||  ! data . cid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'invalid data' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									threadTools . move ( data . tid ,  data . cid ,  function ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  callback ( err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										index . server . sockets . in ( 'topic_'  +  data . tid ) . emit ( 'event:topic_moved' ,  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											tid :  data . tid 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										callback ( null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . followCheck  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									threadTools . isFollowing ( tid ,  socket . uid ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . follow  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! socket . uid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'not-logged-in' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									threadTools . toggleFollow ( tid ,  socket . uid ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . loadMore  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! data  ||  ! data . tid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'invalid data' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-24 20:00:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  postsPerPage  =  parseInt ( meta . config . postsPerPage ,  10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									postsPerPage  =  postsPerPage  ?  postsPerPage  :  20 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-26 17:17:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  start  =  parseInt ( data . after ,  10 ) , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-24 20:00:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										end  =  start  +  postsPerPage  -  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-26 16:22:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									async . parallel ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										posts :  function ( next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topics . getTopicPosts ( data . tid ,  start ,  end ,  socket . uid ,  next ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										privileges :  function ( next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											threadTools . privileges ( data . tid ,  socket . uid ,  next ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-24 20:00:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-26 16:22:50 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ,  function ( err ,  results )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										callback ( err ,  results ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . loadMoreRecentTopics  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! data  ||  ! data . term )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  callback ( new  Error ( 'invalid data' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-26 17:17:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  start  =  parseInt ( data . after ,  10 ) , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										end  =  start  +  9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									topics . getLatestTopics ( socket . uid ,  start ,  end ,  data . term ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 16:10:23 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . loadMoreUnreadTopics  =  function ( socket ,  data ,  callback )  {  
						 
					
						
							
								
									
										
										
										
											2014-01-26 17:17:34 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  start  =  parseInt ( data . after ,  10 ) , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										end  =  start  +  9 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 20:53:32 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									topics . getUnreadTopics ( socket . uid ,  start ,  end ,  callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-24 20:00:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SocketTopics . getPageCount  =  function ( socket ,  tid ,  callback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									topics . getPageCount ( tid ,  callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-10 10:46:26 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								module . exports  =  SocketTopics ;