Esempio n. 1
0
	public function __construct($fileName, $settings)
	{
		$this->settings = array(
			'SITE_ID' => $settings['SITE_ID'],
			'PROTOCOL' => $settings['PROTOCOL'] == 'https' ? 'https' : 'http',
			'DOMAIN' => $settings['DOMAIN'],
		);

		$site = SiteTable::getRow(array("filter" => array("LID" => $this->settings['SITE_ID'])));

		$this->siteRoot = Path::combine(
			SiteTable::getDocumentRoot($this->settings['SITE_ID']),
			$site['DIR']
		);

		if(substr($fileName, -strlen(self::FILE_EXT)) != self::FILE_EXT)
		{
			$fileName .= self::FILE_EXT;
		}

		if($this->partFile == '')
		{
			$this->partFile = $fileName;
		}

		$this->pathPhysical = null; // hack for object reconstuct during file splitting

		parent::__construct($this->siteRoot.'/'.$fileName, $this->settings['SITE_ID']);

		$this->partChanged = $this->isExists() && !$this->isSplitNeeded();
	}
Esempio n. 2
0
function seoSitemapGetFilesData($PID, $arSitemap, $arCurrentDir, $sitemapFile)
{
    global $NS;
    $arDirList = array();
    if ($arCurrentDir['ACTIVE'] == SitemapRuntimeTable::ACTIVE) {
        $list = \CSeoUtils::getDirStructure($arSitemap['SETTINGS']['logical'] == 'Y', $arSitemap['SITE_ID'], $arCurrentDir['ITEM_PATH']);
        foreach ($list as $dir) {
            $dirKey = "/" . ltrim($dir['DATA']['ABS_PATH'], "/");
            if ($dir['TYPE'] == 'F') {
                if (!isset($arSitemap['SETTINGS']['FILE'][$dirKey]) || $arSitemap['SETTINGS']['FILE'][$dirKey] == 'Y') {
                    if (preg_match($arSitemap['SETTINGS']['FILE_MASK_REGEXP'], $dir['FILE'])) {
                        $f = new IO\File($dir['DATA']['PATH'], $arSitemap['SITE_ID']);
                        $sitemapFile->addFileEntry($f);
                        $NS['files_count']++;
                    }
                }
            } else {
                if (!isset($arSitemap['SETTINGS']['DIR'][$dirKey]) || $arSitemap['SETTINGS']['DIR'][$dirKey] == 'Y') {
                    $arDirList[] = $dirKey;
                }
            }
        }
    } else {
        $len = strlen($arCurrentDir['ITEM_PATH']);
        if (!empty($arSitemap['SETTINGS']['DIR'])) {
            foreach ($arSitemap['SETTINGS']['DIR'] as $dirKey => $checked) {
                if ($checked == 'Y') {
                    if (strncmp($arCurrentDir['ITEM_PATH'], $dirKey, $len) === 0) {
                        $arDirList[] = $dirKey;
                    }
                }
            }
        }
        if (!empty($arSitemap['SETTINGS']['FILE'])) {
            foreach ($arSitemap['SETTINGS']['FILE'] as $dirKey => $checked) {
                if ($checked == 'Y') {
                    if (strncmp($arCurrentDir['ITEM_PATH'], $dirKey, $len) === 0) {
                        $fileName = IO\Path::combine(SiteTable::getDocumentRoot($arSitemap['SITE_ID']), $dirKey);
                        if (!is_dir($fileName)) {
                            $f = new IO\File($fileName, $arSitemap['SITE_ID']);
                            if ($f->isExists() && !$f->isSystem() && preg_match($arSitemap['SETTINGS']['FILE_MASK_REGEXP'], $f->getName())) {
                                $sitemapFile->addFileEntry($f);
                                $NS['files_count']++;
                            }
                        }
                    }
                }
            }
        }
    }
    if (count($arDirList) > 0) {
        foreach ($arDirList as $dirKey) {
            $arRuntimeData = array('PID' => $PID, 'ITEM_PATH' => $dirKey, 'PROCESSED' => SitemapRuntimeTable::UNPROCESSED, 'ACTIVE' => SitemapRuntimeTable::ACTIVE, 'ITEM_TYPE' => SitemapRuntimeTable::ITEM_TYPE_DIR);
            SitemapRuntimeTable::add($arRuntimeData);
        }
    }
    SitemapRuntimeTable::update($arCurrentDir['ID'], array('PROCESSED' => SitemapRuntimeTable::PROCESSED));
}
Esempio n. 3
0
 /**
  * Returns urlrewrite array
  *
  * @param string $site Site ID.
  * @return array
  */
 private static function getRewriteRules($site)
 {
     $docRoot = rtrim(\Bitrix\Main\SiteTable::getDocumentRoot($site), '/');
     $rewriteRules = array();
     $arUrlRewrite =& $rewriteRules;
     $rewriteFile = new IO\File($docRoot . '/urlrewrite.php');
     if ($rewriteFile->isExists()) {
         include $rewriteFile->getPath();
     }
     return $rewriteRules;
 }
Esempio n. 4
0
 public function __construct($path, $siteId = null)
 {
     if (empty($path)) {
         throw new InvalidPathException($path);
     }
     $this->originalPath = $path;
     $this->path = Path::normalize($path);
     if ($siteId === null) {
         $this->documentRoot = Main\Application::getDocumentRoot();
     } else {
         $this->documentRoot = Main\SiteTable::getDocumentRoot($siteId);
     }
     if (empty($this->path)) {
         throw new InvalidPathException($path);
     }
 }
