| 
									
										
										
										
											2023-07-19 18:03:05 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace BookStack\Activity\Notifications\Handlers; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-15 21:39:39 +08:00
										 |  |  | use BookStack\Activity\Models\Activity; | 
					
						
							| 
									
										
										
										
											2023-07-19 18:03:05 +08:00
										 |  |  | use BookStack\Activity\Models\Loggable; | 
					
						
							| 
									
										
										
										
											2023-08-04 23:51:29 +08:00
										 |  |  | use BookStack\Activity\Notifications\Messages\PageCreationNotification; | 
					
						
							| 
									
										
										
										
											2023-08-04 19:27:29 +08:00
										 |  |  | use BookStack\Activity\Tools\EntityWatchers; | 
					
						
							|  |  |  | use BookStack\Activity\WatchLevels; | 
					
						
							| 
									
										
										
										
											2023-08-04 23:51:29 +08:00
										 |  |  | use BookStack\Entities\Models\Page; | 
					
						
							| 
									
										
										
										
											2023-08-04 19:27:29 +08:00
										 |  |  | use BookStack\Users\Models\User; | 
					
						
							| 
									
										
										
										
											2023-07-19 18:03:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-05 21:19:23 +08:00
										 |  |  | class PageCreationNotificationHandler extends BaseNotificationHandler | 
					
						
							| 
									
										
										
										
											2023-07-19 18:03:05 +08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2023-08-15 21:39:39 +08:00
										 |  |  |     public function handle(Activity $activity, Loggable|string $detail, User $user): void | 
					
						
							| 
									
										
										
										
											2023-07-19 18:03:05 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-08-04 23:51:29 +08:00
										 |  |  |         if (!($detail instanceof Page)) { | 
					
						
							|  |  |  |             throw new \InvalidArgumentException("Detail for page create notifications must be a page"); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-08-04 19:27:29 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $watchers = new EntityWatchers($detail, WatchLevels::NEW); | 
					
						
							| 
									
										
										
										
											2023-08-15 21:39:39 +08:00
										 |  |  |         $this->sendNotificationToUserIds(PageCreationNotification::class, $watchers->getWatcherUserIds(), $user, $detail, $detail); | 
					
						
							| 
									
										
										
										
											2023-07-19 18:03:05 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | } |