Ejemplo n.º 1
0
 /**
  * Returns script filename by URL
  *
  * @param string $site Site ID.
  * @param string $url URL.
  * @return string|null
  */
 public static function getRealPath($site, $url)
 {
     $docRoot = rtrim(\Bitrix\Main\SiteTable::getDocumentRoot($site), '/');
     $url = str_replace('\\', '/', $url);
     $url = \CHTTP::urnEncode($url);
     $uri = new Web\Uri($url);
     $path = \CHTTP::urnDecode($uri->getPath());
     if (substr($path, -1, 1) == '/') {
         $path .= 'index.php';
     }
     $file = new IO\File($docRoot . $path);
     if ($file->isExists()) {
         return substr($file->getPath(), strlen($docRoot));
     }
     if ($rewriteRules = AdminHelper::getRewriteRules($site)) {
         $pathQuery = \CHTTP::urnDecode($uri->getPathQuery());
         foreach ($rewriteRules as &$item) {
             if (preg_match($item['CONDITION'], $pathQuery)) {
                 $url = empty($item['PATH']) && !empty($item['RULE']) ? preg_replace($item['CONDITION'], $item['RULE'], $pathQuery) : $item['PATH'];
                 $url = \CHTTP::urnEncode($url);
                 $uri = new Web\Uri($url);
                 $path = \CHTTP::urnDecode($uri->getPath());
                 $file = new IO\File($docRoot . $path);
                 if ($file->isExists()) {
                     $pathTmp = str_replace('.', '', strtolower(ltrim($path, '/\\')));
                     $pathTmp7 = substr($pathTmp, 0, 7);
                     if ($pathTmp7 == 'upload/' || $pathTmp7 == 'bitrix/') {
                         continue;
                     }
                     if ($file->getExtension() != 'php') {
                         continue;
                     }
                     return substr($file->getPath(), strlen($docRoot));
                 }
             }
         }
     }
     return null;
 }
Ejemplo n.º 2
0
 /**
  * Starts an A/B-test
  *
  * @param int $id A/B-test ID.
  * @return bool
  */
 public static function startTest($id)
 {
     global $USER;
     if ($abtest = ABTestTable::getById($id)->fetch()) {
         $fields = array('START_DATE' => new Type\DateTime(), 'STOP_DATE' => null, 'ACTIVE' => 'Y', 'USER_ID' => $USER->getID());
         if (!$abtest['MIN_AMOUNT']) {
             $capacity = AdminHelper::getSiteCapacity($abtest['SITE_ID']);
             if ($capacity['min'] > 0) {
                 $fields['MIN_AMOUNT'] = $capacity['min'];
             }
         }
         $result = ABTestTable::update(intval($id), $fields);
         if ($result->isSuccess()) {
             Helper::clearCache($abtest['SITE_ID']);
             return true;
         }
     }
     return false;
 }