From 64fee583cf6df37a836c698424564e36fca8f717 Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Wed, 29 Apr 2015 15:44:01 -0500 Subject: [PATCH] user: Touch `updated` time when updating custom data --- include/class.dynamic_forms.php | 14 +++++++++++++- include/class.user.php | 23 +++++++---------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index bcf0503dd..b99ce62eb 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 4933d8f12..a7eb096d2 100644 --- a/include/class.user.php +++ b/include/class.user.php @@ -197,18 +197,8 @@ class User extends UserModel { } } elseif ($update) { - foreach ($user->getDynamicData() as $entry) { - // FIXME: Convert this to ->form for `develop-next` - if ($entry->getForm()->type == 'U') { - $entry->setSource($vars); - $entry->save(); - } - } - // Update name - if (isset($vars['name'])) { - $user->name = $vars['name']; - $user->save(); - } + $errors = array(); + $user->updateInfo($vars, $errors, true); } return $user; @@ -540,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'))) { @@ -548,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) { -- GitLab