public function is_off_limit_submission($form_id) { $submission_limit_per_ip_per_form = (int) $this->get_setting('sub_limit_antispam'); if ($submission_limit_per_ip_per_form == 0) { return false; } //Calculate starting and ending timestamp for today. $N = time(); $n = 24 * 60 * 60; $t = $N % $n; $start_ts = $N - $t; $end_ts = $start_ts + $n - 1; $ip = $this->get_user_ip(); $res = RM_DBManager::get_generic('STATS', "COUNT(#UID#) AS `count`", "`form_id` = {$form_id} AND `user_ip` = '{$ip}' AND `submitted_on` BETWEEN '{$start_ts}' AND '{$end_ts}'"); if (!$res) { return false; } // IMP: Do not use '<='. As it counts already done submissions which excludes current submission. // If already done submissios are limit-1 then allow this one. Otherwise there will be one extra submission. if ((int) $res[0]->count < $submission_limit_per_ip_per_form) { return false; } else { return true; } }