root/downloadDatabase/files/lib/page/DownloadDBDataPage.class.php @ 668

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

New Filenames for Uploads.
Some Eventlistener Points added.

Line 
1<?php
2
3// wcf imports
4require_once(WCF_DIR.'lib/page/AbstractPage.class.php');
5require_once(WCF_DIR.'lib/form/MessageForm.class.php');
6require_once(WCF_DIR.'lib/data/image/Thumbnail.class.php');
7require_once(WCF_DIR.'lib/data/downloadDB/DownloadDBData.class.php');
8
9/**
10 * Download Database Ansicht fÃŒr einzelne Kategorie(n) und Daten
11 *
12 * @author              Robert "Tatzelwurm" Hempel
13 * @copyright   2007/2008 INSIDE das Hörspiel
14 * @license     GNU LGPL http://www.gnu.org/licenses/lgpl.txt
15 * @package             de.inside.wcf.DownloadDatabase
16 */
17
18class DownloadDBDataPage extends MessageForm {
19
20        public $templateName = 'downloadDBViewData';
21        public $daten = array();
22        public $dataID;
23        public $action;
24       
25        private $type;
26       
27        /**
28         * @see Page::readParameters()
29         */
30        public function readParameters() {
31                parent::readParameters();
32
33                if (isset($_REQUEST['dataID'])) $this->dataID = intval($_REQUEST['dataID']);
34                if (!$this->dataID){
35                        require_once(WCF_DIR.'lib/system/exception/NamedUserException.class.php');
36                        throw new NamedUserException(WCF::getLanguage()->get('wcf.dldb.wrongid'));
37                        exit;
38                }
39                WCF::getCache()->addResource('dldbData',
40                        WCF_DIR.'cache/cache.dldbData.php',
41                        WCF_DIR.'lib/system/cache/CacheBuilderDLDBData.class.php');
42        }
43
44        public function readData() {
45                parent::readData();
46                        $this->readDaten();
47        }
48       
49        /**
50         * @see Page::assignVariables();
51         */
52        public function assignVariables() {
53                parent::assignVariables();
54                if (DOWNLOADDB_OFFLINE) {
55                        $this->templateName = 'downloadDB_offline';
56                        WCF::getTPL()->assign('offlinemessage', DOWNLOADDB_OFFLINE_MESSAGE);
57                } else {
58                        $languagesArray = WCF::getLanguage()->getAvailableLanguages();
59                       
60                        for ($i = 0; $i < count($languagesArray); $i++) {
61                                $languageItems = $languagesArray[$i];
62                               
63                                $languageArray[] = array(
64                                        'languageCode' => $languageItems['languageCode'],
65                                        'languageID' => $languageItems['languageID'],
66                                        'languageName' => WCF::getLanguage()->get('wcf.global.language.'.$languageItems['languageCode']),
67                                );
68                        }
69
70                        WCF::getTPL()->assign(array(
71                                'dataID' => $this->dataID,
72                                'daten'  => $this->daten,
73                                'languageArray' => $languageArray
74                        ));
75                }
76        }
77
78        /**
79         * @see Page::show()
80         */
81        public function show() {
82                require_once(WCF_DIR.'lib/page/util/menu/HeaderMenu.class.php');
83                HeaderMenu::setActiveMenuItem('wcf.header.menu.downloaddb');
84               
85                // check permission
86                WCF::getUser()->checkPermission('user.dldb.canUseDownloadDB');
87
88                parent::show();
89        }
90
91        protected function readDaten() {
92                // Cache lesen
93                $data = WCF::getCache()->get('dldbData');
94                foreach ($data as $daten) {
95                        if ($daten['dataID'] == $this->dataID && $daten['activ']) {
96                                if ($daten['mimeType']) {
97                                        $daten['type'] = DownloadDBData::setFileTypeIcon($daten['mimeType']);
98                                } else {
99                                        $daten['type'] = 'mime_default.gif';
100                                }
101                                $daten['groesse'] = FileUtil::formatFilesize($daten['groesse']);
102                                $IDs = explode(',',$daten['groupcheck']);
103                                $daten['canViewCat'] = false;
104                                foreach ($IDs as $gruppe) {
105                                        if (in_array($gruppe, WCF::getUser()->getGroupIDs())) { 
106                                                $daten['canViewCat'] = true;
107                                        }
108                                }
109                                if ($daten['canViewCat'] != true){
110                                        require_once(WCF_DIR.'lib/system/exception/PermissionDeniedException.class.php');
111                                        throw new PermissionDeniedException();
112                                }
113                                $daten['previewThumb'] = '';
114                                if ($daten['previewIMG']) {
115                                        $ext = StringUtil::toLowerCase(StringUtil::substring($daten['previewFile'], StringUtil::lastIndexOf($daten['previewFile'], '.') + 1));
116                                        if (@fopen(FileUtil::getRealPath(RELATIVE_WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'.'.$ext),'rb') == false) {
117                                                // make thumbnail
118                                                $thumb = new Thumbnail(WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'Preview-'.$this->dataID.'.'.$ext, DOWNLOADDB_PREVIEW_WIDTH, DOWNLOADDB_PREVIEW_HIGHT);
119                                               
120                                                // get thumbnail
121                                                if (($thumbnailData = $thumb->makeThumbnail(true))) {
122                                                        // save thumbnail
123                                                        $file = new File(WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'.'.$ext);
124                                                        $file->write($thumbnailData);
125                                                        unset($thumbnailData);
126                                                        $file->close();
127                                                        @chmod(WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'.'.$ext, 0666);
128                                                        $daten['previewThumb']  = FileUtil::getRealPath(RELATIVE_WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'.'.$ext);
129                                                        $daten['previewIMG']    = FileUtil::getRealPath(RELATIVE_WCF_DIR.$daten['previewIMG']);
130                                                } else {
131                                                        $daten['previewThumb']  = FileUtil::getRealPath(RELATIVE_WCF_DIR.$daten['previewIMG']);
132                                                        $daten['previewIMG']    = '';
133                                                }
134                                        } else {
135                                                $daten['previewIMG']    = FileUtil::getRealPath(RELATIVE_WCF_DIR.$daten['previewIMG']);
136                                                $daten['previewThumb']  = FileUtil::getRealPath(RELATIVE_WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'.'.$ext);
137                                        }
138                                } elseif (DOWNLOADDB_SHOW_PREVIEW_NOPIC) {
139                                        $daten['previewIMG'] = $daten['previewThumb'] = RELATIVE_WCF_DIR.'icon/downloadDBnoPic.png';
140                                }
141                                // Beschreibung zur Ausgabe anpassen (BBCode+Smilies)
142                                $daten['name']                  = $this->getFormattedMessage($daten['name'],$daten['enableSmilies'],$daten['enableHtml'],$daten['enableBBCodes'],$daten['parseURL']);
143                                $daten['description']   = $this->getFormattedMessage($daten['description'],$daten['enableSmilies'],$daten['enableHtml'],$daten['enableBBCodes'],$daten['parseURL']);
144                                require_once(WCF_DIR.'lib/data/message/bbcode/URLParser.class.php');
145                                // URLs wandeln zur formatierten Ausgabe
146                                $daten['thread'] = $this->getFormattedMessage(URLParser::parse(StringUtil::decodeHTML($daten['thread'])));
147                                $this->daten = $daten;
148                                break;
149                        }
150                }
151        }
152
153        /**
154         * @see ViewablePost::getFormattedMessage()
155         */
156        protected function getFormattedMessage($text, $enableSmilies = true, $enableHtml = false, $enableBBCodes = true, $parseURL = true) {
157                if ($parseURL == 1) {
158                        require_once(WCF_DIR.'lib/data/message/bbcode/URLParser.class.php');
159                        $text = URLParser::parse($text);
160                }
161                // parse message
162                require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php');
163                return MessageParser::getInstance()->parse($text, $enableSmilies, $enableHtml, $enableBBCodes, false);
164        }
165       
166}
167?>
Note: See TracBrowser for help on using the browser.