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>'); } }
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>'); } }
/** * 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] : ''; }