Skip to content
Snippets Groups Projects
Commit 3a467d81 authored by Peter Rotich's avatar Peter Rotich
Browse files

Add field lookup by name

parent 62a1ccfb
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
}
......
......@@ -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);
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment