47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace BookStack\Settings; | ||
|  | 
 | ||
|  | use BookStack\Users\Models\User; | ||
|  | 
 | ||
|  | class UserNotificationPreferences | ||
|  | { | ||
|  |     public function __construct( | ||
|  |         protected User $user | ||
|  |     ) { | ||
|  |     } | ||
|  | 
 | ||
|  |     public function notifyOnOwnPageChanges(): bool | ||
|  |     { | ||
|  |         return $this->getNotificationSetting('own-page-changes'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function notifyOnOwnPageComments(): bool | ||
|  |     { | ||
|  |         return $this->getNotificationSetting('own-page-comments'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function notifyOnCommentReplies(): bool | ||
|  |     { | ||
|  |         return $this->getNotificationSetting('comment-replies'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function updateFromSettingsArray(array $settings) | ||
|  |     { | ||
|  |         $allowList = ['own-page-changes', 'own-page-comments', 'comment-replies']; | ||
|  |         foreach ($settings as $setting => $status) { | ||
|  |             if (!in_array($setting, $allowList)) { | ||
|  |                 continue; | ||
|  |             } | ||
|  | 
 | ||
|  |             $value = $status === 'true' ? 'true' : 'false'; | ||
|  |             setting()->putUser($this->user, 'notifications#' . $setting, $value); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     protected function getNotificationSetting(string $key): bool | ||
|  |     { | ||
|  |         return setting()->getUser($this->user, 'notifications#' . $key); | ||
|  |     } | ||
|  | } |