EMongoUniqueValidator.php 932 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. /**
  3. * EMongoUniqueValidator.php
  4. *
  5. * PHP version 5.2+
  6. *
  7. * @author Dariusz Górecki <darek.krk@gmail.com>
  8. * @author Invenzzia Group, open-source division of CleverIT company http://www.invenzzia.org
  9. * @copyright 2011 CleverIT http://www.cleverit.com.pl
  10. * @license http://www.yiiframework.com/license/ BSD license
  11. * @version 1.3
  12. * @category ext
  13. * @package ext.YiiMongoDbSuite
  14. * @since v1.1
  15. */
  16. /**
  17. * @since v1.1
  18. */
  19. class EMongoUniqueValidator extends CValidator
  20. {
  21. public $allowEmpty=true;
  22. public function validateAttribute($object, $attribute)
  23. {
  24. $value = $object->{$attribute};
  25. if($this->allowEmpty && ($value === null || $value === ''))
  26. return;
  27. $criteria = new EMongoCriteria;
  28. $criteria->{$attribute} = $value;
  29. $count = $object->model()->count($criteria);
  30. if($count !== 0)
  31. $this->addError(
  32. $object,
  33. $attribute,
  34. Yii::t('yii', '{attribute} is not unique in DB.')
  35. );
  36. }
  37. }