root/devel/mod/rpc/lib/class_file.php

Revision 454, 8.0 kB (checked in by sven, 2 years ago)

removed some addslashes. replaced some with adodb qstr().
removed some stripslashes. a lot more still want to go, depending on how much we care about showing users even more inappropriate backslashes than currently.
fixed a few more php notices.

  • Property svn:eol-style set to native
Line 
1 <?php
2
3     Class File extends ElggObject
4     {
5         var $owner;
6         var $files_owner;
7         var $folder;
8         var $community;
9         var $title;
10         var $originalname;
11         var $description;
12         var $location;
13         var $access;
14         var $size;
15         var $time_uploaded;
16         var $type = 'file';
17
18         var $exists;
19
20         /**
21          *
22          */
23         function File($var = 'default')
24         {
25             $this->exists;
26
27             if ($var != "")
28             {
29                 if ($file = get_record('files','ident',$var)) {
30                     $this->ident         = $var;
31                     $this->owner         = $file->owner;
32                     $this->files_owner   = $file->files_owner;
33                     $this->folder        = $file->folder;
34                     $this->community     = $file->community;
35                     $this->title         = $file->title;
36                     $this->originalname  = $file->originalname;
37                     $this->description   = $file->description;
38                     $this->location      = $file->location;
39                     $this->access        = $file->access;
40                     $this->size          = $file->size;
41                     $this->time_uploaded = $file->time_uploaded;
42                 }
43             }
44         }
45
46         /**
47          *
48          */
49         function exists()
50         {
51             return $this->exists;
52         }
53
54         /**
55          *
56          */
57         function getUrl()
58         {
59             $user = run('users:instance', array('user_id' => $this->files_owner));
60             
61             return url . $user->getUserName() . "/files/" . $this->folder . "/" . $this->ident . "/" . $this->originalname;
62         }
63
64         /**
65          *
66          */
67         function getOwner()
68         {
69             return $this->owner;
70         }
71
72         /**
73          *
74          */
75         function getFilesOwner()
76         {
77             return $this->files_owner;
78         }
79
80         /**
81          *
82          */
83         function getFolder()
84         {
85             return $this->folder;
86         }
87
88         /**
89          *
90          */
91         function getCommunity()
92         {
93             return $this->community;
94         }
95
96         /**
97          *
98          */
99         function getTitle()
100         {
101             return $this->title;
102         }
103
104         /**
105          *
106          */
107         function getOriginalName()
108         {
109             return $this->originalname;
110         }
111
112         /**
113          *
114          */
115         function getDescription()
116         {
117             return $this-description;
118         }
119
120         /**
121          *
122          */
123         function getLocation()
124         {
125             return $this->location;
126         }
127
128         /**
129          *
130          */
131         function getAccess()
132         {
133             return $this->access;
134         }
135
136         /**
137          *
138          */
139         function getSize()
140         {
141             return $this->size;
142         }
143  
144         /**
145          *
146          */
147         function getDate()
148         {
149             return $this->time_uploaded;
150         }
151
152         /**
153          *
154          */
155         function setOwner($val)
156         {
157             $this->owner = $val;
158         }
159
160         /**
161          *
162          */
163         function setFilesOwner($val)
164         {
165             $this->files_owner = $val;
166         }
167
168         /**
169          *
170          */
171         function setFolder($val)
172         {
173             $this->folder = $val;
174         }
175
176         /**
177          *
178          */
179         function setCommunity($al)
180         {
181             $this->community = $val;
182         }
183
184         /**
185          *
186          */
187         function setTitle($val)
188         {
189             $this->title = $val;
190         }
191
192         /**
193          *
194          */
195         function setOriginalName($val)
196         {
197             $this->originalname = $val;
198         }
199
200         /**
201          *
202          */
203         function setDescription($val)
204         {
205             $this->description = $val;
206         }
207
208         /**
209          *
210          */
211         function setLocation($val)
212         {
213             $this->location = $val;
214         }
215
216         /**
217          *
218          */
219         function setAccess($val)
220         {
221             $this->access = $val;
222         }
223
224         /**
225          *
226          */
227         function setSize($val)
228         {
229             $this->size = $val;
230         }
231
232         /**
233          *
234          */
235         function setDate($val)
236         {
237             $this->date = $val;
238         }
239
240         /**
241          *
242          */
243         function checkQuota($size)
244         {
245             // Get user quotum
246             $user = run('users:instance', array('user_id' => $this->owner));
247             
248             $quotum = $user->getFileQuota();
249             $quotum_used = get_field('files','sum(size)','owner',$this->owner);
250
251             if ($quotum_used + $size > $quotum)
252             {
253                 return false;
254             }
255             else
256             {
257                 return true;
258             }
259         }
260
261         // Store base64 encoded data
262         /**
263          *
264          */
265         function saveBase64Data($data)
266         {
267             global $CFG;
268
269             $folder = run('folders:instance', array('id' => $this->folder));
270
271             // Decode the file and store it
272             $filename = time() . "_" . preg_replace("/[^\w.-]/i","_",$this->originalname);
273             $storage  = $folder->getPersonalStorage();
274         
275             $if = fopen($CFG->dataroot . $storage . $filename, "wb");
276
277             $file = base64_decode($data);
278
279             fwrite($if, $file);
280         
281             fclose($if);
282
283             $size = filesize($CFG->dataroot . $storage . $filename);
284
285             $allowed = $this->checkQuota($size);
286
287             if ($allowed == false)
288             {
289                 // Quotum exceeded, remove the upload
290                 @unlink($CFG->dataroot . $storage . $filename);
291
292                 $result['value'] = false;
293                 $result['message'] = "Quotum exceeded";
294
295                 return $result;
296             }
297             else
298             {
299                 $this->date = time();
300                 $this->size = $size;
301                 $this->location = $storage . $filename;
302
303                 return $this->save();
304             }
305         }
306
307         /**
308          *
309          */
310         function save()
311         {
312             if ($this->exists == false)
313             {
314                 $f = new StdClass;
315                 $f->owner = $this->owner;
316                 $f->files_owner = $this->files_owner;
317                 $f->folder = $this->folder;
318                 $f->originalname = $this->originalname;
319                 $f->title = $this->title;
320                 $f->description = 'Automated upload';
321                 $f->location = $this->location;
322                 $f->access = $this->access;
323                 $f->size = $this->size;
324                 $f->time_uploaded time();
325                 $this->ident = insert_record('files',$f);
326                 if (!empty($this->ident)) {
327                     $this->exists = true;
328
329                     $result['value'] = $this->ident;
330                     $result['message'] = "File stored";
331
332                     return $result;
333                 }
334                 else
335                 {
336                     $result['value'] = false;
337                     $result['message'] = "File not stored";
338
339                     return $result;
340                 }
341             }
342             else
343             {
344                 $f = new StdClass;
345                 $f->folder = $this->folder;
346                 $f->title = $this->title;
347                 $f->description = 'Automated upload';
348                 $f->access = $this->access;
349                 $f->ident = $this->ident;
350                 if (update_record('files',$f)) {
351
352                     $result['value'] = $this->ident;
353                     $result['message'] = "File updated";
354
355                     return $result;
356                 }
357                 else
358                 {
359                     $result['value'] = false;
360                     $result['message'] = "File not updated";
361
362                     return $result;
363                 }
364             }
365         }
366     }
367
368 ?>
369
Note: See TracBrowser for help on using the browser.