diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index bcf0503dd61ed463f5abfb2ea7f97833ad9d4440..b99ce62eb1608137cab54d1b73d2f8d79a264469 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -970,12 +970,20 @@ class DynamicFormEntry extends VerySimpleModel { } } + /** + * Save the form entry and all associated answers. + * + * Returns: + * (mixed) FALSE if updated failed, otherwise the number of dirty answers + * which were save is returned (which may be ZERO). + */ function save($refetch=false) { if (count($this->dirty)) $this->set('updated', new SqlFunction('NOW')); if (!parent::save($refetch || count($this->dirty))) return false; + $dirty = 0; foreach ($this->getAnswers() as $a) { $field = $a->getField(); @@ -998,10 +1006,14 @@ class DynamicFormEntry extends VerySimpleModel { else $a->set('value', $val); // Don't save answers for presentation-only fields - if ($field->hasData() && !$field->isPresentationOnly()) + if ($field->hasData() && !$field->isPresentationOnly()) { + if ($a->dirty) + $dirty++; $a->save(); + } } $this->_values = null; + return $dirty; } function delete() { diff --git a/include/class.user.php b/include/class.user.php index 635a6079dbd876386e493a4fc6de50e40bd14dac..c563f24b11899758abdd6f256ffc9fa3ed0cb865 100644 --- a/include/class.user.php +++ b/include/class.user.php @@ -163,7 +163,7 @@ class User extends UserModel { var $_entries; var $_forms; - static function fromVars($vars) { + static function fromVars($vars, $update=false) { // Try and lookup by email address $user = static::lookupByEmail($vars['email']); if (!$user) { @@ -196,6 +196,10 @@ class User extends UserModel { return null; } } + elseif ($update) { + $errors = array(); + $user->updateInfo($vars, $errors, true); + } return $user; } @@ -472,7 +476,7 @@ class User extends UserModel { foreach ($users as $u) { $vars = array_combine($keys, $u); - if (!static::fromVars($vars)) + if (!static::fromVars($vars, true)) return sprintf(__('Unable to import user: %s'), print_r($vars, true)); } @@ -526,7 +530,6 @@ class User extends UserModel { if (($f=$cd->getForm()) && $f->get('type') == 'U') { if (($name = $f->getField('name'))) { $this->name = $name->getClean(); - $this->save(); } if (($email = $f->getField('email'))) { @@ -534,10 +537,12 @@ class User extends UserModel { $this->default_email->save(); } } - $cd->save(); + // DynamicFormEntry::save returns the number of answers updated + if ($cd->save()) { + $this->updated = SqlFunction::NOW(); + } } - - return true; + return $this->save(); } function save($refetch=false) {