/**
  * 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']);
     }
 }
Beispiel #2
0
 /**
  * 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;
 }
Beispiel #3
0
 /**
  * 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;
     }
 }
Beispiel #4
0
 /**
  * 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();
     }
 }
Beispiel #5
0
/**
 * 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);
        }
    }
}