/** * check if a model field value is unique * @param \DB\Cortex $model * @param mixed $val * @param string $field * @param string $context * @return bool */ function unique($model, $val, $field, $context = null) { $valid = true; if (empty($val)) { return $valid; } if (!$this->f3->exists($context . '.unique', $errText)) { $errText = 'This ' . $field . ' is already taken'; } $filter = $model->dry() ? array($field . ' = ?', $val) : array($field . ' = ? and _id != ?', $val, $model->_id); if ($model->findone($filter)) { $this->f3->error(400, $errText); \Flash::instance()->setKey($context, 'has-error'); $valid = false; } return $valid; }