Added code to insert user custom fields after user creation.
authorNik Okuntseff <support@anuko.com>
Mon, 1 Jul 2019 14:03:44 +0000 (14:03 +0000)
committerNik Okuntseff <support@anuko.com>
Mon, 1 Jul 2019 14:03:44 +0000 (14:03 +0000)
WEB-INF/templates/footer.tpl
plugins/CustomFields.class.php
user_add.php

index f03277b..5f090d9 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.19.7.5027 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.19.7.5028 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
index d58cbe5..0ab33c7 100644 (file)
@@ -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'));
+  }
 }
index 83f3bbc..0cd71b0 100644 (file)
@@ -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) {