Пример #1
0
 function render()
 {
     # Make sure the result is set to 'not comited' per default
     $result = new Dto_FormResult('notsubmitted');
     # Validate proper permissions
     $this->_spotSec->fatalPermCheck(SpotSecurity::spotsec_post_spot, '');
     # Sportparser is nodig voor het escapen van de random string
     $spotParseUtil = new Services_Format_Util();
     # we need the spotuser system
     $svcUserRecord = new Services_User_Record($this->_daoFactory, $this->_settings);
     /*
      * Create a default form so we can be sure to always be able
      * to render the form without notices or whatever
      */
     $spot = array('title' => '', 'body' => '', 'category' => 0, 'subcata' => '', 'subcatb' => array(), 'subcatc' => array(), 'subcatd' => array(), 'subcatz' => '', 'tag' => '', 'website' => '', 'newmessageid' => '', 'randomstr' => '');
     /* 
      * bring the forms' action into the local scope for 
      * easier access
      */
     $formAction = $this->_spotForm['action'];
     # set the page title
     $this->_pageTitle = "spot: post";
     # Make sure all variables are merged with the default form
     $spot = array_merge($spot, $this->_spotForm);
     # If user tried to submit, validate the file uploads
     $nzbFilename = '';
     $imgFilename = '';
     if ($formAction == 'post') {
         $result->setResult('success');
         # Make sure an NZB file was provided
         $uploadHandler = new Services_Providers_FileUpload('newspotform', 'nzbfile');
         if (!$uploadHandler->isUploaded()) {
             $result->addError(_('Please select NZB file'));
         } elseif (!$uploadHandler->success()) {
             $result->addError(_('Invalid NZB file') . ' (' . $uploadHandler->errorText() . ')');
         } else {
             $nzbFilename = $uploadHandler->getTempName();
         }
         # if
         # Make sure an picture was provided
         $uploadHandler = new Services_Providers_FileUpload('newspotform', 'imagefile');
         if (!$uploadHandler->isUploaded()) {
             $result->addError(_('Please select a picture'));
         } elseif (!$uploadHandler->success()) {
             $result->addError(_('Invalid picture') . ' (' . $uploadHandler->errorText() . ')');
         } else {
             $imgFilename = $uploadHandler->getTempName();
         }
         # if
     }
     # if
     if ($formAction == 'post' && $result->isSuccess()) {
         # Initialize notificatiesystem
         $spotsNotifications = new SpotNotifications($this->_daoFactory, $this->_settings, $this->_currentSession);
         # Make sure we can post this spot, if so, make it happen
         $svcPostSpot = new Services_Posting_Spot($this->_daoFactory, $this->_settings);
         $result = $svcPostSpot->postSpot($svcUserRecord, $this->_currentSession['user'], $spot, $imgFilename, $nzbFilename);
         if ($result->isSuccess()) {
             $result->addData('user', $this->_currentSession['user']['username']);
             $result->addData('spotterid', $spotParseUtil->calculateSpotterId($this->_currentSession['user']['publickey']['modulo']));
             # en send a notification
             $spotsNotifications->sendSpotPosted($spot);
         }
         # if
     }
     # if
     #- display stuff -#
     $this->template('newspot', array('postspotform' => $spot, 'result' => $result));
 }
