Exemplo n.º 1
0
 /**
  * Returns A/B-test related attribute types
  * 
  * @return array
  */
 public static function onGetAttributeTypes()
 {
     $sections = array('A' => array('NAME' => Localization\Loc::getMessage('ABTEST_CONV_TEST_SECTION_A_NAME')), 'B' => array('NAME' => Localization\Loc::getMessage('ABTEST_CONV_TEST_SECTION_B_NAME')));
     return array('abtest' => array('MODULE' => 'abtest', 'NAME' => Localization\Loc::getMessage('ABTEST_CONVATTR_TEST_NAME'), 'SORT' => 5000, 'GET_VALUES' => function (array $ids) {
         $result = ABTestTable::getList(array('select' => array('ID', 'NAME'), 'filter' => array('ID' => $ids), 'order' => array('SORT' => 'ASC')));
         $values = array();
         while ($abtest = $result->fetch()) {
             if (empty($abtest['NAME'])) {
                 $abtest['NAME'] = str_replace('#ID#', $abtest['ID'], Localization\Loc::getMessage('ABTEST_CONV_TEST_TITLE'));
             }
             $values[$abtest['ID']] = array('NAME' => $abtest['NAME']);
         }
         return $values;
     }), 'abtest_section' => array('MODULE' => 'abtest', 'NAME' => Localization\Loc::getMessage('ABTEST_CONVATTR_TEST_SECTION_NAME'), 'SORT' => 5100, 'GET_VALUES' => function (array $ids) use($sections) {
         $values = array();
         foreach ($ids as $id) {
             if (!empty($sections[$id])) {
                 $values[$id] = $sections[$id];
             }
         }
         return $values;
     }));
 }
Exemplo n.º 2
0
 /**
  * Returns A/B-test traffic amounts
  *
  * @param int $id A/B-test ID.
  * @return array
  */
 public static function getTestCapacity($id)
 {
     $cache = new \CPHPCache();
     if ($cache->initCache(time() - strtotime('today'), 'abtest_capacity_' . intval($id), '/abtest')) {
         $capacity = $cache->getVars();
     } else {
         if (Loader::includeModule('conversion')) {
             if ($conversionRates = Conversion\RateManager::getTypes(array('ACTIVE' => true))) {
                 if ($abtest = ABTestTable::getById($id)->fetch()) {
                     $lid = $abtest['SITE_ID'];
                     $baseRate = array_slice($conversionRates, 0, 1, true);
                     $reportContext = new Conversion\ReportContext();
                     $reportContext->setAttribute('conversion_site', $lid);
                     $reportContext->setAttribute('abtest', $id);
                     $reportContext->setAttribute('abtest_section', 'A');
                     $groupAData = reset($reportContext->getRatesDeprecated($baseRate, array(), null));
                     $reportContext->unsetAttribute('abtest_section', 'A');
                     $reportContext->setAttribute('abtest_section', 'B');
                     $groupBData = reset($reportContext->getRatesDeprecated($baseRate, array(), null));
                     $capacity = array('A' => $groupAData['DENOMINATOR'], 'B' => $groupBData['DENOMINATOR']);
                     $cache->startDataCache(strtotime('tomorrow') - time());
                     $cache->endDataCache($capacity);
                 }
             }
         }
     }
     return !empty($capacity) ? $capacity : array('A' => 0, 'B' => 0);
 }
Exemplo n.º 3
0
 /**
  * Deletes an A/B-test
  *
  * @param int $id A/B-test ID.
  * @return bool
  */
 public static function deleteTest($id)
 {
     if ($abtest = ABTestTable::getById($id)->fetch()) {
         $result = ABTestTable::delete(intval($id));
         if ($result->isSuccess()) {
             if ($abtest['ACTIVE'] == 'Y') {
                 Helper::clearCache($abtest['SITE_ID']);
             }
             return true;
         }
     }
     return false;
 }