Esempio n. 5
0
 public function __construct($siteId)
 {
     $this->siteId = $siteId;
     $this->documentRoot = SiteTable::getDocumentRoot($this->siteId);
     parent::__construct(IO\Path::combine($this->documentRoot, self::ROBOTS_FILE_NAME));
 }
Esempio n. 6
0
 public static function convertSiteRelativeToAbsolute($relativePath, $site = null)
 {
     if (!is_string($relativePath) || $relativePath == "") {
         $site = SITE_ID;
     }
     $basePath = Main\SiteTable::getDocumentRoot($site);
     return self::combine($basePath, $relativePath);
 }
Esempio n. 7
0
 protected static function getDocumentRoot($siteId)
 {
     if ($siteId === null) {
         $documentRoot = Main\Application::getDocumentRoot();
     } else {
         $documentRoot = Main\SiteTable::getDocumentRoot($siteId);
     }
     return $documentRoot;
 }
Esempio n. 8
0
     $error = getMessage('ABTEST_AJAX_ERROR');
 }
 if (!in_array($type, array('page'))) {
     $error = getMessage('ABTEST_AJAX_ERROR');
 }
 if (!in_array($site, $arSites)) {
     $error = getMessage('ABTEST_AJAX_ERROR');
 }
 if ($error === false) {
     $source = Bitrix\Main\Text\Encoding::convertEncodingToCurrent($source);
     $source = Bitrix\ABTest\AdminHelper::getRealPath($site, $source);
     if (empty($source)) {
         $error = getMessage('ABTEST_UNKNOWN_PAGE');
     }
     if ($error === false) {
         $docRoot = rtrim(\Bitrix\Main\SiteTable::getDocumentRoot($site), '/');
         $source = new Bitrix\Main\IO\File($docRoot . $source);
         $k = 0;
         do {
             $targetPath = BX_ROOT . '/abtest/' . date('Ymd') . '/' . sprintf('%u', crc32(rand() . time())) . $source->getName();
             $target = new Bitrix\Main\IO\File($docRoot . $targetPath);
         } while ($target->isExists() && $k++ < 10);
         if ($target->isExists()) {
             $error = getMessage('ABTEST_AJAX_ERROR');
         } else {
             $success = copyDirFiles($source->getPath(), $target->getPath(), false, false, false);
             if ($success) {
                 $result = $targetPath;
             } else {
                 $error = getMessage('ABTEST_AJAX_ERROR');
             }
Esempio n. 9
0
    $APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED"));
}
if (!Main\Loader::includeModule('seo')) {
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
    ShowError(Loc::getMessage("SEO_ERROR_NO_MODULE"));
    require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
}
$errors = '';
$siteId = isset($_REQUEST['site_id']) ? $_REQUEST['site_id'] : '';
$arCurrentSite = array();
$arDefaultSite = array();
$arSites = array();
$dbSites = Bitrix\Main\SiteTable::getList(array('order' => array('DEF' => 'DESC', 'NAME' => 'ASC'), 'select' => array('LID', 'NAME', 'DEF', 'DIR', 'DOC_ROOT', 'SERVER_NAME')));
while ($arRes = $dbSites->fetch(Converter::getHtmlConverter())) {
    if ($arRes['DOC_ROOT'] == '') {
        $arRes['DOC_ROOT'] = Converter::getHtmlConverter()->encode(Main\SiteTable::getDocumentRoot($arRes['LID']));
    }
    if ($arRes['DEF'] == 'Y') {
        $arDefaultSite = $arRes;
    }
    $arSites[$arRes['LID']] = $arRes;
}
$arCurrentSite = isset($arSites[$siteId]) ? $arSites[$siteId] : $arDefaultSite;
$siteId = $arCurrentSite['LID'];
$arRobotsConfig = array('common' => array(array('*', Loc::getMessage('SEO_ROBOTS_COMMON'))), 'yandex' => array(array('Yandex', Loc::getMessage('SEO_ROBOTS_YANDEX')), array('YandexBot', Loc::getMessage('SEO_ROBOTS_YANDEXBOT')), array('YandexMedia', Loc::getMessage('SEO_ROBOTS_YANDEXMEDIA')), array('YandexImages', Loc::getMessage('SEO_ROBOTS_YANDEXIMAGES')), array('YandexBlogs', Loc::getMessage('SEO_ROBOTS_YANDEXBLOGS')), array('YandexNews', Loc::getMessage('SEO_ROBOTS_YANDEXNEWS')), array('YandexMetrika', Loc::getMessage('SEO_ROBOTS_YANDEXMETRIKA')), array('YandexMarket', Loc::getMessage('SEO_ROBOTS_YANDEXMARKET'))), 'google' => array(array('Googlebot', Loc::getMessage('SEO_ROBOTS_GOOGLEBOT')), array('Googlebot-News', Loc::getMessage('SEO_ROBOTS_GOOGLEBOT_NEWS')), array('Googlebot-Image', Loc::getMessage('SEO_ROBOTS_GOOGLEBOT_IMAGE')), array('Googlebot-Video', Loc::getMessage('SEO_ROBOTS_GOOGLEBOT_VIDEO')), array('Googlebot-Mobile', Loc::getMessage('SEO_ROBOTS_GOOGLEBOT_MOBILE'))));
$bVendor = COption::GetOptionString('main', 'vendor', '') == '1c_bitrix';
if (!$bVendor) {
    unset($arRobotsConfig['yandex']);
}
$aTabs = array();
foreach ($arRobotsConfig as $key => $arConfig) {