Work in progress on project attachments.
[timetracker.git] / WEB-INF / lib / ttFileHelper.class.php
1 <?php
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.
10 // |
11 // | There are only two ways to violate the license:
12 // |
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).
16 // |
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).
20 // |
21 // | This license applies to this document only, not any other software
22 // | that it may be combined with.
23 // |
24 // +----------------------------------------------------------------------+
25 // | Contributors:
26 // | https://www.anuko.com/time_tracker/credits.htm
27 // +----------------------------------------------------------------------+
28
29 // ttFileHelper class is used for attachment handling.
30 class ttFileHelper {
31   var $errors = null; // Errors go here. Set in constructor by reference.
32   var $storage_uri = null;
33   var $site_id = null;
34   var $site_key = null;
35
36   // Constructor.
37   function __construct(&$errors) {
38     $this->errors = &$errors;
39
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'];
45     }
46   }
47
48   // putFile - puts uploaded file in remote storage.
49   function putFile($description) {
50
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'])
59     );
60
61     // url-ify the data for the POST.
62     foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
63     $fields_string = rtrim($fields_string, '&');
64
65     // Open connection.
66     $ch = curl_init();
67
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);
73
74     // Execute a post rewuest.
75     $result = curl_exec($ch);
76
77     // Close connection.
78     curl_close($ch);
79
80     if ($result) {
81       $result_array = json_decode($result, true);
82       $file_id = $mdb2->quote($result_array['id']);
83     }
84
85     unlink($_FILES['newfile']['tmp_name']);
86     return false; // Not implemented.
87 /*
88     // Create a temporary file.
89     $dirName = dirname(TEMPLATE_DIR . '_c/.');
90     $filename = tempnam($dirName, 'import_');
91
92     // If the file is compressed - uncompress it.
93     if ($compressed) {
94       if (!$this->uncompress($_FILES['xmlfile']['tmp_name'], $filename)) {
95         $this->errors->add($i18n->get('error.sys'));
96         return;
97       }
98       unlink($_FILES['newfile']['tmp_name']);
99     } else {
100       if (!move_uploaded_file($_FILES['xmlfile']['tmp_name'], $filename)) {
101         $this->errors->add($i18n->get('error.upload'));
102         return;
103       }
104     }*/
105   }
106 }