2 // +----------------------------------------------------------------------+
3 // | Anuko Time Tracker
4 // +----------------------------------------------------------------------+
5 // | Copyright (c) Anuko International Ltd. (https://www.anuko.com)
6 // +----------------------------------------------------------------------+
7 // | LIBERAL FREEWARE LICENSE: This source code document may be used
8 // | by anyone for any purpose, and freely redistributed alone or in
9 // | combination with other software, provided that the license is obeyed.
11 // | There are only two ways to violate the license:
13 // | 1. To redistribute this code in source form, with the copyright
14 // | notice or license removed or altered. (Distributing in compiled
15 // | forms without embedded copyright notices is permitted).
17 // | 2. To redistribute modified versions of this code in *any* form
18 // | that bears insufficient indications that the modifications are
19 // | not the work of the original author(s).
21 // | This license applies to this document only, not any other software
22 // | that it may be combined with.
24 // +----------------------------------------------------------------------+
26 // | https://www.anuko.com/time_tracker/credits.htm
27 // +----------------------------------------------------------------------+
29 // ttFileHelper class is used for attachment handling.
31 var $errors = null; // Errors go here. Set in constructor by reference.
32 var $storage_uri = null;
37 function __construct(&$errors) {
38 $this->errors = &$errors;
40 if (isset($GLOBALS['FILE_STORAGE_PARAMS']) && is_array($GLOBALS['FILE_STORAGE_PARAMS'])) {
41 $params = $GLOBALS['FILE_STORAGE_PARAMS'];
42 $this->storage_uri = $params['uri'];
43 $this->site_id = $params['site_id'];
44 $this->site_key = $params['site_key'];
48 // putFile - puts uploaded file in remote storage.
49 function putFile($description) {
51 $url = $this->storage_uri;
52 $fields = array('description' => urlencode($description),
53 // 'fname' => urlencode($_POST['first_name']),
54 // 'title' => urlencode($_POST['title']),
55 // 'company' => urlencode($_POST['institution']),
56 // 'age' => urlencode($_POST['age']),
57 // 'email' => urlencode($_POST['email']),
58 // 'phone' => urlencode($_POST['phone'])
61 // url-ify the data for the POST.
62 foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
63 $fields_string = rtrim($fields_string, '&');
68 // Set the url, number of POST vars, POST data.
69 curl_setopt($ch, CURLOPT_URL, $url);
70 curl_setopt($ch, CURLOPT_POST, count($fields));
71 curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
72 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
74 // Execute a post rewuest.
75 $result = curl_exec($ch);
81 $result_array = json_decode($result, true);
82 $file_id = $mdb2->quote($result_array['id']);
85 unlink($_FILES['newfile']['tmp_name']);
86 return false; // Not implemented.
88 // Create a temporary file.
89 $dirName = dirname(TEMPLATE_DIR . '_c/.');
90 $filename = tempnam($dirName, 'import_');
92 // If the file is compressed - uncompress it.
94 if (!$this->uncompress($_FILES['xmlfile']['tmp_name'], $filename)) {
95 $this->errors->add($i18n->get('error.sys'));
98 unlink($_FILES['newfile']['tmp_name']);
100 if (!move_uploaded_file($_FILES['xmlfile']['tmp_name'], $filename)) {
101 $this->errors->add($i18n->get('error.upload'));