示例#1
0
 public function execute()
 {
     global $wgUser;
     if (!$wgUser->isAllowed('surveysubmit') || $wgUser->isBlocked()) {
         $this->dieUsageMsg(array('badaccess-groups'));
     }
     $params = $this->extractRequestParams();
     if (!(isset($params['id']) xor isset($params['name']))) {
         $this->dieUsage(wfMsg('survey-err-id-xor-name'), 'id-xor-name');
     }
     if (isset($params['name'])) {
         $survey = Survey::newFromName($params['name'], null, false);
         if ($survey === false) {
             $this->dieUsage(wfMsgExt('survey-err-survey-name-unknown', 'parsemag', $params['name']), 'survey-name-unknown');
         }
     } else {
         $survey = Survey::newFromId($params['id'], null, false);
         if ($survey === false) {
             $this->dieUsage(wfMsgExt('survey-err-survey-id-unknown', 'parsemag', $params['id']), 'survey-id-unknown');
         }
     }
     $submission = new SurveySubmission(array('survey_id' => $survey->getId(), 'page_id' => 0, 'user_name' => $GLOBALS['wgUser']->getName(), 'time' => wfTimestampNow()));
     foreach (FormatJson::decode($params['answers']) as $answer) {
         $submission->addAnswer(SurveyAnswer::newFromArray((array) $answer));
     }
     $submission->writeToDB();
 }
示例#2
0
 /**
  * Main method.
  * 
  * @since 0.1
  * 
  * @param string $arg
  */
 public function execute($subPage)
 {
     if (!parent::execute($subPage)) {
         return;
     }
     if (is_null($subPage) || trim($subPage) === '') {
         $this->getOutput()->redirect(SpecialPage::getTitleFor('Surveys')->getLocalURL());
     } else {
         $subPage = trim($subPage);
         if (Survey::has(array('name' => $subPage))) {
             $survey = Survey::newFromName($subPage);
             $this->displayNavigation(array(wfMsgExt('survey-navigation-edit', 'parseinline', $survey->getField('name')), wfMsgExt('survey-navigation-take', 'parseinline', $survey->getField('name')), wfMsgExt('survey-navigation-list', 'parseinline')));
             $this->displayStats($survey);
         } else {
             $this->showError('surveys-surveystats-nosuchsurvey');
         }
     }
 }
示例#3
0
 /**
  * Main method.
  * 
  * @since 0.1
  * 
  * @param string $arg
  */
 public function execute($subPage)
 {
     if (!parent::execute($subPage)) {
         return;
     }
     if ($this->getRequest()->wasPosted() && $this->getUser()->matchEditToken($this->getRequest()->getVal('wpEditToken'))) {
         $this->handleSubmission();
     } else {
         if (is_null($subPage) || trim($subPage) === '') {
             $this->getOutput()->redirect(SpecialPage::getTitleFor('Surveys')->getLocalURL());
         } else {
             $subPage = trim($subPage);
             $survey = Survey::newFromName($subPage, null, true);
             if ($survey === false) {
                 $survey = new Survey(array('name' => $subPage), true);
             } else {
                 $this->displayNavigation(array(wfMsgExt('survey-navigation-take', 'parseinline', $subPage), wfMsgExt('survey-navigation-stats', 'parseinline', $subPage), wfMsgExt('survey-navigation-list', 'parseinline')));
             }
             $this->showSurvey($survey);
             $this->addModules('ext.survey.special.survey');
         }
     }
 }