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