From 392a83f0d6d4cc2a9296bb4175345412ebbc125a Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Mon, 1 Jul 2019 14:03:44 +0000 Subject: [PATCH] Added code to insert user custom fields after user creation. --- WEB-INF/templates/footer.tpl | 2 +- plugins/CustomFields.class.php | 51 ++++++++++++++++++++++++++++++++++ user_add.php | 6 +--- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index f03277b8..5f090d99 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.19.7.5027 | Copyright © Anuko | +  Anuko Time Tracker 1.19.7.5028 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/plugins/CustomFields.class.php b/plugins/CustomFields.class.php index d58cbe53..0ab33c74 100644 --- a/plugins/CustomFields.class.php +++ b/plugins/CustomFields.class.php @@ -354,4 +354,55 @@ class CustomFields { $affected = $mdb2->exec($sql); return (!is_a($affected, 'PEAR_Error')); } + + // insertEntityFields - inserts entity custom fields into tt_entity_custom_fields. + function insertEntityFields($entity_type, $entity_id, $entityFields) { + foreach ($entityFields as $entityField) { + if (!$this->insertEntityField($entity_type, $entity_id, $entityField)) + return false; + } + return true; + } + + // insertEntityField - inserts a single entity custom field into tt_entity_custom_fields. + function insertEntityField($entity_type, $entity_id, $entityField) { + global $user; + $mdb2 = getConnection(); + + $group_id = $user->getGroup(); + $org_id = $user->org_id; + + $created = 'now(), '.$mdb2->quote($_SERVER['REMOTE_ADDR']).', '.$user->id; + + $field_id = (int) $entityField['field_id']; + + $option_id = $entityField['type'] == CustomFields::TYPE_DROPDOWN ? (int) $entityField['value'] : null; + $value = $entityField['type'] == CustomFields::TYPE_TEXT ? $entityField['value'] : null; + + // TODO: add a jon to protect from bogus option_ids in post. + $sql = "insert into tt_entity_custom_fields". + " (group_id, org_id, entity_type, entity_id, field_id, option_id, value, created, created_ip, created_by)". + " values($group_id, $org_id, $entity_type, $entity_id, $field_id, ".$mdb2->quote($option_id).", ".$mdb2->quote($value).", $created)"; + $affected = $mdb2->exec($sql); + return (!is_a($affected, 'PEAR_Error')); + } + + // deleteEntityFields - deletes entity custom fields (permanently). + // Note: deleting, rather than marking fields deleted is on purpose + // because we want to keep the table small after multiple entity edits. + function deleteEntityFields($entity_type, $entity_id) { + global $user; + $mdb2 = getConnection(); + + $group_id = $user->getGroup(); + $org_id = $user->org_id; + + $modified_part = ', modified = now(), modified_ip = '.$mdb2->quote($_SERVER['REMOTE_ADDR']).', modified_by = '.$user->id; + + $sql = "delete from tt_entity_custom_fields". + " where entity_type = $entity_type and entity_id = $entity_id". + " and group_id = $group_id and org_id = $org_id"; + $affected = $mdb2->exec($sql); + return (!is_a($affected, 'PEAR_Error')); + } } diff --git a/user_add.php b/user_add.php index 83f3bbcb..0cd71b0a 100644 --- a/user_add.php +++ b/user_add.php @@ -215,11 +215,7 @@ if ($request->isPost()) { // Insert user custom fields if we have them. $result = true; if ($user_id && $custom_fields && $custom_fields->userFields) { - foreach($userCustomFields as $userField) { - if (!$result) break; - $result = true; // TODO: replace this with a function call that inserts a field. - // Perhaps the entire block should be in the function call? - } + $result = $custom_fields->insertEntityFields(CustomFields::ENTITY_USER, $user_id, $userCustomFields); } if ($user_id && $result) { -- 2.20.1