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

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

Darstellung der "Flaggen" im Frontend komplettiert.
Auswahl der Sprache hinzugefügt.
Neue Beta zusammengestellt.

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                                        if (@fopen(FileUtil::getRealPath(RELATIVE_WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'_'.$daten['previewFile']),'rb') == false) {
116                                                // make thumbnail
117                                                $thumb = new Thumbnail(WCF_DIR.DOWNLOADDB_PREVIEW_DIR.$this->dataID.'_'.$daten['previewFile'], DOWNLOADDB_PREVIEW_WIDTH, DOWNLOADDB_PREVIEW_HIGHT);
118                                               
119                                                // get thumbnail
120                                                if (($thumbnailData = $thumb->makeThumbnail(true))) {
121                                                        // save thumbnail
122                                                        $file = new File(WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'_'.$daten['previewFile']);
123                                                        $file->write($thumbnailData);
124                                                        unset($thumbnailData);
125                                                        $file->close();
126                                                        @chmod(WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'_'.$daten['previewFile'], 0666);
127                                                        $daten['previewThumb']  = FileUtil::getRealPath(RELATIVE_WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'_'.$daten['previewFile']);
128                                                        $daten['previewIMG']    = FileUtil::getRealPath(RELATIVE_WCF_DIR.$daten['previewIMG']);
129                                                } else {
130                                                        $daten['previewThumb']  = FileUtil::getRealPath(RELATIVE_WCF_DIR.$daten['previewIMG']);
131                                                        $daten['previewIMG']    = '';
132                                                }
133                                        } else {
134                                                $daten['previewIMG']    = FileUtil::getRealPath(RELATIVE_WCF_DIR.$daten['previewIMG']);
135                                                $daten['previewThumb']  = FileUtil::getRealPath(RELATIVE_WCF_DIR.DOWNLOADDB_PREVIEW_DIR.'thumbnail-'.$this->dataID.'_'.$daten['previewFile']);
136                                        }
137                                } elseif (DOWNLOADDB_SHOW_PREVIEW_NOPIC) {
138                                        $daten['previewIMG'] = $daten['previewThumb'] = RELATIVE_WCF_DIR.'icon/downloadDBnoPic.png';
139                                }
140                                // Beschreibung zur Ausgabe anpassen (BBCode+Smilies)
141                                $daten['name']                  = $this->getFormattedMessage($daten['name'],$daten['enableSmilies'],$daten['enableHtml'],$daten['enableBBCodes'],$daten['parseURL']);
142                                $daten['description']   = $this->getFormattedMessage($daten['description'],$daten['enableSmilies'],$daten['enableHtml'],$daten['enableBBCodes'],$daten['parseURL']);
143                                require_once(WCF_DIR.'lib/data/message/bbcode/URLParser.class.php');
144                                // URLs wandeln zur formatierten Ausgabe
145                                $daten['thread'] = $this->getFormattedMessage(URLParser::parse(StringUtil::decodeHTML($daten['thread'])));
146                                $this->daten = $daten;
147                                break;
148                        }
149                }
150        }
151
152        /**
153         * @see ViewablePost::getFormattedMessage()
154         */
155        protected function getFormattedMessage($text, $enableSmilies = true, $enableHtml = false, $enableBBCodes = true, $parseURL = true) {
156                if ($parseURL == 1) {
157                        require_once(WCF_DIR.'lib/data/message/bbcode/URLParser.class.php');
158                        $text = URLParser::parse($text);
159                }
160                // parse message
161                require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php');
162                return MessageParser::getInstance()->parse($text, $enableSmilies, $enableHtml, $enableBBCodes, false);
163        }
164       
165}
166?>
Note: See TracBrowser for help on using the browser.