session->get_user_id(); unset($attributes['request_timestamp']); // Insert using the transactionless connection. $database = database::get_transactionless_instance(); return $database->create($this->resource, $attributes); } /** * Get the number of requests since a given timestamp for a given IP * address. Handy for rate limiting. * * @param string $request_ip The IP to look at. * @param int $timestamp The timestamp to check from. * * @return int The number of requests on or after $timestamp. */ public function get_number_requests_since($request_ip, $timestamp) { $request_ip_escaped = $this->database->escape(ip2long($request_ip)); $timestamp_escaped = $this->database->escape( date('Y-m-d H:i:s', $timestamp) ); $query = ' select count(*) `number_requests_since` from `api_log` where `request_ip` = ' . $request_ip_escaped . ' and `request_timestamp` >= ' . $timestamp_escaped . ' '; $result = $this->database->query($query); $row = $result->fetch_assoc(); return $row['number_requests_since']; } }