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;
 }
 public function __construct($id = -1)
 {
     parent::__construct($id);
     $this->value = array('id' => -1);
 }
 /**
  * PHPDOC
  *
  * @param array $json_alts PHPDOC
  *
  * @return void
  *
  * @since PHPDOC
  */
 public function load_json4js_alternatives($json_alts)
 {
     $this->appspot_alternatives = array();
     $this->local_alternatives = array();
     foreach ($json_alts as $json_alt) {
         if (isset($json_alt->isNew) && $json_alt->isNew && isset($json_alt->wasDeleted) && $json_alt->wasDeleted) {
             continue;
         }
         $alt = NelioABAlternative::build_alternative_using_json4js($json_alt);
         if ($alt->get_id() > 0) {
             $this->add_appspot_alternative($alt);
         } else {
             $this->add_local_alternative($alt);
         }
     }
 }
 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 NelioABPostAlternativeExperiment($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);
     if (isset($json_data->postType)) {
         $exp->set_post_type($json_data->postType);
     }
     $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->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);
             $alt->set_value($json_alt->value);
             array_push($alternatives, $alt);
         }
     }
     $exp->set_appspot_alternatives($alternatives);
     return $exp;
 }
 /**
  * PHPDOC
  *
  * @param array              $all_widgets PHPDOC
  * @param NelioABAlternative $alt         PHPDOC
  *
  * @return array PHPDOC
  *
  * @since PHPDOC
  */
 private function fix_widgets_for_widget_exp($all_widgets, $alt)
 {
     /** @var NelioABExperiment $exp */
     $exp = $this->get_global_alt_exp_running();
     if ($exp->get_type() != NelioABExperiment::WIDGET_ALT_EXP) {
         return $all_widgets;
     }
     $alt_id = $alt->get_id();
     $exp_id = $exp->get_id();
     $use_ori_widgets = $exp->get_originals_id() == $alt_id;
     $res = array();
     if ($use_ori_widgets) {
         $res = $this->filter_original_widgets($all_widgets);
     } else {
         require_once NELIOAB_EXP_CONTROLLERS_DIR . '/widget-experiment-controller.php';
         $widgets_in_experiments = NelioABWidgetExpAdminController::get_widgets_in_experiments();
         foreach ($all_widgets as $sidebar => $widgets) {
             $res[$sidebar] = array();
             if (!is_array($widgets)) {
                 continue;
             }
             foreach ($widgets as $widget) {
                 if ($this->is_widget_enabled($widget, $widgets_in_experiments, $exp_id, $alt_id)) {
                     array_push($res[$sidebar], $widget);
                 }
             }
         }
     }
     return $res;
 }