Security update to Drupal 8.4.6
[yaffs-website] / web / core / modules / ban / src / BanIpManager.php
1 <?php
2
3 namespace Drupal\ban;
4
5 use Drupal\Core\Database\Connection;
6
7 /**
8  * Ban IP manager.
9  */
10 class BanIpManager implements BanIpManagerInterface {
11
12   /**
13    * The database connection used to check the IP against.
14    *
15    * @var \Drupal\Core\Database\Connection
16    */
17   protected $connection;
18
19   /**
20    * Construct the BanSubscriber.
21    *
22    * @param \Drupal\Core\Database\Connection $connection
23    *   The database connection which will be used to check the IP against.
24    */
25   public function __construct(Connection $connection) {
26     $this->connection = $connection;
27   }
28
29   /**
30    * {@inheritdoc}
31    */
32   public function isBanned($ip) {
33     return (bool) $this->connection->query("SELECT * FROM {ban_ip} WHERE ip = :ip", [':ip' => $ip])->fetchField();
34   }
35
36   /**
37    * {@inheritdoc}
38    */
39   public function findAll() {
40     return $this->connection->query('SELECT * FROM {ban_ip}');
41   }
42
43   /**
44    * {@inheritdoc}
45    */
46   public function banIp($ip) {
47     $this->connection->merge('ban_ip')
48       ->key(['ip' => $ip])
49       ->fields(['ip' => $ip])
50       ->execute();
51   }
52
53   /**
54    * {@inheritdoc}
55    */
56   public function unbanIp($id) {
57     $this->connection->delete('ban_ip')
58       ->condition('ip', $id)
59       ->execute();
60   }
61
62   /**
63    * {@inheritdoc}
64    */
65   public function findById($ban_id) {
66     return $this->connection->query("SELECT ip FROM {ban_ip} WHERE iid = :iid", [':iid' => $ban_id])->fetchField();
67   }
68
69 }