Пример #2
0
 function render()
 {
     $formMessages = array('errors' => array(), 'info' => array());
     # Controleer de users' rechten
     $this->_spotSec->fatalPermCheck(SpotSecurity::spotsec_post_spot, '');
     # Sportparser is nodig voor het escapen van de random string
     $spotParser = new SpotParser();
     # spot signing is nodig voor het RSA signen van de spot en dergelijke
     $spotSigning = new SpotSigning();
     # creeer een default spot zodat het form altijd
     # de waardes van het form kan renderen
     $spot = array('title' => '', 'body' => '', 'category' => 0, 'subcatz' => '', 'subcatlist' => '', 'tag' => '', 'website' => '', 'newmessageid' => '', 'randomstr' => '');
     # postspot verzoek was standaard niet geprobeerd
     $postResult = array();
     # zet de page title
     $this->_pageTitle = "spot: post";
     # Als de user niet ingelogged is, dan heeft dit geen zin
     if ($this->_currentSession['user']['userid'] == SPOTWEB_ANONYMOUS_USERID) {
         $postResult = array('result' => 'notloggedin');
         unset($this->_spotForm['submit']);
     }
     # if
     # Zorg er voor dat reserved usernames geen spots kunnen posten
     $spotUser = new SpotUserSystem($this->_db, $this->_settings);
     if (!$spotUser->validUsername($this->_currentSession['user']['username'])) {
         $postResult = array('result' => 'notloggedin');
         unset($this->_spotForm['submit']);
     }
     # if
     # If user tried to submit, validate the file uploads
     if (isset($this->_spotForm['submit'])) {
         # Make sure an NZB file was provided
         if (!isset($_FILES['newspotform']) || $_FILES['newspotform']['error']['nzbfile'] != UPLOAD_ERR_OK) {
             $formMessages['errors'][] = array('postspot_invalidnzb', '(none given)');
             $postResult = array('result' => 'failure');
             // $xml = file_get_contents($_FILES['filterimport']['tmp_name']);
             unset($this->_spotForm['submit']);
         }
         # if
         # Make sure an imgae file was provided
         if (!isset($_FILES['newspotform']) || $_FILES['newspotform']['error']['imagefile'] != UPLOAD_ERR_OK) {
             $formMessages['errors'][] = array('postspot_imageinvalid', '(none given)');
             $postResult = array('result' => 'failure');
             // $xml = file_get_contents($_FILES['filterimport']['tmp_name']);
             unset($this->_spotForm['submit']);
         }
         # if
     }
     # if
     if (isset($this->_spotForm['submit'])) {
         # Notificatiesysteem initialiseren
         $spotsNotifications = new SpotNotifications($this->_db, $this->_settings, $this->_currentSession);
         # submit unsetten we altijd
         unset($this->_spotForm['submit']);
         # De subcatz wordt per hoofdcategory doorgegeven, merge die naar 1
         # subcatz
         $spot['subcatz'] = isset($this->_spotForm['subcatz' . $this->_spotForm['category']]) ? $this->_spotForm['subcatz' . $this->_spotForm['category']] : '';
         # zorg er voor dat alle variables ingevuld zijn
         $spot = array_merge($spot, $this->_spotForm);
         # vraag de users' privatekey op
         $this->_currentSession['user']['privatekey'] = $spotUser->getUserPrivateRsaKey($this->_currentSession['user']['userid']);
         # het messageid krijgen we met <>'s, maar we werken
         # in spotweb altijd zonder, dus die strippen we
         $spot['newmessageid'] = substr($spot['newmessageid'], 1, -1);
         # valideer of we deze spot kunnen posten, en zo ja, doe dat dan
         $spotPosting = new SpotPosting($this->_db, $this->_settings);
         $formMessages['errors'] = $spotPosting->postSpot($this->_currentSession['user'], $spot, $_FILES['newspotform']['tmp_name']['imagefile'], $_FILES['newspotform']['tmp_name']['nzbfile']);
         if (empty($formMessages['errors'])) {
             $postResult = array('result' => 'success', 'user' => $this->_currentSession['user']['username'], 'userid' => $spotSigning->calculateUserid($this->_currentSession['user']['publickey']), 'body' => $spot['body']);
             # en verstuur een notificatie
             $spotsNotifications->sendSpotPosted($spot);
         } else {
             $postResult = array('result' => 'failure');
         }
         # else
     }
     # if
     #- display stuff -#
     $this->template('newspot', array('postspotform' => $spot, 'formmessages' => $formMessages, 'postresult' => $postResult));
 }
