Пример #1
0
 function render()
 {
     $settings_nntp_hdr = $this->_settings->get('nntp_hdr');
     $settings_nntp_nzb = $this->_settings->get('nntp_nzb');
     # Check users' permissions
     $this->_spotSec->fatalPermCheck(SpotSecurity::spotsec_view_spotimage, '');
     # Haal de image op
     if (isset($this->_image['type']) && $this->_image['type'] == 'speeddial') {
         /*
          * Because the speeddial image shows stuff like last update and amount of new spots,
          * we want to make sure this is not a totally closed system
          */
         $this->_spotSec->fatalPermCheck(SpotSecurity::spotsec_view_spots_index, '');
         # init
         $spotImage = new SpotImage($this->_db);
         $totalSpots = $this->_db->getSpotCount('');
         $newSpots = $this->_tplHelper->getNewCountForFilter('');
         $lastUpdate = $this->_tplHelper->formatDate($this->_db->getLastUpdate($settings_nntp_hdr['host']), 'lastupdate');
         $data = $spotImage->createSpeedDial($totalSpots, $newSpots, $lastUpdate);
     } elseif (isset($this->_image['type']) && $this->_image['type'] == 'statistics') {
         $this->_spotSec->fatalPermCheck(SpotSecurity::spotsec_view_statistics, '');
         # init
         $spotsOverview = new SpotsOverview($this->_db, $this->_settings);
         $graph = isset($this->_image['graph']) ? $this->_image['graph'] : false;
         $limit = isset($this->_image['limit']) ? $this->_image['limit'] : false;
         $data = $spotsOverview->getStatisticsImage($graph, $limit, $settings_nntp_hdr, $this->_currentSession['user']['prefs']['user_language']);
     } elseif (isset($this->_image['type']) && $this->_image['type'] == 'avatar') {
         # Check users' permissions
         $this->_spotSec->fatalPermCheck(SpotSecurity::spotsec_view_spotimage, 'avatar');
         # init
         $spotsOverview = new SpotsOverview($this->_db, $this->_settings);
         $imgDefaults = array('md5' => false, 'size' => 80, 'default' => 'identicon', 'rating' => 'g');
         $imgSettings = array_merge($imgDefaults, $this->_image);
         if ($imgSettings['size'] < 1 || $imgSettings['size'] > 512) {
             $imgSettings['size'] = $imgDefaults['size'];
         }
         # if
         if (!in_array($imgSettings['default'], array('identicon', 'mm', 'monsterid', 'retro', 'wavatar'))) {
             $imgSettings['default'] = $imgDefaults['default'];
         }
         # if
         if (!in_array($imgSettings['rating'], array('g', 'pg', 'r', 'x'))) {
             $imgSettings['rating'] = $imgDefaults['rating'];
         }
         # if
         $data = $spotsOverview->getAvatarImage($imgSettings['md5'], $imgSettings['size'], $imgSettings['default'], $imgSettings['rating']);
     } else {
         # init
         $spotsOverview = new SpotsOverview($this->_db, $this->_settings);
         $hdr_spotnntp = new SpotNntp($settings_nntp_hdr);
         /* Als de HDR en de NZB host hetzelfde zijn, zet geen tweede verbinding op */
         if ($settings_nntp_hdr['host'] == $settings_nntp_nzb['host']) {
             $nzb_spotnntp = $hdr_spotnntp;
         } else {
             $nzb_spotnntp = new SpotNntp($this->_settings->get('nntp_nzb'));
         }
         # else
         # Haal de volledige spotinhoud op
         $fullSpot = $this->_tplHelper->getFullSpot($this->_messageid, false);
         $data = $spotsOverview->getImage($fullSpot, $nzb_spotnntp);
     }
     # else
     # Images mogen gecached worden op de client, behalve als is opgegeven dat het niet mag
     if (isset($data['expire'])) {
         $this->sendExpireHeaders(true);
     } else {
         $this->sendExpireHeaders(false);
     }
     # else
     header("Content-Type: " . image_type_to_mime_type($data['metadata']['imagetype']));
     header("Content-Length: " . strlen($data['content']));
     echo $data['content'];
 }