function _webform_submission_limit_check in Webform 5
Same name and namespace in other branches
- 5.2 webform_submissions.inc \_webform_submission_limit_check()
- 6.2 webform_submissions.inc \_webform_submission_limit_check()
1 call to _webform_submission_limit_check()
- webform_client_form_validate in ./webform.module
File
- ./webform.inc, line 261
Code
function _webform_submission_limit_check($node, $form_values) {
global $user, $db_type;
if ($node->submit_limit == '-1') {
return false;
}
$query = "SELECT submitted, uid, remote_addr " . "FROM {webform_submissions} " . "WHERE (( 0 = %d AND remote_addr = '%s') OR uid = %d )" . "AND submitted > %d AND nid = %d";
$result = db_query($query, $user->uid, $_SERVER['REMOTE_ADDR'], $user->uid, time() - $node->submit_interval, $node->nid);
$num_submissions_database = db_num_rows($result);
if (variable_get("webform_use_cookies", 0)) {
$cookie_name = 'webform-' . $node->nid;
if (isset($_COOKIE[$cookie_name]) && is_array($_COOKIE[$cookie_name])) {
foreach ($_COOKIE[$cookie_name] as $key => $timestamp) {
if ($timestamp <= time() - $node->submit_interval) {
setcookie($cookie_name . "[" . $key . "]", "", 0);
}
}
$num_submissions_cookie = count($_COOKIE[$cookie_name]);
}
else {
$num_submissions_cookie = 0;
}
}
if ($num_submissions_database >= $node->submit_limit || $num_submissions_cookie >= $node->submit_limit) {
return $num_submissions_database;
}
else {
if (variable_get("webform_use_cookies", 0)) {
$attempted_key = 0;
if ($num_submissions_cookie > 0) {
while (array_key_exists($attempted_key, $_COOKIE[$cookie_name])) {
$attempted_key++;
}
}
setcookie($cookie_name . "[" . $attempted_key . "]", time(), time() + $node->submit_interval + 86400);
}
return false;
}
}