/** * @static * @return WikiFeaturesHelper */ public static function getInstance() { if (self::$instance === NULL) { $class = __CLASS__; self::$instance = new $class(); } return self::$instance; }
/** * 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'); } }
/** * @dataProvider getFeatureLabsDataProvider */ public function testGetFeatureLabs($wg_wiki_features, $exp_result, $cache_value = null, $release_date = array()) { $this->setUpGetFeature('labs', $wg_wiki_features); $this->setUpMock($cache_value); $helper = new WikiFeaturesHelper(); WikiFeaturesHelper::$release_date = $release_date; $response = $helper->getFeatureLabs(); $this->assertEquals($exp_result, $response); $this->tearDownGetFeature(); }
/** * @dataProvider getFeatureLabsDataProvider */ public function testGetFeatureLabs($wg_wiki_features, $exp_result, $cache_value = null, $release_date = array()) { $this->setUpGetFeature('labs', $wg_wiki_features); $this->setUpMock($cache_value); $helper = new WikiFeaturesHelper(); WikiFeaturesHelper::$release_date = $release_date; $response = $helper->getFeatureLabs(); $actual_features = []; foreach ($response as $actual_feature) { $actual_features[$actual_feature['name']] = true; } foreach ($exp_result as $feature) { $this->assertArrayHasKey($feature['name'], $actual_features); } $this->tearDownGetFeature(); }