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(); }
/** * 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); }