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

Merge pull request #1993 from greezybacon/issue/user-import-update


users: Update information on CSV import

Reviewed-By: default avatarPeter Rotich <peter@osticket.com>
parents 14724e89 64fee583
No related branches found
No related tags found
No related merge requests found
...@@ -970,12 +970,20 @@ class DynamicFormEntry extends VerySimpleModel { ...@@ -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) { function save($refetch=false) {
if (count($this->dirty)) if (count($this->dirty))
$this->set('updated', new SqlFunction('NOW')); $this->set('updated', new SqlFunction('NOW'));
if (!parent::save($refetch || count($this->dirty))) if (!parent::save($refetch || count($this->dirty)))
return false; return false;
$dirty = 0;
foreach ($this->getAnswers() as $a) { foreach ($this->getAnswers() as $a) {
$field = $a->getField(); $field = $a->getField();
...@@ -998,10 +1006,14 @@ class DynamicFormEntry extends VerySimpleModel { ...@@ -998,10 +1006,14 @@ class DynamicFormEntry extends VerySimpleModel {
else else
$a->set('value', $val); $a->set('value', $val);
// Don't save answers for presentation-only fields // Don't save answers for presentation-only fields
if ($field->hasData() && !$field->isPresentationOnly()) if ($field->hasData() && !$field->isPresentationOnly()) {
if ($a->dirty)
$dirty++;
$a->save(); $a->save();
}
} }
$this->_values = null; $this->_values = null;
return $dirty;
} }
function delete() { function delete() {
......
...@@ -163,7 +163,7 @@ class User extends UserModel { ...@@ -163,7 +163,7 @@ class User extends UserModel {
var $_entries; var $_entries;
var $_forms; var $_forms;
static function fromVars($vars) { static function fromVars($vars, $update=false) {
// Try and lookup by email address // Try and lookup by email address
$user = static::lookupByEmail($vars['email']); $user = static::lookupByEmail($vars['email']);
if (!$user) { if (!$user) {
...@@ -196,6 +196,10 @@ class User extends UserModel { ...@@ -196,6 +196,10 @@ class User extends UserModel {
return null; return null;
} }
} }
elseif ($update) {
$errors = array();
$user->updateInfo($vars, $errors, true);
}
return $user; return $user;
} }
...@@ -472,7 +476,7 @@ class User extends UserModel { ...@@ -472,7 +476,7 @@ class User extends UserModel {
foreach ($users as $u) { foreach ($users as $u) {
$vars = array_combine($keys, $u); $vars = array_combine($keys, $u);
if (!static::fromVars($vars)) if (!static::fromVars($vars, true))
return sprintf(__('Unable to import user: %s'), return sprintf(__('Unable to import user: %s'),
print_r($vars, true)); print_r($vars, true));
} }
...@@ -526,7 +530,6 @@ class User extends UserModel { ...@@ -526,7 +530,6 @@ class User extends UserModel {
if (($f=$cd->getForm()) && $f->get('type') == 'U') { if (($f=$cd->getForm()) && $f->get('type') == 'U') {
if (($name = $f->getField('name'))) { if (($name = $f->getField('name'))) {
$this->name = $name->getClean(); $this->name = $name->getClean();
$this->save();
} }
if (($email = $f->getField('email'))) { if (($email = $f->getField('email'))) {
...@@ -534,10 +537,12 @@ class User extends UserModel { ...@@ -534,10 +537,12 @@ class User extends UserModel {
$this->default_email->save(); $this->default_email->save();
} }
} }
$cd->save(); // DynamicFormEntry::save returns the number of answers updated
if ($cd->save()) {
$this->updated = SqlFunction::NOW();
}
} }
return $this->save();
return true;
} }
function save($refetch=false) { function save($refetch=false) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment