public function duplicate($new_name) { $id = parent::duplicate($new_name); if (-1 == $id) { return $id; } require_once NELIOAB_MODELS_DIR . '/experiments-manager.php'; /** @var NelioABPostAlternativeExperiment $exp */ $exp = NelioABExperimentsManager::get_experiment_by_id($id, $this->get_type()); $alts = 0; foreach ($exp->get_alternatives() as $alt) { /** @var NelioABAlternative $alt */ $new_id = $exp->create_alternative_copying_content($alt->get_name(), $alt->get_value()); if ($new_id) { $alt->set_value($new_id); $alt->mark_as_dirty(); ++$alts; } else { $alt->mark_as_removed(); $alt->mark_as_dirty(); } } if (0 == $alts) { $exp->set_status(NelioABExperiment::STATUS_DRAFT); } $exp->save(); return $exp->get_id(); }