From 632603b4ab876cc0fa641402a16c824888deae7a Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Sun, 17 Mar 2019 19:18:27 +0000 Subject: [PATCH] More progress on attachment handling. --- WEB-INF/lib/ttFileHelper.class.php | 67 +++++++++++++++++------------- WEB-INF/templates/footer.tpl | 2 +- project_files.php | 8 ++-- 3 files changed, 45 insertions(+), 32 deletions(-) diff --git a/WEB-INF/lib/ttFileHelper.class.php b/WEB-INF/lib/ttFileHelper.class.php index af470c71..f41fa846 100644 --- a/WEB-INF/lib/ttFileHelper.class.php +++ b/WEB-INF/lib/ttFileHelper.class.php @@ -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')); } } diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index 9f0efd99..96e99fc8 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.59.4875 | Copyright © Anuko | +  Anuko Time Tracker 1.18.59.4876 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/project_files.php b/project_files.php index fec090b2..cc917466 100644 --- a/project_files.php +++ b/project_files.php @@ -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')); -- 2.20.1