summaryrefslogtreecommitdiffstats
path: root/apps/admin/lib/myChangeNicknameValidator.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/admin/lib/myChangeNicknameValidator.php')
-rw-r--r--apps/admin/lib/myChangeNicknameValidator.php43
1 files changed, 43 insertions, 0 deletions
diff --git a/apps/admin/lib/myChangeNicknameValidator.php b/apps/admin/lib/myChangeNicknameValidator.php
new file mode 100644
index 0000000..e8dfdb1
--- /dev/null
+++ b/apps/admin/lib/myChangeNicknameValidator.php
@@ -0,0 +1,43 @@
+<?php
+
+class myChangeNicknameValidator extends sfValidator
+{
+ public function initialize($context, $parameters = null)
+ {
+ // initialize parent
+ parent::initialize($context);
+
+ // set defaults
+ $this->setParameter('change_error', 'Invalid input');
+
+ $this->getParameterHolder()->add($parameters);
+
+ return true;
+ }
+
+ public function execute(&$value, &$error)
+ {
+ $current_nickname = $this->getContext()->getUser()->getNickname();
+
+ $new_nickname = $value;
+
+ // changed the nickname?
+ if($new_nickname == $current_nickname)
+ return true;
+
+ $c = new Criteria();
+ $c->add(UserPeer::NICKNAME, $new_nickname);
+ $user = UserPeer::doSelectOne($c);
+
+ // nickname exists?
+ if($user)
+ {
+ $error = $this->getParameter('change_error');
+ return false;
+ }
+
+ return true;
+ }
+}
+
+?>