Пример #3
0
 function render()
 {
     $formMessages = array('errors' => array(), 'info' => array());
     # Validate proper permissions
     $this->_spotSec->fatalPermCheck(SpotSecurity::spotsec_post_spot, '');
     # Sportparser is nodig voor het escapen van de random string
     $spotParser = new SpotParser();
     # spot signing is nodig voor het RSA signen van de spot en dergelijke
     $spotSigning = Services_Signing_Base::newServiceSigning();
     # creeer een default spot zodat het form altijd
     # de waardes van het form kan renderen
     $spot = array('title' => '', 'body' => '', 'category' => 0, 'subcata' => '', 'subcatb' => array(), 'subcatc' => array(), 'subcatd' => array(), 'subcatz' => '', 'tag' => '', 'website' => '', 'newmessageid' => '', 'randomstr' => '');
     # postspot verzoek was standaard niet geprobeerd
     $postResult = array();
     /* 
      * bring the forms' action into the local scope for 
      * easier access
      */
     $formAction = $this->_spotForm['action'];
     # zet de page title
     $this->_pageTitle = "spot: post";
     # Make sure the anonymous user and reserved usernames cannot post content
     $spotUser = new SpotUserSystem($this->_db, $this->_settings);
     if (!$spotUser->allowedToPost($this->_currentSession['user'])) {
         $postResult = array('result' => 'notloggedin');
         $formAction = '';
     }
     # if
     # zorg er voor dat alle variables ingevuld zijn
     $spot = array_merge($spot, $this->_spotForm);
     # If user tried to submit, validate the file uploads
     if ($formAction == 'post') {
         # Make sure an NZB file was provided
         if (!isset($_FILES['newspotform']) || $_FILES['newspotform']['error']['nzbfile'] != UPLOAD_ERR_OK) {
             $formMessages['errors'][] = _('Please select NZB file');
             $postResult = array('result' => 'failure');
             $formAction = '';
         }
         # if
         # Make sure an imgae file was provided
         if (!isset($_FILES['newspotform']) || $_FILES['newspotform']['error']['imagefile'] != UPLOAD_ERR_OK) {
             $formMessages['errors'][] = _('Please select a picture');
             $postResult = array('result' => 'failure');
             $formAction = '';
         }
         # if
         # Make sure the subcategorie are in the proper format
         if (is_array($spot['subcata']) || is_array($spot['subcatz']) || !is_array($spot['subcatb']) || !is_array($spot['subcatc']) || !is_array($spot['subcatd'])) {
             $formMessages['errors'][] = _('Invalid subcategories given ');
             $postResult = array('result' => 'failure');
             $formAction = '';
         }
         # if
     }
     # if
     if ($formAction == 'post') {
         # Notificatiesysteem initialiseren
         $spotsNotifications = new SpotNotifications($this->_db, $this->_settings, $this->_currentSession);
         # en creer een grote lijst met spots
         $spot['subcatlist'] = array_merge(array($spot['subcata']), $spot['subcatb'], $spot['subcatc'], $spot['subcatd']);
         # vraag de users' privatekey op
         $this->_currentSession['user']['privatekey'] = $spotUser->getUserPrivateRsaKey($this->_currentSession['user']['userid']);
         # het messageid krijgen we met <>'s, maar we werken
         # in spotweb altijd zonder, dus die strippen we
         $spot['newmessageid'] = substr($spot['newmessageid'], 1, -1);
         # valideer of we deze spot kunnen posten, en zo ja, doe dat dan
         $spotPosting = new SpotPosting($this->_db, $this->_settings);
         $formMessages['errors'] = $spotPosting->postSpot($this->_currentSession['user'], $spot, $_FILES['newspotform']['tmp_name']['imagefile'], $_FILES['newspotform']['tmp_name']['nzbfile']);
         if (empty($formMessages['errors'])) {
             $postResult = array('result' => 'success', 'user' => $this->_currentSession['user']['username'], 'spotterid' => $spotSigning->calculateSpotterId($this->_currentSession['user']['publickey']), 'body' => $spot['body']);
             $formMessages['info'][] = _('Spot has been successfully uploaded. It can take some time before it is shown');
             # en verstuur een notificatie
             $spotsNotifications->sendSpotPosted($spot);
         } else {
             $postResult = array('result' => 'failure');
         }
         # else
     }
     # if
     #- display stuff -#
     $this->template('newspot', array('postspotform' => $spot, 'formmessages' => $formMessages, 'postresult' => $postResult));
 }