PluginProbe ʕ •ᴥ•ʔ
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping / 6.11.0
Weight Based Shipping Table Rate for WooCommerce – Flexible Shipping v6.11.0
6.12.1 6.12.0 6.11.0 6.10.0 6.9.1 6.9.0 6.8.1 6.8.0 6.7.4 6.7.3 6.7.2 6.7.0 4.21.7 4.22.0 4.22.1 4.23.0 4.23.1 4.23.2 4.23.3 4.24.0 4.24.1 4.24.10 4.24.11 4.24.12 4.24.13 4.24.14 4.24.15 4.24.16 4.24.17 4.24.18 4.24.19 4.24.2 4.24.4 4.24.6 4.24.7 4.24.8 4.24.9 4.25.0 4.25.1 4.25.2 4.25.4 4.25.5 4.25.6 4.25.7 4.25.8 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 4.8.3 4.8.4 4.8.5 4.9.0 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.0.9 5.1.0 5.1.1 5.1.2 5.1.3 5.2.0 5.3.0 5.3.1 5.3.3 5.3.4 5.3.5 6.0.0 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 trunk 6.4.0 1.4 6.4.1 1.4.1 6.4.2 1.5 6.4.3 1.6 6.4.5 1.6.1 6.5.0 1.6.2 6.5.1 1.7 6.5.2 1.8 6.5.3 1.9 6.5.4 1.9.1 6.5.5 1.9.10 6.5.6 1.9.11 6.5.7 1.9.12 6.5.8 1.9.2 6.6.0 1.9.3 6.6.1 1.9.4 6.6.2 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.1 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.6 3.0.7 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.10.0 3.11.0 3.11.1 3.11.2 3.11.3 3.11.4 3.12.0 3.13.0 3.14.0 3.14.1 3.14.2 3.14.3 3.14.4 3.15.0 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.2.0 3.3.1 3.3.10 3.3.11 3.3.12 3.3.13 3.3.14 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4.0 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.8.0 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.15 3.9.16 3.9.17 3.9.18 3.9.19 3.9.2 3.9.20 3.9.21 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.9 4.0.0 4.0.1 4.0.10 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.11.0 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5 4.11.6 4.11.7 4.11.8 4.11.9 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.14.0 4.14.1 4.14.2 4.15.0 4.16.0 4.16.1 4.16.2 4.17.0 4.18.0 4.18.1 4.18.2 4.18.3 4.18.4 4.18.5 4.18.6 4.19.0 4.19.1 4.2.0 4.20.0 4.20.1 4.20.2 4.20.3 4.21.0 4.21.1 4.21.2 4.21.3 4.21.4 4.21.5
flexible-shipping / vendor_prefixed / wpdesk / wp-abtesting / src / ABTest / EqualGroupsRandomABTest.php
flexible-shipping / vendor_prefixed / wpdesk / wp-abtesting / src / ABTest Last commit date
EqualGroupsRandomABTest.php 2 weeks ago
EqualGroupsRandomABTest.php
104 lines
1 <?php
2
3 namespace FSVendor\WPDesk\ABTesting\ABTest;
4
5 use FSVendor\WPDesk\ABTesting\ABTest;
6 use FSVendor\WPDesk\Persistence\ElementNotExistsException;
7 use FSVendor\WPDesk\Persistence\PersistentContainer;
8 /**
9 * Base class for AB tests with equal groups generated by random number generator
10 *
11 * @package WPDesk\ABTesting\ABTest
12 */
13 abstract class EqualGroupsRandomABTest implements ABTest
14 {
15 const CONTAINER_VALUE_PREFIX = 'ab_test';
16 /**
17 * Used to save info about generated variant
18 *
19 * @var PersistentContainer
20 */
21 private $container;
22 /**
23 * How many groups/variants are in the whole test
24 *
25 * @var int
26 */
27 private $variant_count;
28 /**
29 * Some unique test name for persitence pusposes and for higher readability
30 *
31 * @var string
32 */
33 private $test_name;
34 /**
35 * Derived classes can use this value to know what variant id is generated
36 *
37 * @var int
38 */
39 protected $current_variant_id;
40 /**
41 * @param int $variant_count Number of equal size groups to generate.
42 * @param string $test_name Specific test name. Should be unique. Used to persist.
43 * @param PersistentContainer $container Container to persist data.
44 */
45 public function __construct($variant_count, $test_name, PersistentContainer $container)
46 {
47 assert(is_int($variant_count) && $variant_count > 0, '$variant_count makes no sense');
48 $this->variant_count = $variant_count;
49 $this->test_name = $test_name;
50 $this->container = $container;
51 $this->initialize_variant_id();
52 }
53 /**
54 * Clears info about variant and draws again
55 */
56 public function reset()
57 {
58 $this->container->set($this->get_container_key(), null);
59 $this->initialize_variant_id();
60 }
61 /**
62 * @return void
63 */
64 private function initialize_variant_id()
65 {
66 $variant_id = $this->get_variant_id_from_container();
67 if ($variant_id === null) {
68 $variant_id = $this->generate_variant_id();
69 $this->container->set($this->get_container_key(), $variant_id);
70 }
71 $this->current_variant_id = $variant_id;
72 }
73 /**
74 * Returns variant id if exists.
75 *
76 * @return int|null Returns null if not exists.
77 */
78 private function get_variant_id_from_container()
79 {
80 try {
81 $variant_id = $this->container->get($this->get_container_key());
82 return (int) $variant_id;
83 } catch (ElementNotExistsException $e) {
84 return null;
85 }
86 }
87 /**
88 * Key for where variant id should be saved in the persistence container
89 *
90 * @return string
91 */
92 protected function get_container_key()
93 {
94 return implode('_', [self::CONTAINER_VALUE_PREFIX, $this->test_name, 'variant_id']);
95 }
96 /**
97 * @return int
98 */
99 private function generate_variant_id()
100 {
101 return mt_rand(1, $this->variant_count);
102 }
103 }
104