forked from Business/AccountHub
		
	
		
			
	
	
		
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | /* | ||
|  |  * This Source Code Form is subject to the terms of the Mozilla Public | ||
|  |  * License, v. 2.0. If a copy of the MPL was not distributed with this | ||
|  |  * file, You can obtain one at http://mozilla.org/MPL/2.0/. | ||
|  |  */ | ||
|  | 
 | ||
|  | class Notifications { | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Add a new notification. | ||
|  |      * @global $database | ||
|  |      * @param User $user | ||
|  |      * @param string $title | ||
|  |      * @param string $content | ||
|  |      * @param string $timestamp If left empty, the current date and time will be used. | ||
|  |      * @param string $url | ||
|  |      * @param bool $sensitive If true, the notification is marked as containing sensitive content, and the $content might be hidden on lockscreens and other non-secure places. | ||
|  |      * @return int The newly-created notification ID. | ||
|  |      * @throws Exception | ||
|  |      */ | ||
|  |     public static function add(User $user, string $title, string $content, string $timestamp = "", string $url = "", bool $sensitive = false): int { | ||
|  |         global $Strings; | ||
|  |         if ($user->exists()) { | ||
|  |             if (empty($title) || empty($content)) { | ||
|  |                 throw new Exception($Strings->get("invalid parameters", false)); | ||
|  |             } | ||
|  | 
 | ||
|  |             $timestamp = date("Y-m-d H:i:s"); | ||
|  |             if (!empty($timestamp)) { | ||
|  |                 $timestamp = date("Y-m-d H:i:s", strtotime($timestamp)); | ||
|  |             } | ||
|  | 
 | ||
|  |             $client = new GuzzleHttp\Client(); | ||
|  | 
 | ||
|  |             $response = $client | ||
|  |                     ->request('POST', PORTAL_API, [ | ||
|  |                 'form_params' => [ | ||
|  |                     'key' => PORTAL_KEY, | ||
|  |                     'action' => "addnotification", | ||
|  |                     'uid' => $user->getUID(), | ||
|  |                     'title' => $title, | ||
|  |                     'content' => $content, | ||
|  |                     'timestamp' => $timestamp, | ||
|  |                     'url' => $url, | ||
|  |                     'sensitive' => $sensitive | ||
|  |                 ] | ||
|  |             ]); | ||
|  | 
 | ||
|  |             if ($response->getStatusCode() > 299) { | ||
|  |                 sendError("Login server error: " . $response->getBody()); | ||
|  |             } | ||
|  | 
 | ||
|  |             $resp = json_decode($response->getBody(), TRUE); | ||
|  |             if ($resp['status'] == "OK") { | ||
|  |                 return $resp['id'] * 1; | ||
|  |             } else { | ||
|  |                 return false; | ||
|  |             } | ||
|  |         } | ||
|  |         throw new Exception($Strings->get("user does not exist", false)); | ||
|  |     } | ||
|  | 
 | ||
|  | } |