You are here

public function RadioactivityIncident::floodCheck in Radioactivity 7.2

Flood check Drupal only

File

includes/RadioactivityIncident.inc, line 69
Incident class

Class

RadioactivityIncident
@file Incident class

Code

public function floodCheck() {
  static $enabled;
  static $timeout;

  // Check flood protection
  if (!$this->floodProtected) {
    return TRUE;
  }
  if (!isset($enabled)) {
    $enabled = variable_get('radioactivity_flood_protection', FALSE);
    $timeout = variable_get('radioactivity_flood_timeout', 15) * 60;
  }
  if ($enabled) {

    // check the map for hits
    $hit = db_select('radioactivity_flood_map', 'fm')
      ->fields('fm', array(
      'time',
    ))
      ->condition('fm.source', $this->source)
      ->condition('fm.time', $this->time - $timeout, ">")
      ->execute()
      ->fetchObject();
    if ($hit) {
      return FALSE;
    }

    // insert current
    db_merge('radioactivity_flood_map')
      ->key(array(
      'source' => $this->source,
    ))
      ->fields(array(
      'source' => $this->source,
      'time' => $this->time,
    ))
      ->execute();
    return TRUE;
  }
  return TRUE;
}