public static function load($id)
 {
     $json_data = NelioABBackend::remote_get(NELIOAB_BACKEND_URL . '/exp/post/' . $id);
     $json_data = json_decode($json_data['body']);
     $exp = new NelioABHeadlineAlternativeExperiment($json_data->key->id);
     $exp->set_name($json_data->name);
     if (isset($json_data->description)) {
         $exp->set_description($json_data->description);
     }
     $exp->set_type_using_text($json_data->kind);
     $exp->set_original($json_data->originalPost);
     $exp->set_status($json_data->status);
     $exp->set_finalization_mode($json_data->finalizationMode);
     if (isset($json_data->finalizationModeValue)) {
         $exp->set_finalization_value($json_data->finalizationModeValue);
     }
     $exp->track_heatmaps(false);
     if (isset($json_data->showHeatmap) && $json_data->showHeatmap) {
         $exp->track_heatmaps($json_data->showHeatmap);
     }
     if (isset($json_data->goals)) {
         NelioABExperiment::load_goals_from_json($exp, $json_data->goals);
     }
     $alternatives = array();
     if (isset($json_data->alternatives)) {
         foreach ($json_data->alternatives as $json_alt) {
             $alt = new NelioABHeadlineAlternative($json_alt->key->id);
             $alt->set_name($json_alt->name);
             $alt->set_value(json_decode($json_alt->value, true));
             array_push($alternatives, $alt);
         }
     }
     $exp->set_appspot_alternatives($alternatives);
     return $exp;
 }
 public static function load($id)
 {
     $json_data = NelioABBackend::remote_get(NELIOAB_BACKEND_URL . '/exp/global/' . $id);
     $json_data = json_decode($json_data['body']);
     $exp = new NelioABWidgetAlternativeExperiment($json_data->key->id);
     $exp->set_type_using_text($json_data->kind);
     $exp->set_name($json_data->name);
     if (isset($json_data->description)) {
         $exp->set_description($json_data->description);
     }
     $exp->set_status($json_data->status);
     $exp->set_finalization_mode($json_data->finalizationMode);
     if (isset($json_data->finalizationModeValue)) {
         $exp->set_finalization_value($json_data->finalizationModeValue);
     }
     if (isset($json_data->start)) {
         $exp->set_start_date($json_data->start);
     }
     if (isset($json_data->finalization)) {
         $exp->set_end_date($json_data->finalization);
     }
     if (isset($json_data->goals)) {
         NelioABExperiment::load_goals_from_json($exp, $json_data->goals);
     }
     $alternatives = array();
     if (isset($json_data->alternatives)) {
         foreach ($json_data->alternatives as $json_alt) {
             $alt = new NelioABAlternative($json_alt->key->id);
             $alt->set_name($json_alt->name);
             if (isset($json_alt->content)) {
                 $alt->set_value($json_alt->content->value);
             } else {
                 $alt->set_value('');
             }
             array_push($alternatives, $alt);
         }
     }
     $exp->set_appspot_alternatives($alternatives);
     return $exp;
 }
 /**
  * It creates a new instance of Experiment Summary.
  *
  * @param int $id the ID of the experiment summary.
  *
  * @return NelioABExperimentSummary a new instance of this class.
  *
  * @since 4.1.0
  */
 public function __construct($id)
 {
     parent::__construct();
     $this->id = $id;
 }
 public function clear()
 {
     parent::clear();
     $this->appspot_alternatives = array();
     $this->local_alternatives = array();
     $this->track_heatmaps = false;
     $this->winning_alternative = false;
 }
 /**
  * If caching all experiments, this function updates the cache with the given experiment.
  *
  * @param NelioABExperiment $experiment the experiment to be added to or updated from the cache.
  *
  * @since 3.4.0
  */
 public static function update_experiment($experiment)
 {
     if (self::CACHE_ALL_EXPERIMENTS) {
         self::get_experiments();
         $is_in_array = false;
         for ($i = 0; $i < count(self::$experiments) && !$is_in_array; ++$i) {
             /** @var NelioABExperiment $aux */
             $aux = self::$experiments[$i];
             if ($aux->get_id() == $experiment->get_id() && $aux->get_type() == $experiment->get_type()) {
                 self::$experiments[$i] = $experiment;
                 $is_in_array = true;
             }
         }
         if (!$is_in_array) {
             array_push(self::$experiments, $experiment);
         }
         update_option('nelioab_experiments', self::$experiments);
     }
 }
 public static function load($id)
 {
     $json_data = NelioABBackend::remote_get(NELIOAB_BACKEND_URL . '/exp/hm/' . $id);
     $json_data = json_decode($json_data['body']);
     $exp = new NelioABHeatmapExperiment($json_data->key->id);
     $exp->set_type_using_text($json_data->kind);
     $exp->set_name($json_data->name);
     $exp->set_post_id($json_data->post);
     if (isset($json_data->description)) {
         $exp->set_description($json_data->description);
     }
     $exp->set_status($json_data->status);
     $exp->set_finalization_mode($json_data->finalizationMode);
     if (isset($json_data->finalizationModeValue)) {
         $exp->set_finalization_value($json_data->finalizationModeValue);
     }
     if (isset($json_data->goals)) {
         NelioABExperiment::load_goals_from_json($exp, $json_data->goals);
     }
     return $exp;
 }
 public function column_status($exp)
 {
     $str = NelioABExperiment::get_label_for_status($exp->get_status());
     switch ($exp->get_status()) {
         case NelioABExperiment::STATUS_DRAFT:
             return $this->make_label($str, '#999999', '#eeeeee');
         case NelioABExperiment::STATUS_PAUSED:
             return $this->make_label($str, '#999999', '#eeeeee');
         case NelioABExperiment::STATUS_READY:
             return $this->make_label($str, '#e96500', '#fff6ad');
         case NelioABExperiment::STATUS_SCHEDULED:
             return $this->make_label($str, '#fff6ad', '#e96500');
         case NelioABExperiment::STATUS_RUNNING:
             return $this->make_label($str, '#266529', '#d1ffd3');
         case NelioABExperiment::STATUS_FINISHED:
             return $this->make_label($str, '#103269', '#BED6FC');
         case NelioABExperiment::STATUS_TRASH:
             return $this->make_label($str, '#802a28', '#ffe0df');
         default:
             return $this->make_label($str, '#999999', '#eeeeee');
     }
 }