/**
  * @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();
 }
Beispiel #4
0
 /**
  * @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();
 }