Add mobile notification API calls
This commit is contained in:
parent
0c7b4a31f1
commit
2caec48e4c
@ -42,13 +42,18 @@ class Notifications {
|
|||||||
* Fetch all notifications for a user.
|
* Fetch all notifications for a user.
|
||||||
* @global $database
|
* @global $database
|
||||||
* @param User $user
|
* @param User $user
|
||||||
|
* @param bool $all If false, only returns unseen notifications.
|
||||||
* @return array
|
* @return array
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static function get(User $user) {
|
public static function get(User $user, bool $all = true) {
|
||||||
global $database, $Strings;
|
global $database, $Strings;
|
||||||
if ($user->exists()) {
|
if ($user->exists()) {
|
||||||
$notifications = $database->select('notifications', ['notificationid (id)', 'timestamp', 'title', 'content', 'url', 'seen', 'sensitive'], ['uid' => $user->getUID(), 'ORDER' => ['seen', 'timestamp' => 'DESC']]);
|
if ($all) {
|
||||||
|
$notifications = $database->select('notifications', ['notificationid (id)', 'timestamp', 'title', 'content', 'url', 'seen', 'sensitive'], ['uid' => $user->getUID(), 'ORDER' => ['seen', 'timestamp' => 'DESC']]);
|
||||||
|
} else {
|
||||||
|
$notifications = $database->select('notifications', ['notificationid (id)', 'timestamp', 'title', 'content', 'url', 'seen', 'sensitive'], ["AND" => ['uid' => $user->getUID(), 'seen' => 0], 'ORDER' => ['timestamp' => 'DESC']]);
|
||||||
|
}
|
||||||
for ($i = 0; $i < count($notifications); $i++) {
|
for ($i = 0; $i < count($notifications); $i++) {
|
||||||
$notifications[$i]['id'] = $notifications[$i]['id'] * 1;
|
$notifications[$i]['id'] = $notifications[$i]['id'] * 1;
|
||||||
$notifications[$i]['seen'] = ($notifications[$i]['seen'] == "1" ? true : false);
|
$notifications[$i]['seen'] = ($notifications[$i]['seen'] == "1" ? true : false);
|
||||||
@ -90,4 +95,5 @@ class Notifications {
|
|||||||
}
|
}
|
||||||
throw new Exception($Strings->get("user does not exist", false));
|
throw new Exception($Strings->get("user does not exist", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ $user_key_valid = $database->has('mobile_codes', ['[>]accounts' => ['uid' => 'ui
|
|||||||
if ($user_key_valid !== TRUE) {
|
if ($user_key_valid !== TRUE) {
|
||||||
engageRateLimit();
|
engageRateLimit();
|
||||||
//http_response_code(401);
|
//http_response_code(401);
|
||||||
insertAuthLog(21, null, "Username: " . $username . ", Key: " . $key);
|
Log::insert(LogType::MOBILE_BAD_KEY, null, "Username: " . $username . ", Key: " . $key);
|
||||||
die(json_encode(["status" => "ERROR", "msg" => "Invalid username and/or access key."]));
|
die(json_encode(["status" => "ERROR", "msg" => "Invalid username and/or access key."]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,6 +119,87 @@ switch ($VARS['action']) {
|
|||||||
|
|
||||||
$database->delete("onetimekeys", ["expires[<]" => date("Y-m-d H:i:s")]); // cleanup
|
$database->delete("onetimekeys", ["expires[<]" => date("Y-m-d H:i:s")]); // cleanup
|
||||||
exit(json_encode(["status" => "OK", "code" => $code]));
|
exit(json_encode(["status" => "OK", "code" => $code]));
|
||||||
|
case "checknotifications":
|
||||||
|
if (!empty($VARS['username'])) {
|
||||||
|
$user = User::byUsername($VARS['username']);
|
||||||
|
} else if (!empty($VARS['uid'])) {
|
||||||
|
$user = new User($VARS['uid']);
|
||||||
|
} else {
|
||||||
|
http_response_code(400);
|
||||||
|
die("\"400 Bad Request\"");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$notifications = Notifications::get($user, false);
|
||||||
|
exit(json_encode(["status" => "OK", "notifications" => $notifications]));
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
exit(json_encode(["status" => "ERROR", "msg" => $ex->getMessage()]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "readnotification":
|
||||||
|
if (!empty($VARS['username'])) {
|
||||||
|
$user = User::byUsername($VARS['username']);
|
||||||
|
} else if (!empty($VARS['uid'])) {
|
||||||
|
$user = new User($VARS['uid']);
|
||||||
|
} else {
|
||||||
|
http_response_code(400);
|
||||||
|
die("\"400 Bad Request\"");
|
||||||
|
}
|
||||||
|
if (empty($VARS['id'])) {
|
||||||
|
exit(json_encode(["status" => "ERROR", "msg" => $Strings->get("invalid parameters", false)]));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Notifications::read($user, $VARS['id']);
|
||||||
|
exit(json_encode(["status" => "OK"]));
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
exit(json_encode(["status" => "ERROR", "msg" => $ex->getMessage()]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "addnotification":
|
||||||
|
if (!empty($VARS['username'])) {
|
||||||
|
$user = User::byUsername($VARS['username']);
|
||||||
|
} else if (!empty($VARS['uid'])) {
|
||||||
|
$user = new User($VARS['uid']);
|
||||||
|
} else {
|
||||||
|
http_response_code(400);
|
||||||
|
die("\"400 Bad Request\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$timestamp = "";
|
||||||
|
if (!empty($VARS['timestamp'])) {
|
||||||
|
$timestamp = date("Y-m-d H:i:s", strtotime($VARS['timestamp']));
|
||||||
|
}
|
||||||
|
$url = "";
|
||||||
|
if (!empty($VARS['url'])) {
|
||||||
|
$url = $VARS['url'];
|
||||||
|
}
|
||||||
|
$nid = Notifications::add($user, $VARS['title'], $VARS['content'], $timestamp, $url, isset($VARS['sensitive']));
|
||||||
|
|
||||||
|
exit(json_encode(["status" => "OK", "id" => $nid]));
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
exit(json_encode(["status" => "ERROR", "msg" => $ex->getMessage()]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "deletenotification":
|
||||||
|
if (!empty($VARS['username'])) {
|
||||||
|
$user = User::byUsername($VARS['username']);
|
||||||
|
} else if (!empty($VARS['uid'])) {
|
||||||
|
$user = new User($VARS['uid']);
|
||||||
|
} else {
|
||||||
|
http_response_code(400);
|
||||||
|
die("\"400 Bad Request\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($VARS['id'])) {
|
||||||
|
exit(json_encode(["status" => "ERROR", "msg" => $Strings->get("invalid parameters", false)]));
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Notifications::delete($user, $VARS['id']);
|
||||||
|
exit(json_encode(["status" => "OK"]));
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
exit(json_encode(["status" => "ERROR", "msg" => $ex->getMessage()]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
http_response_code(404);
|
http_response_code(404);
|
||||||
die(json_encode(["status" => "ERROR", "msg" => "The requested action is not available."]));
|
die(json_encode(["status" => "ERROR", "msg" => "The requested action is not available."]));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user