/** * Test that EDD sample data generation is valid * * @since 1.1.0 * * @group price * @group edd_price */ public function testDataGeneration() { $group_data = ingot_test_data_price::edd_tests(10); $group = \ingot\testing\crud\group::read($group_data['group_ID']); $this->assertTrue(\ingot\testing\crud\group::valid($group)); foreach ($group_data['variants'] as $variant_id) { $this->assertTrue(is_numeric($variant_id)); $variant = \ingot\testing\crud\variant::read($variant_id); $this->assertTrue(\ingot\testing\crud\variant::valid($variant)); $this->assertEquals($variant['content'], $group['meta']['product_ID']); } }
/** * Get price variation or variation as a float for a variant * * @since 1.1.0 * * @param int|array $variant Variation or variations ID * * @return float|void */ public static function get_price_variation($variant) { if (is_numeric($variant)) { $variant = variant::read($variant); } if (variant::valid($variant) && 'price' == $variant['type']) { if (is_numeric($variant['meta']['price'])) { return $variant['meta']['price']; } return $variant['meta']['price'][0]; } return 1; }
/** * Setup tracking hooks * * @since 1.1.0 * * @return array Groups being tracked */ public static function set_tracking() { $groups = self::get_destination_tests(); if (!empty($groups)) { self::clear_invalid($groups); } if (!empty($groups)) { foreach ($groups as $group_id) { $group = group::read($group_id); if (group::valid($group)) { if (destination::is_tagline($group)) { if (!self::$tagline) { $variant_id = self::get_test($group_id); $variant = variant::read($variant_id); if (variant::valid($variant)) { self::$tagline = $variant['content']; } } if (is_string(self::$tagline)) { add_filter('bloginfo', function ($output, $show) { if ('description' == $show) { return self::$tagline; } return $output; }, 24, 2); } } } } if (!empty($groups)) { new \ingot\testing\tests\click\destination\hooks($groups); } return $groups; } }
/** * Set variant property * * @param int|array|\MaBandit\lever|null $variant Variant ID, config, or lever. If null, one will be chosen */ protected function set_variant($variant) { if (is_numeric($variant) && true === variant::valid($_variant = variant::read($variant))) { $this->variant = $_variant; } elseif (is_array($variant) && variant::valid($variant)) { $this->variant = $variant; } elseif (is_a($variant, 'MaBandit\\lever')) { /** @var \MaBandit\Lever $variant */ $this->variant = variant::read($variant->getValue()); } else { $this->set_bandit(); $this->choose(); } }
/** * Register a conversion * * @since 0.4.0 * * @param int|array $variant Variant config or Variant ID to register conversion for * @param int $session_ID Optional. Session ID. If a valid session ID is passed, that session will be marked as having converted with this vartiant ID. */ function ingot_register_conversion($variant, $session_ID = 0) { if (is_numeric($variant)) { $variant = \ingot\testing\crud\variant::read($variant); } if (\ingot\testing\crud\variant::valid($variant)) { $bandit = new \ingot\testing\bandit\content($variant['group_ID']); $bandit->record_victory($variant['ID']); if (0 < absint($session_ID) && is_array($session = \ingot\testing\crud\session::read($session_ID))) { } else { $session = \ingot\testing\ingot::instance()->get_current_session()['session']; } if (\ingot\testing\crud\session::valid($session)) { $session['click_ID'] = $variant['ID']; $session['used'] = true; if (0 !== ($userID = get_current_user_id())) { $session['click_url'] = $userID; } \ingot\testing\crud\session::update($session, $session['ID'], true); } } }