diff --git a/include/ajax.forms.php b/include/ajax.forms.php index be185fc29f4d47cde1df6dafadb596aaeed564bb..5765c7286b03ba3aff9af1d3f527fad86d57cde7 100644 --- a/include/ajax.forms.php +++ b/include/ajax.forms.php @@ -61,6 +61,7 @@ class DynamicFormsAjaxAPI extends AjaxController { function saveUserInfo($user_id) { $user = User::lookup($user_id); + //TODO: Move save user logic to user class. $custom_data = $user->getDynamicData(); $custom = array(); $valid = true; @@ -71,38 +72,35 @@ class DynamicFormsAjaxAPI extends AjaxController { } if ($valid) { - foreach ($custom_data as $cd) - foreach ($cd->getFields() as $f) - if ($f->get('name') == 'email') - $email = $f; - $u = User::lookup(array('emails__address'=>$email->getClean())); - if ($u && $u->id != $user_id) { - $valid = false; - $email->addError('Email is assigned to another user'); - } - } - - if (!$valid) { - include(STAFFINC_DIR . 'templates/user-info.tmpl.php'); - return; - } - - // Save custom data - foreach ($custom_data as $cd) { - foreach ($cd->getFields() as $f) { - if ($f->get('name') == 'name') { - $user->name = $f->getClean(); - $user->save(); + // Make sure email is uniqueue + foreach ($custom_data as $cd) { + if (($f=$cd->getField('email')) + && ($u=User::lookup(array('emails__address'=>$f->getClean()))) + && $u->id != $user_id) { + $valid = false; + $f->addError('Email is assigned to another user'); } - elseif ($f->get('name') == 'email') { - $user->default_email->address = $f->getClean(); - $user->default_email->save(); + } + // Save custom data + if ($valid) { + foreach ($custom_data as $cd) { + foreach ($cd->getFields() as $f) { + if ($f->get('name') == 'name') { + $user->name = $f->getClean(); + $user->save(); + } elseif ($f->get('name') == 'email') { + $user->default_email->address = $f->getClean(); + $user->default_email->save(); + } + } + $cd->save(); } + return Http::response(201, $user->to_json()); } - $cd->save(); } - return Http::response(201, $user->to_json()); + include(STAFFINC_DIR . 'templates/user-info.tmpl.php'); + return; } } diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index f49d819ba8cb4768dbbc0a8589142feec2842af8..945d188f17b2b62fe87c5220d6ed911372799b5f 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -67,12 +67,17 @@ class DynamicForm extends VerySimpleModel { return call_user_func_array($delegate, $args); } - function hasField($name) { + function getField($name) { foreach ($this->getDynamicFields() as $f) - if ($f->get('name') == $name) - return true; + if (!strcasecmp($f->get('name'), $name)) + return $f; } + function hasField($name) { + return ($this->getField($name)); + } + + function getTitle() { return $this->get('title'); } function getInstructions() { return $this->get('instructions'); } @@ -404,6 +409,15 @@ class DynamicFormEntry extends VerySimpleModel { return $this->_fields; } + function getField($name) { + + foreach ($this->getFields() as $field) + if (!strcasecmp($field->get('name'), $name)) + return $field; + + return null; + } + /** * Validate the form and indicate if there no errors. * @@ -453,8 +467,8 @@ class DynamicFormEntry extends VerySimpleModel { $this->object_id = $user_id; } - function render($staff=true) { - return $this->getForm()->render($staff); + function render($staff=true, $title=false) { + return $this->getForm()->render($staff, $title); } /**