_manager = AbTestsManager::instance(); $this->set_data($this->get_db_data()); $this->init(); } /** * Initialize test settings * @since 2.18.7 */ protected function init() { // use it for test initialization } /** * @since 2.18.7 * @return array */ private function get_db_data() { $all_data = $this->_manager->get_all_tests_data(); $data = isset($all_data[static::TEST_NAME]) ? $all_data[static::TEST_NAME] : []; return $data; } /** * @since 2.18.7 * @param array $data * @return $this */ protected function set_data(array $data) { $this->_data = $data; return $this; } /** * @since 2.18.7 * @return mixed|null */ public function get_current_variant() { return $this->_get('variant'); } /** * @since 2.18.7 * @param array $variants * @return mixed */ protected function select_random_variant(array $variants) { $variants = array_values($variants); $key = mt_rand(0, count($variants) - 1); return $variants[$key]; } /** * @since 2.18.7 * @param mixed $variant * @return array */ protected function make_test_data($variant) { return [ self::KEY_START_DATE => time(), self::KEY_VARIANT => $variant, ]; } /** * @since 2.18.7 * @return bool */ protected function save() { return $this->_manager->save_test_data(static::TEST_NAME, $this->_get()); } }