From 9aaf7e1014983616fa9a7aa4a92f1bfb905da0d9 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Wed, 9 Aug 2017 12:48:16 +0200 Subject: [PATCH] Add UserRequest model and use it in Users class --- Changelog | 1 + app/Models/UserRequest.php | 27 +++++++++++++++++++++++++++ nntmux/Users.php | 36 ++++++++++++++---------------------- 3 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 app/Models/UserRequest.php diff --git a/Changelog b/Changelog index 59567345a..78a42bc6e 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2017-08-09 DariusIII + * Chg: Add UserRequest model and use it in Users class * Chg: Update jquery-goup to latest version * Chg: Remove confusing error message from sendEmail function 2017-08-08 DariusIII diff --git a/app/Models/UserRequest.php b/app/Models/UserRequest.php new file mode 100644 index 000000000..fc7a96d61 --- /dev/null +++ b/app/Models/UserRequest.php @@ -0,0 +1,27 @@ +pdo->queryExec(sprintf('DELETE FROM user_requests WHERE users_id = %d', $userID)); + UserRequest::query()->where('users_id', $userID)->delete(); } /** @@ -1343,15 +1344,14 @@ class Users * @param int $userID * * @return int + * @throws \Exception */ public function getApiRequests($userID) { // Clear old requests. $this->clearApiRequests($userID); - $requests = $this->pdo->queryOneRow( - sprintf('SELECT COUNT(id) AS num FROM user_requests WHERE users_id = %d', $userID) - ); - return (!$requests ? 0 : (int)$requests['num']); + $requests = UserRequest::query()->where('users_id', $userID)->count('id'); + return (!$requests ? 0 : $requests); } /** @@ -1363,35 +1363,25 @@ class Users */ public function addApiRequest($userID, $request): void { - $this->pdo->queryInsert( - sprintf( - 'INSERT INTO user_requests (users_id, request, timestamp) VALUES (%d, %s, NOW())', - $userID, - $this->pdo->escapeString($request) - ) - ); + UserRequest::query()->insert(['users_id' => $userID, 'request' => $request, 'timestamp'=> new \DateTime('Y-m-d H:i:s')]); } /** * Delete api requests older than a day. * - * @param int|bool $userID + * @param int|bool $userID * int The users ID. * bool false do all user ID's.. * * @return void + * @throws \Exception */ protected function clearApiRequests($userID): void { if ($userID === false) { - $this->pdo->queryExec('DELETE FROM user_requests WHERE timestamp < DATE_SUB(NOW(), INTERVAL 1 DAY)'); + UserRequest::query()->where('timestamp', '<', date_sub(new \DateTime('Y-m-d H:i:s'), new \DateInterval('P1D')))->delete(); } else { - $this->pdo->queryExec( - sprintf( - 'DELETE FROM user_requests WHERE users_id = %d AND timestamp < DATE_SUB(NOW(), INTERVAL 1 DAY)', - $userID - ) - ); + UserRequest::query()->where('users_id', $userID)->where('timestamp', '<', date_sub(new \DateTime('Y-M-D H:i:s'), new \DateInterval('P1D')))->delete(); } } @@ -1402,15 +1392,17 @@ class Users * limits to apply. * * @param int $days + * + * @throws \Exception */ - public function pruneRequestHistory($days = 0) + public function pruneRequestHistory($days = 0): void { if ($days === 0) { $days = 1; $this->pdo->queryExec('UPDATE user_downloads SET releases_id = null'); } - $this->pdo->queryExec(sprintf('DELETE FROM user_requests WHERE timestamp < DATE_SUB(NOW(), INTERVAL %d DAY)', $days)); + UserRequest::query()->where('timestamp', '<', date_sub(new \DateTime('Y-m-d H:i:s'), new \DateInterval('P' . $days . 'D')))->delete(); $this->pdo->queryExec(sprintf('DELETE FROM user_downloads WHERE timestamp < DATE_SUB(NOW(), INTERVAL %d DAY)', $days)); }