root/downloadDatabase/files/lib/data/downloadDB/DownloadDBData.class.php @ 668

Revision 668, 11.9 kB (checked in by Tatzelwurm, 5 years ago)

New Filenames for Uploads.
Some Eventlistener Points added.

Line 
1<?php
2require_once(WCF_DIR.'lib/data/DatabaseObject.class.php');
3
4/**
5 * Represents an file upload.
6 *
7 * @author              Robert "Tatzelwurm" Hempel
8 * @copyright   2008 INSIDE das Hrspiel
9 * @license             GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
10 * @package             de.inside.wcf.DownloadDatabase
11 */
12class DownloadDBData extends DatabaseObject {
13       
14        /**
15         * Creates a new File object.
16         *
17         * @param       array           $row
18         * @param       integer         $dataID
19         */
20        public function __construct($dataID, $row = null) {
21                if ($dataID != null) {
22                        $sql = "SELECT  *
23                                FROM    wcf".WCF_N."_dldb_data
24                                WHERE   dataID = ".$dataID;
25                        $row = WCF::getDB()->getFirstRow($sql);
26                }
27                        parent::__construct($row);
28        }
29       
30        /**
31         * Returns the url to this file.
32         *
33         * @return      string
34         */
35        public function getURL() {
36                if(file_exists(RELATIVE_WCF_DIR.DOWNLOADDB_FILE_DIR . intval($this->dataID) . '_' . StringUtil::encodeHTML($this->fileName))){
37                        return DOWNLOADDB_FILE_DIR . intval($this->dataID) . '_' . StringUtil::encodeHTML($this->fileName);
38                }
39                return DOWNLOADDB_FILE_DIR . 'Upload-' . $this->dataID . '.' . $this->fileExtension;
40        }
41
42        /**
43         * Deletes this data in database, filesystem and clears cache
44         */
45        public function delete() {
46                // delete file
47                $this->deleteFile($this->fileName);
48
49                // delete Preview
50                $this->deletePreview($this->previewFile);
51
52                // delete database entry
53                $sql = "DELETE FROM     wcf".WCF_N."_dldb_data
54                                WHERE           dataID = ".$this->dataID;
55                WCF::getDB()->sendQuery($sql);
56
57                // clear Cache
58                $this->resetCache();
59        }
60       
61        /**
62         * Deletes this File.
63         * @param  string $fName
64         */
65        public function deleteFile($fName) {
66                // delete file
67                if(file_exists(RELATIVE_WCF_DIR.DOWNLOADDB_FILE_DIR . intval($this->dataID) . '_' . StringUtil::encodeHTML($fName))){
68                        @unlink(WCF_DIR.DOWNLOADDB_FILE_DIR . $this->dataID . '_' . $fName);
69                } else {
70                        @unlink(WCF_DIR . DOWNLOADDB_FILE_DIR . 'Upload-' .$this->dataID . '.' . $this->fileExtension);
71                }
72        }
73       
74        /**
75         * Deletes this PreviewFile.
76         * @param  string $fName
77         */
78        public function deletePreview($fName) {
79                // delete file
80                if(file_exists(RELATIVE_WCF_DIR.DOWNLOADDB_PREVIEW_DIR . $this->dataID . '_' . $fName)){
81                        @unlink(WCF_DIR . DOWNLOADDB_PREVIEW_DIR . $this->dataID . '_' . $fName);
82                        @unlink(WCF_DIR . DOWNLOADDB_PREVIEW_DIR . 'thumbnail-' . $this->dataID . '_' . $fName);
83                } else {
84                        $fExt = StringUtil::toLowerCase(StringUtil::substring($fName, StringUtil::lastIndexOf($fName, '.') + 1));
85                        @unlink(WCF_DIR . DOWNLOADDB_PREVIEW_DIR . 'Preview-' . $this->dataID . '.' . $fExt);
86                        @unlink(WCF_DIR . DOWNLOADDB_PREVIEW_DIR . 'thumbnail-' . $this->dataID . '.' . $fExt);
87                }
88        }
89       
90        public static function resetCache() {
91                // reset cache
92                WCF::getCache()->clear(WCF_DIR.'cache/', 'cache.dldbData.php');
93                WCF::getCache()->clear(WCF_DIR.'cache/', 'cache.dldbKat.php');
94        }
95
96        /**
97         * get icon for filetype
98         */
99        public static function setFileTypeIcon($mime_type) {
100                switch($mime_type) {
101                case (preg_match('/x-3dmf/i', $mime_type) == true):
102                $type = 'mime_3dm.png';
103                break;
104                case (preg_match('/x-authorware-bin/i', $mime_type) == true):
105                $type = 'mime_aab.png';
106                break;
107                case (preg_match('/x-authorware-map/i', $mime_type) == true):
108                $type = 'mime_aam.png';
109                break;
110                        case (preg_match('/x-authorware-seg/i', $mime_type) == true):
111                $type = 'mime_aas.png';
112                break;
113                        case (preg_match('/abc/i', $mime_type) == true):
114                $type = 'mime_abc.png';
115                break;
116                        case (preg_match('/animaflex/i', $mime_type) == true):
117                $type = 'mime_afl.png';
118                break;
119                        case (preg_match('/ace/i', $mime_type) == true):
120                $type = 'mime_ace.gif';
121                break;
122            case (preg_match('/aiff/i', $mime_type) == true):
123                $type = 'mime_aiff.png';
124                break;
125                        case (preg_match('/postscript/i', $mime_type) == true):
126                $type = 'mime_doc.gif';
127                break;
128            case (preg_match('/aim/i', $mime_type) == true):
129                $type = 'mime_aim.png';
130                break;
131            case (preg_match('/intra/i', $mime_type) == true):
132                $type = 'mime_aip.png';
133                break;
134            case (preg_match('/animation/i', $mime_type) == true):
135                $type = 'mime_ani.png';
136                break;
137            case (preg_match('/communicator/i', $mime_type) == true):
138                $type = 'mime_aos.png';
139                break;
140            case (preg_match('/arc/i', $mime_type) == true):
141                $type = 'mime_arc.gif';
142                break;
143                case (preg_match('/arj/i', $mime_type) == true):
144                $type = 'mime_arj.gif';
145                break;
146                case (preg_match('/x-jg/i', $mime_type) == true):
147                $type = 'mime_art.png';
148                break;
149                case (preg_match('/x-ms-asf/i', $mime_type) == true):
150                $type = 'mime_asf.png';
151                break;
152                case (preg_match('/x-ms-asf-plugin/i', $mime_type) == true || preg_match('/x-mplayer2/i', $mime_type) == true):
153                $type = 'mime_asx.png';
154                break;
155                case (preg_match('/x-asm/i', $mime_type) == true):
156                $type = 'mime_asm.png';
157                break;
158                case (preg_match('/asp/i', $mime_type) == true):
159                $type = 'mime_asp.png';
160                break;
161                case (preg_match('/x-au/i', $mime_type) == true):
162                $type = 'mime_au.png';
163                break;
164                case (preg_match('/msvideo/i', $mime_type) == true):
165                $type = 'mime_avi.gif';
166                break;
167                case (preg_match('/avs/i', $mime_type) == true):
168                $type = 'mime_avs.gif';
169                break;
170           
171                        /* B */
172            case (preg_match('/bcpio/i', $mime_type) == true):
173                $type = 'mime_bcpio.png';
174                break;
175            case (preg_match('/bh/i', $mime_type) == true):
176                $type = 'mime_bh.gif';
177                break;
178            case (preg_match('/binary/i', $mime_type) == true):
179                $type = 'mime_bin.png';
180                break;
181            case (preg_match('/bmp/i', $mime_type) == true):
182                $type = 'mime_bmp.png';
183                break;
184                case (preg_match('/x-bzip/i', $mime_type) == true):
185                $type = 'mime_bz.png';
186                break;
187
188            /* C */     
189                case (preg_match('/cab/i', $mime_type) == true):
190                $type = 'mime_cab.gif';
191                break;
192                case (preg_match('/clariscad/i', $mime_type) == true):
193                $type = 'mime_ccad.png';
194                break;
195                case (preg_match('/cocoa/i', $mime_type) == true):
196                $type = 'mime_cco.png';
197                break;
198                case (preg_match('/cdf/i', $mime_type) == true):
199                $type = 'mime_cdf.png';
200                break;
201                case (preg_match('/cert/i', $mime_type) == true):
202                $type = 'mime_cer.png';
203                break;
204                case (preg_match('/x-chat/i', $mime_type) == true):
205                $type = 'mime_chat.png';
206                break;
207                case (preg_match('/java-byte-code/i', $mime_type) == true || preg_match('/x-java-class/i', $mime_type) == true):
208                $type = 'mime_class.png';
209                break;
210                case (preg_match('/x-cpio/i', $mime_type) == true):
211                $type = 'mime_cpio.png';
212                break;
213                case (preg_match('/compactpro/i', $mime_type) == true || preg_match('/cpt/i', $mime_type) == true):
214                $type = 'mime_cpt.png';
215                break;
216                case (preg_match('/crl/i', $mime_type) == true):
217                $type = 'mime_crl.png';
218                break;
219                case (preg_match('/csh/i', $mime_type) == true):
220                $type = 'mime_csh.png';
221                break;
222            case (preg_match('/css/i', $mime_type) == true || preg_match('/x-pointplus/i', $mime_type) == true):
223                $type = 'mime_css.png';
224                break;
225
226            /* D */
227                case (preg_match('/msword/i', $mime_type) == true):
228                $type = 'mime_doc.gif';
229                break;
230               
231            /* E */
232            /* F */
233            /* G */
234                case (preg_match('/gif/i', $mime_type) == true):
235                $type = 'mime_gif.png';
236                break;
237            case (preg_match('/gzip/i', $mime_type) == true || preg_match('/x-compressed/i', $mime_type) == true):
238                $type = 'mime_gzip.gif';
239                break;
240
241            /* H */
242            case (preg_match('/html/i', $mime_type) == true):
243                $type = 'mime_html.gif';
244                break;
245               
246            /* I */
247                        case (preg_match('/img/i', $mime_type) == true || preg_match('/pict/i', $mime_type) == true):
248                $type = 'mime_img.gif';
249                break;
250
251            /* J */
252            case (preg_match('/jar/i', $mime_type) == true):
253                $type = 'mime_jar.gif';
254                break;
255            case (preg_match('/jpeg/i', $mime_type) == true):
256                $type = 'mime_jpg.png';
257                break;
258               
259            /* K */
260            /* L */
261            case (preg_match('/lha/i', $mime_type) == true):
262                $type = 'mime_lha.gif';
263                break;
264            case (preg_match('/lzh/i', $mime_type) == true):
265                $type = 'mime_lzh.png';
266                break;
267           
268            /* M */     
269            case (preg_match('/mpeg3/i', $mime_type) == true || preg_match('/mpeg-3/i', $mime_type) == true):
270                $type = 'mime_mp3.png';
271                break;
272            case (preg_match('/mpeg/i', $mime_type) == true || preg_match('/mpequrl/i', $mime_type) == true):
273                $type = 'mime_mpeg.gif';
274                break;
275
276            /* N */
277            /* O */
278            case (preg_match('/ogg/i', $mime_type) == true):
279                $type = 'mime_ogg.png';
280                break;
281
282            /* P */
283            case (preg_match('/pae/i', $mime_type) == true):
284                $type = 'mime_pae.gif';
285                break;
286                        case (preg_match('/pbs/i', $mime_type) == true):
287                $type = 'mime_pbs.gif';
288                break;
289                        case (preg_match('/pdf/i', $mime_type) == true):
290                $type = 'mime_pdf.gif';
291                break;
292                        case (preg_match('/png/i', $mime_type) == true):
293                $type = 'mime_png.png';
294                break;
295            case (preg_match('/pps/i', $mime_type) == true ||preg_match('/powerpoint/i', $mime_type) == true):
296                $type = 'mime_pps.gif';
297                break;
298           
299            /* Q */
300            /* R */
301                        case (preg_match('/rar/i', $mime_type) == true):
302                $type = 'mime_rar.gif';
303                break;
304           
305            /* S */
306                        case (preg_match('/sit/i', $mime_type) == true || preg_match('/stuffit/i', $mime_type) == true):
307                $type = 'mime_rat.gif';
308                break;
309           
310            /* T */
311            case (preg_match('/x-tar/i', $mime_type) == true || preg_match('/gnutar/i', $mime_type) == true):
312                $type = 'mime_tar.gif';
313                break;
314           
315            /* U */
316            /* V */
317            /* W */
318            /* X */
319            case (preg_match('/xml/i', $mime_type) == true):
320                $type = 'mime_xml.gif';
321                break;
322
323            /* Y */
324            /* Z */
325            case (preg_match('/zip/i', $mime_type) == true):
326                $type = 'mime_zip.gif';
327                break;
328                        case (preg_match('/7z/i', $mime_type) == true):
329                $type = 'mime_zip.gif';
330                break;
331                        case (preg_match('/zoo/i', $mime_type) == true):
332                $type = 'mime_zoo.gif';
333                break;
334                       
335                        /* unbestimmt */
336                case (preg_match('/octet-stream/i', $mime_type) == true):
337                $type = 'mime_exe.gif';
338                break;
339            case (preg_match('/plain/i', $mime_type) == true):
340                $type = 'mime_txt.gif';
341                break;
342                        case (preg_match('/image/i', $mime_type) == true):
343                $type = 'mime_img.gif';
344                break;
345               
346            default:
347                        $type = 'mime_default.gif';
348                }
349                return $type;
350        }
351}
352?>
Note: See TracBrowser for help on using the browser.