/** * Save a fogbugz ticket * @requestParam type $category * @requestParam type $message * @responseParam string result [OK/error] * @responseParam string error (error message) */ public function saveFeedback() { $user = $this->wg->User; $feature = $this->getVal('feature'); $category = $this->getVal('category'); $message = $this->getVal('message'); if (!$user->isLoggedIn()) { $this->result = 'error'; $this->error = $this->wf->Msg('wikifeatures-error-permission'); } // TODO: validate feature_id if (!array_key_exists($feature, WikiFeaturesHelper::$feedbackAreaIDs)) { $this->result = 'error'; $this->error = $this->wf->Msg('wikifeatures-error-invalid-parameter', 'feature'); } else { if (!array_key_exists($category, WikiFeaturesHelper::$feedbackCategories) || $category == 0) { $this->result = 'error'; $this->error = $this->wf->Msg('wikifeatures-error-invalid-category'); } else { if (!$message || strlen($message) < 10 || strlen($message) > 1000) { $this->result = 'error'; $this->error = $this->wf->Msg('wikifeatures-error-message'); } else { if (WikiFeaturesHelper::getInstance()->isSpam($user->getName(), $feature)) { $this->result = 'error'; $this->error = $this->wf->Msg('wikifeatures-error-spam-attempt'); } } } } // Passed validations, actually do something useful if (is_null($this->error)) { $this->result = 'ok'; $bugzdata = WikiFeaturesHelper::getInstance()->sendFeedback($feature, $user, $message, $category); $this->msg = wfMsg('wikifeatures-feedback-success'); } }