/** * Returns the list of running experiments for which the current user has one alternative assigned. * * @return array the list of running experiments for which the current user has one alternative assigned. * * @see NelioABVisitor::get_experiment_ids_in_request * * @since 4.0.0 */ public static function get_relevant_running_experiments_from_cache() { if (self::$relevant_running_experiments) { return self::$relevant_running_experiments; } $env_ids = NelioABVisitor::get_experiment_ids_in_request(); $running_experiments = self::get_running_experiments_from_cache(); $relevant_running_experiments = array(); foreach ($running_experiments as $exp) { /** @var NelioABExperiment $exp */ $is_relevant = false; for ($i = 0; $i < count($env_ids) && !$is_relevant; ++$i) { if ($exp->get_id() == $env_ids[$i]) { $is_relevant = true; } } if ($is_relevant) { $already_in_array = false; foreach ($relevant_running_experiments as $relevant_exp) { /** @var NelioABExperiment $relevant_exp */ if ($relevant_exp->get_id() == $exp->get_id()) { $already_in_array = true; } } if (!$already_in_array) { array_push($relevant_running_experiments, $exp); } } } if (NelioABVisitor::is_fully_loaded()) { self::$relevant_running_experiments = $relevant_running_experiments; } else { self::$relevant_running_experiments = false; } return $relevant_running_experiments; }