/** * Validates the data and generates the slug for the data * @param mixed $data The data object of the model * @return null * @throws zibo\library\validation\exception\ValidationException when the data is not valid */ public function validate($data) { $slugString = $this->getSlugString($data); if ($slugString) { $slug = $baseSlug = String::safeString($slugString); $index = 1; do { $query = $this->createQuery(); $query->addCondition('{slug} = %1%', $slug); if ($data->id) { $query->addCondition('{id} <> %1%', $data->id); } if ($query->count()) { $slug = $baseSlug . '-' . $index; $index++; } else { break; } } while (true); $data->slug = $slug; } parent::validate($data); }
/** * Validates the provided subscriber * @param joppa\mailinglist\model\data\SubscriberData $data The subscriber to validate * @return null * @throws zibo\library\validation\exception\ValidationException when a validation exception occurs */ public function validate($data) { try { parent::validate($data); $exception = new ValidationException(); } catch (ValidationException $e) { $exception = $e; } $query = $this->createQuery(false); $query->addCondition('{email} = %1%', $data->email); if ($data->id) { $query->addCondition('{id} <> %1%', $data->id); } if ($query->count()) { $error = new ValidationError(self::TRANSLATION_ERROR_SUBSCRIBED, '%email% is already subscribed', array('email' => $data->email)); $exception->addErrors('email', array($error)); } if ($exception->hasErrors()) { throw $exception; } }