diff --git a/web/index_sent.php b/web/index_sent.php
index 7844f5f..8a9795b 100644
--- a/web/index_sent.php
+++ b/web/index_sent.php
@@ -21,7 +21,7 @@
Message sent
Message succesfully sent
- /100 remaining
+ / remaining
diff --git a/web/js/logic.js b/web/js/logic.js
index dc3c682..1c5135b 100644
--- a/web/js/logic.js
+++ b/web/js/logic.js
@@ -55,6 +55,7 @@ function send()
'?ok=' + 1 +
'&message_count=' + resp.messagecount +
'"a=' + resp.quota +
+ '"a_max=' + resp.quota_max +
'&preset_user_id=' + uid.value +
'&preset_user_key=' + key.value;
}
diff --git a/web/schema.sql b/web/schema.sql
index 048e43d..5a8f95b 100644
--- a/web/schema.sql
+++ b/web/schema.sql
@@ -6,5 +6,10 @@ CREATE TABLE `users`
`messages_sent` INT(11) NOT NULL DEFAULT '0',
`timestamp_created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`timestamp_accessed` DATETIME NULL DEFAULT NULL,
+
+ `quota_today` INT(11) NOT NULL DEFAULT '0',
+ `quota_day` DATE NULL DEFAULT NULL,
+ `quota_max` INT(11) NOT NULL DEFAULT '100',
+
PRIMARY KEY (`id`)
);
diff --git a/web/send.php b/web/send.php
index fab9b88..7aa0090 100644
--- a/web/send.php
+++ b/web/send.php
@@ -22,15 +22,15 @@ if ($content === null || $content === false) $content = '';
//------------------------------------------------------------------
-if (strlen(trim($message)) == 0) die(json_encode(['success' => false, 'errhighlight' => 103, 'message' => 'No title specified']));
-if (strlen($message) > 120) die(json_encode(['success' => false, 'errhighlight' => 103, 'message' => 'Title too long (120 characters)']));
-if (strlen($content) > 10000) die(json_encode(['success' => false, 'errhighlight' => 104, 'message' => 'Content too long (10000 characters)']));
+if (strlen(trim($message)) == 0) die(json_encode(['success' => false, 'errhighlight' => 103, 'message' => 'No title specified']));
+if (strlen($message) > 120) die(json_encode(['success' => false, 'errhighlight' => 103, 'message' => 'Title too long (120 characters)']));
+if (strlen($content) > 10000) die(json_encode(['success' => false, 'errhighlight' => 104, 'message' => 'Content too long (10000 characters)']));
//------------------------------------------------------------------
$pdo = getDatabase();
-$stmt = $pdo->prepare('SELECT user_id, user_key, fcm_token, messages_sent FROM users WHERE user_id = :uid LIMIT 1');
+$stmt = $pdo->prepare('SELECT user_id, user_key, fcm_token, messages_sent, quota_today, quota_max, quota_day FROM users WHERE user_id = :uid LIMIT 1');
$stmt->execute(['uid' => $user_id]);
$datas = $stmt->fetchAll(PDO::FETCH_ASSOC);
@@ -43,6 +43,10 @@ if ($data['user_key'] !== $user_key) die(json_encode(['success' => false, 'errhi
$fcm = $data['fcm_token'];
+$new_quota = $data['quota_today'] + 1;
+if ($data['quota_day'] === null || $data['quota_day'] !== date("Y-m-d")) $new_quota=0;
+if ($new_quota > $data['quota_max']) die(json_encode(['success' => false, 'errhighlight' => -1, 'message' => 'Daily quota reached ('.$data['quota_max'].')']));
+
//------------------------------------------------------------------
$url = "https://fcm.googleapis.com/fcm/send";
@@ -77,14 +81,16 @@ catch (Exception $e)
die(json_encode(['success' => false, 'message' => 'Exception: ' . $e->getMessage()]));
}
-$stmt = $pdo->prepare('UPDATE users SET timestamp_accessed=NOW(), messages_sent=messages_sent+1 WHERE user_id = :uid');
-$stmt->execute(['uid' => $user_id]);
+$stmt = $pdo->prepare('UPDATE users SET timestamp_accessed=NOW(), messages_sent=messages_sent+1, quota_today=:q, quota_day=NOW() WHERE user_id = :uid');
+$stmt->execute(['uid' => $user_id, 'q' => $new_quota]);
echo (json_encode(
[
'success' => true,
'message' => 'Message sent',
'response' => $httpresult,
- 'messagecount' => $data['messages_sent']+1
+ 'messagecount' => $data['messages_sent']+1,
+ 'quota'=>$new_quota,
+ 'quota_max'=>$data['quota_max'],
]));
return 0;
\ No newline at end of file