/**
  * PHPDOC
  *
  * @return NelioABAltExpGoalResult PHPDOC
  *
  * @since PHPDOC
  */
 public function get_results()
 {
     $results = new NelioABAltExpGoalResult();
     /** @var NelioABAlternativeExperiment $experiment */
     $experiment = $this->get_experiment();
     $url = sprintf(NELIOAB_BACKEND_URL . '/goal/alternativeexp/%s/result', $this->get_id());
     $json_data = null;
     $json_data = NelioABBackend::remote_get($url);
     $json_data = json_decode($json_data['body'], true);
     $results->set_total_visitors($json_data['totalVisitors']);
     $results->set_total_conversions($json_data['totalConversions']);
     $results->set_total_conversion_rate($json_data['totalConversionRate']);
     $results->set_visitors_history($json_data['historyVisitors']);
     $results->set_conversions_history($json_data['historyConversions']);
     $results->set_first_update($json_data['firstUpdate']);
     $results->set_last_update($json_data['lastUpdate']);
     $confidence = 0;
     if (isset($json_data['resultStatus'])) {
         $confidence = $json_data['confidenceInResultStatus'];
     }
     $results->set_summary_status(NelioABGTest::get_result_status_from_str($json_data['resultStatus']), $confidence);
     $alt_res = new NelioABAltStats(true);
     // Original
     $alt_res->set_name(__('Original', 'nelioab'));
     $alt_res->set_alt_id($json_data['originalStats']['altId']);
     $alt_res->set_num_of_visitors($json_data['originalStats']['visitors']);
     $alt_res->set_num_of_conversions($json_data['originalStats']['conversions']);
     $alt_res->set_conversion_rate($json_data['originalStats']['conversionRate']);
     if (isset($json_data['originalStats']['historyVisitors'])) {
         $alt_res->set_visitors_history($json_data['originalStats']['historyVisitors']);
     }
     if (isset($json_data['originalStats']['historyConversions'])) {
         $alt_res->set_conversions_history($json_data['originalStats']['historyConversions']);
     }
     $results->add_alternative_results($alt_res);
     if (is_array($json_data['alternativeStats'])) {
         foreach ($json_data['alternativeStats'] as $json_alt) {
             $alt_res = new NelioABAltStats();
             $alternative = null;
             foreach ($experiment->get_alternatives() as $alt) {
                 /** @var NelioABAlternative $alt */
                 if ($alt->get_id() == $json_alt['altId']) {
                     $alternative = $alt;
                 }
             }
             if ($alternative == null) {
                 foreach ($experiment->get_alternatives() as $alt) {
                     if ($alt->applies_to_post_id($json_alt['altId'])) {
                         $alternative = $alt;
                     }
                 }
             }
             if ($alternative == null) {
                 continue;
             }
             $alt_res->set_name($alternative->get_name());
             $alt_res->set_alt_id($json_alt['altId']);
             $alt_res->set_num_of_visitors($json_alt['visitors']);
             $alt_res->set_num_of_conversions($json_alt['conversions']);
             $alt_res->set_conversion_rate($json_alt['conversionRate']);
             $alt_res->set_improvement_factor($json_alt['improvementFactor']);
             if (isset($json_alt['historyVisitors'])) {
                 $alt_res->set_visitors_history($json_alt['historyVisitors']);
             }
             if (isset($json_alt['historyConversions'])) {
                 $alt_res->set_conversions_history($json_alt['historyConversions']);
             }
             $results->add_alternative_results($alt_res);
         }
     }
     if (is_array($json_data['gTests'])) {
         foreach ($json_data['gTests'] as $stats) {
             $g = new NelioABGTest($stats['message'], $experiment->get_originals_id());
             $min_ver = NULL;
             if (isset($stats['minVersion'])) {
                 $min_ver = $stats['minVersion'];
                 $g->set_min($min_ver);
             }
             $max_ver = NULL;
             if (isset($stats['maxVersion'])) {
                 $max_ver = $stats['maxVersion'];
                 $g->set_max($max_ver);
             }
             if (isset($stats['gtest'])) {
                 $g->set_gtest($stats['gtest']);
             }
             if (isset($stats['pvalue'])) {
                 $g->set_pvalue($stats['pvalue']);
             }
             if (isset($stats['certainty'])) {
                 $g->set_certainty($stats['certainty']);
             }
             $g->set_min_name(__('Unknown', 'nelioab'));
             $g->set_max_name(__('Unknown', 'nelioab'));
             $alts = $experiment->get_alternatives();
             for ($i = 0; $i < count($alts); ++$i) {
                 $alt = $alts[$i];
                 $short_name = sprintf(__('Alternative %s', 'nelioab'), $i + 1);
                 if ($alt->get_identifiable_value() == $min_ver || $alt->get_id() == $min_ver) {
                     $g->set_min_name($short_name, $alt->get_name());
                 }
                 if ($alt->get_identifiable_value() == $max_ver || $alt->get_id() == $max_ver) {
                     $g->set_max_name($short_name, $alt->get_name());
                 }
             }
             if ($experiment->get_originals_id() == $min_ver) {
                 $g->set_min_name(__('Original', 'nelioab'));
             }
             if ($experiment->get_originals_id() == $max_ver) {
                 $g->set_max_name(__('Original', 'nelioab'));
             }
             $results->add_gtest($g);
         }
     }
     return $results;
 }
 /**
  * Sets the result status of this experiment to the given status and confidence.
  *
  * @param int $status     the new status of the experiment.
  * @param int $confidence the confidence (from 0 to 100) we have in the status of the current results.
  *
  * @return void
  *
  * @since 3.0.0
  */
 public function set_result_status($status, $confidence)
 {
     $this->result_status = NelioABGTest::get_result_status_from_str($status);
     if (NelioABGTest::WINNER == $this->result_status) {
         if (NelioABSettings::get_min_confidence_for_significance() <= $confidence) {
             $this->result_status = NelioABGTest::WINNER_WITH_CONFIDENCE;
         }
     }
 }
Esempio n. 3
0
 /**
  * Creates a new instance of this class.
  *
  * @param int $type     PHPDOC
  * @param int $original PHPDOC
  *
  * @return NelioABGTest a new instance of this class.
  *
  * @since PHPDOC
  */
 public function __construct($type, $original)
 {
     $this->type = NelioABGTest::get_result_status_from_str($type);
     $this->original = $original;
 }