Exemple #1
0
 /**
  * Check if the number or records in the database exceeds the set limit
  * 
  * @see \Spork\Mvc\Listener\Limit\Storage\StorageInterface::check()
  * @param string $ip
  * @param Limit $limit
  * @return boolean
  */
 public function check($ip, Limit $limit)
 {
     $this->assertReady();
     if ($this->cleanOnCheck) {
         $this->clean();
     }
     $sql = sprintf("SELECT count(*) as count FROM %s WHERE %s=:ip AND %s=:type AND %s >= NOW() - INTERVAL %d SECOND", $this->dbAdapter->platform->quoteIdentifier($this->table), $this->dbAdapter->platform->quoteIdentifier($this->ipColumn), $this->dbAdapter->platform->quoteIdentifier($this->typeColumn), $this->dbAdapter->platform->quoteIdentifier($this->timestampColumn), $limit->getInterval()->toSeconds());
     $parameters = array('ip' => $ip, 'type' => $limit->getName());
     $result = $this->dbAdapter->query($sql, $parameters);
     $count = $result->current()->count;
     return $count >= $limit->getLimit();
 }