More progress on attachment handling.
authorNik Okuntseff <support@anuko.com>
Sun, 17 Mar 2019 19:18:27 +0000 (19:18 +0000)
committerNik Okuntseff <support@anuko.com>
Sun, 17 Mar 2019 19:18:27 +0000 (19:18 +0000)
WEB-INF/lib/ttFileHelper.class.php
WEB-INF/templates/footer.tpl
project_files.php

index af470c7..f41fa84 100644 (file)
@@ -96,8 +96,6 @@ class ttFileHelper {
           $mdb2->exec($sql);
           $sql = "insert into tt_site_config values('locker_key', $key, now(), null)";
           $mdb2->exec($sql);
-        } else {
-          $this->errors->add($i18n->get('error.file_storage'));
         }
       }
     } else {
@@ -114,13 +112,20 @@ class ttFileHelper {
 
   // putFile - puts uploaded file in remote storage.
   function putFile($fields) {
+    // if (!$this->site_id || !$this->site_key) return false;
+
+    global $i18n;
+    global $user;
     $mdb2 = getConnection();
 
+    $group_id = $user->getGroup();
+    $org_id = $user->org_id;
+
     $fields = array('site_id' => urlencode($this->site_id),
       'site_key' => urlencode($this->site_key),
-      //'org_id' => urlencode($this->org_id),       // TODO: obtain this properly.
+      'org_id' => urlencode($org_id),
       //'org_key' => urlencode($this->org_key),     // TODO: obtain this properly.
-      //'group_id' => urlencode($this->group_id),   // TODO: obtain this properly.
+      'group_id' => urlencode($group_id),
       //'group_key' => urlencode($this->group_key), // TODO: obtain this properly.
       //'user_id' => urlencode($this->user_id),     // TODO: obtain this properly.
       //'user_key' => urlencode($this->user_key),   // TODO: obtain this properly.
@@ -149,31 +154,37 @@ class ttFileHelper {
     // Close connection.
     curl_close($ch);
 
-    if ($result) {
-      $result_array = json_decode($result, true);
-      $file_id = $result_array['file_id'];
-      $file_key = $result_array['file_key'];
-    }
-
+    // Delete uploaded file.
     unlink($_FILES['newfile']['tmp_name']);
-    return false; // Not implemented.
-/*
-    // Create a temporary file.
-    $dirName = dirname(TEMPLATE_DIR . '_c/.');
-    $filename = tempnam($dirName, 'import_');
-
-    // If the file is compressed - uncompress it.
-    if ($compressed) {
-      if (!$this->uncompress($_FILES['xmlfile']['tmp_name'], $filename)) {
-        $this->errors->add($i18n->get('error.sys'));
-        return;
-      }
-      unlink($_FILES['newfile']['tmp_name']);
-    } else {
-      if (!move_uploaded_file($_FILES['xmlfile']['tmp_name'], $filename)) {
-        $this->errors->add($i18n->get('error.upload'));
-        return;
+
+    if (!$result) return false;
+
+    $result_array = json_decode($result, true);
+    $file_id = (int) $result_array['file_id'];
+    $file_key = $result_array['file_key'];
+    $file_error = $result_array['file_error'];
+
+    if (!$file_id || !$file_key) {
+      if ($file_error) {
+        // Add an error message from file storage facility if we have it.
+        $this->errors->add($file_error);
       }
-    }*/
+      return false;
+    }
+
+    // File put was successful. Store file attributes locally.
+    $entity_type = $mdb2->quote($fields['entity_type']);
+    $entity_id = (int) $fields['entity_id'];
+    $file_name = $mdb2->quote($fields['file_name']);
+    $description = $mdb2->quote($fields['description']);
+    $created = 'now()';
+    $created_ip = $mdb2->quote($_SERVER['REMOTE_ADDR']);
+    $created_by = $user->id;
+
+    $columns = '(group_id, org_id, remote_id, entity_type, entity_id, file_name, description, created, created_ip, created_by)';
+    $values = "values($group_id, $org_id, $file_id, $entity_type, $entity_id, $file_name, $description, $created, $created_ip, $created_by)";
+    $sql = "insert into tt_files $columns $values";
+    $affected = $mdb2->exec($sql);
+    return (!is_a($affected, 'PEAR_Error'));
   }
 }
index 9f0efd9..96e99fc 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.18.59.4875 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.18.59.4876 | 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 fec090b..cc91746 100644 (file)
@@ -72,12 +72,14 @@ if ($request->isPost()) {
 
   if ($err->no()) {
     $fileHelper = new ttFileHelper($err);
-    $fields = array('description'=>$cl_description); // TODO: add other fields here if required.
+    $fields = array('entity_type'=>'project',
+      'entity_id' => $cl_project_id,
+      'file_name' => $_FILES['newfile']['name'],
+      'description'=>$cl_description);
     if (!$fileHelper->putFile($fields)) {
-      $err->add($i18n->get('error.expired'));
+      $err->add($i18n->get('error.file_storage'));
     }
   }
-//  if ($err->no()) $msg->add($i18n->get('form.import.success'));
 } // isPost
 
 $smarty->assign('can_manage', $user->can('manage_projects'));