| <?php |
|
|
| namespace SimpleValidator\Validators; |
|
|
| use PDO; |
|
|
| class Unique extends Base |
| { |
| private $pdo; |
| private $primary_key; |
| private $table; |
|
|
| public function __construct($field, $error_message, PDO $pdo, $table, $primary_key = 'id') |
| { |
| parent::__construct($field, $error_message); |
|
|
| $this->pdo = $pdo; |
| $this->primary_key = $primary_key; |
| $this->table = $table; |
| } |
|
|
| public function execute(array $data) |
| { |
| if ($this->isFieldNotEmpty($data)) { |
| if (! isset($data[$this->primary_key])) { |
| $rq = $this->pdo->prepare('SELECT 1 FROM '.$this->table.' WHERE '.$this->field.'=?'); |
| $rq->execute(array($data[$this->field])); |
| } |
| else { |
|
|
| $rq = $this->pdo->prepare( |
| 'SELECT 1 FROM '.$this->table.' |
| WHERE '.$this->field.'=? AND '.$this->primary_key.' != ?' |
| ); |
|
|
| $rq->execute(array($data[$this->field], $data[$this->primary_key])); |
| } |
|
|
| $result = $rq->fetchColumn(); |
|
|
| if ($result == 1) { |
| return false; |
| } |
| } |
|
|
| return true; |
| } |
| } |
|
|