diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index 945d188f17b2b62fe87c5220d6ed911372799b5f..081ceabc7d342a110791065e8f48c13296c3b045 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -70,7 +70,7 @@ class DynamicForm extends VerySimpleModel { function getField($name) { foreach ($this->getDynamicFields() as $f) if (!strcasecmp($f->get('name'), $name)) - return $f; + return $f->getImpl(); } function hasField($name) { diff --git a/include/class.user.php b/include/class.user.php index 269e202cad3d479a9c47a0e04844fece79955ce2..d05e1fd1b242aa0c2e8b4c29b0bbff8e8401a9b1 100644 --- a/include/class.user.php +++ b/include/class.user.php @@ -67,6 +67,7 @@ class UserModel extends VerySimpleModel { class User extends UserModel { var $_entries; + var $_forms; function __construct($ht) { parent::__construct($ht); @@ -119,11 +120,16 @@ class User extends UserModel { return new PersonsName($this->name); } + function getUpdateDate() { + return $this->updated; + } + function to_json() { $info = array( 'id' => $this->getId(), - 'name' => (string) $this->getName()); + 'name' => (string) $this->getName(), + 'email' => (string) $this->getEmail()); return JsonDataEncoder::encode($info); } @@ -154,6 +160,67 @@ class User extends UserModel { return $this->_entries; } + function getForms($populate=true) { + + if (!isset($this->_forms)) { + $this->_forms = array(); + foreach ($this->getDynamicData() as $cd) { + $cd->addMissingFields(); + if($populate + && ($form = $cd->getForm()) + && $form->get('type') == 'U' ) { + foreach ($cd->getFields() as $f) { + if ($f->get('name') == 'name') + $f->value = $this->getFullName(); + elseif ($f->get('name') == 'email') + $f->value = $this->getEmail(); + } + } + + $this->_forms[] = $cd->getForm(); + } + } + + return $this->_forms; + } + + function updateInfo($vars, &$errors) { + + $valid = true; + $forms = $this->getForms(false); + foreach ($forms as $cd) { + if (!$cd->isValid()) + $valid = false; + elseif (($f=$cd->getField('email')) + && $cd->get('type') == 'U' + && ($u=User::lookup(array('emails__address'=>$f->getClean()))) + && $u->id != $this->getId()) { + $valid = false; + $f->addError('Email is assigned to another user'); + } + } + + if (!$valid) + return false; + + foreach ($this->getDynamicData() as $cd) { + if (($f=$cd->getForm()) && $f->get('type') == 'U') { + if (($name = $f->getField('name'))) { + $this->name = $name->getClean(); + $this->save(); + } + + if (($email = $f->getField('email'))) { + $this->default_email->address = $email->getClean(); + $this->default_email->save(); + } + } + $cd->save(); + } + + return true; + } + function save($refetch=false) { // Drop commas and reorganize the name without them $parts = array_map('trim', explode(',', $this->name));