Example #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();
 }
Example #2
0
 /**
  * Gets the summary data.
  * 
  * @since 0.1
  * 
  * @param Survey $survey
  * 
  * @return array
  */
 protected function getSummaryData(Survey $survey)
 {
     $stats = array();
     $stats['name'] = $survey->getField('name');
     $stats['title'] = $survey->getField('title');
     $stats['status'] = wfMsg('surveys-surveystats-' . ($survey->getField('enabled') ? 'enabled' : 'disabled'));
     $stats['questioncount'] = count($survey->getQuestions());
     $stats['submissioncount'] = SurveySubmission::count(array('survey_id' => $survey->getId()));
     return $stats;
 }
 /**
  * (non-PHPdoc)
  * @see includes/api/ApiBase#getParamDescription()
  */
 public function getParamDescription()
 {
     $descs = array('props' => 'Survey data to query', 'continue' => 'Offset number from where to continue the query', 'limit' => 'Max amount of words to return');
     return array_merge(SurveySubmission::getFieldDescriptions(), $descs);
 }