Esempio n. 1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $conn = DB::getConn();
     $data = $conn->fetchAll('SELECT * FROM variants');
     if (!empty($data)) {
         $result = [];
         foreach ($data as $row) {
             $result[$row['test_name']]['test_name'] = $row['test_name'];
             $result[$row['test_name']]['shows'] = 0;
             $result[$row['test_name']]['goals'] = 0;
         }
         foreach ($data as $row) {
             $result[$row['test_name']]['shows'] += $row['shows'];
             $result[$row['test_name']]['goals'] += $row['goals'];
         }
         foreach ($data as $row) {
             $result[$row['test_name']]['conversion'] = $row['goals'] / $row['shows'] * 100 . " %";
         }
         $table = new Table($output);
         $table->setHeaders(['Test name', 'Totals shows', 'Totals goals', 'Total conversion'])->setRows($result);
         $table->render();
     } else {
         $output->writeln('<error>Test list is empty</error>');
     }
 }
Esempio n. 2
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $name = $input->getArgument('name');
     $conn = DB::getConn();
     $data = $conn->fetchAll('SELECT * FROM variants WHERE test_name = ?', [$name]);
     if (!empty($data)) {
         $result = [];
         foreach ($data as $row) {
             $result[$row['variant']]['variant'] = $row['variant'];
             $result[$row['variant']]['shows'] = $row['shows'];
             $result[$row['variant']]['goals'] = $row['goals'];
             $result[$row['variant']]['conversion'] = $row['goals'] / $row['shows'] * 100 . ' %';
         }
         $table = new Table($output);
         $table->setHeaders([[new TableCell('A\\B test results for "' . $name . '"', ['colspan' => 4])], ['Variant name', 'Shows', 'Goals', 'Conversion']])->setRows($result);
         $table->render();
     } else {
         $output->writeln('<error>Test with name "' . $name . '" not found</error>');
     }
 }
Esempio n. 3
0
 /**
  * Returns variant
  *
  * Example:
  * $template = 'forms/ABTest/formTest-' . $formTest->getVariant() . '.twig';
  * $html = $twig->render($template);
  * in folder forms/ABTest/ :
  * formTest-big.twig
  * formTest-small.twig
  *
  * @return string
  */
 public function getVariant()
 {
     if ($this->canOperate) {
         if (!empty($_SESSION[self::SESS_VAR][$this->testName]['variant'])) {
             $selectedVariant = $_SESSION[self::SESS_VAR][$this->testName]['variant'];
         } else {
             $selectedVariant = $this->weightedRandom();
             $conn = DB::getConn();
             $result = $conn->fetchAssoc('SELECT * FROM variants WHERE test_name = ? AND variant = ?', [$this->testName, $selectedVariant]);
             if (empty($result)) {
                 $conn->insert('variants', ['test_name' => $this->testName, 'variant' => $selectedVariant, 'shows' => 1]);
             } else {
                 $conn->update('variants', ['shows' => $result['shows'] + 1], array('id' => $result['id']));
             }
             $_SESSION[self::SESS_VAR][$this->testName]['variant'] = $selectedVariant;
             $_SESSION[self::SESS_VAR][$this->testName]['notReached'] = true;
         }
         return $selectedVariant;
     }
     return isset($this->values[0]) ? $this->values[0] : '';
 }