Beispiel #1
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));
}
Beispiel #2
0
                    break;
                default:
                    $res = array('error' => 'unknown action');
                    break;
            }
        } catch (Engine\YandexException $e) {
            $res = array('error' => array('message' => $e->getMessage(), 'status' => $e->getStatus(), 'code' => $e->getCode()));
        }
    }
    Header('Content-type: application/json; charset=' . LANG_CHARSET);
    echo \Bitrix\Main\Web\Json::encode($res);
} elseif (isset($_REQUEST['get'])) {
    switch ($_REQUEST['get']) {
        case 'original_text_form':
            $arSettings = $engine->getSettings();
            $arDomains = \CSeoUtils::getDomainsList();
            foreach ($arDomains as $key => $domain) {
                if (!isset($arSettings['SITES'][$domain['DOMAIN']])) {
                    unset($arDomains[$key]);
                }
            }
            if (count($arDomains) <= 0) {
                $msg = new CAdminMessage(array('MESSAGE' => Loc::getMessage('SEO_YANDEX_ERROR'), 'HTML' => 'Y'));
                echo $msg->Show();
            } else {
                ?>
<div id="seo_original_text_form_form">
<form name="seo_original_text_form" style="padding:0;margin: 0;">
	<b><?php 
                echo Loc::getMessage('SEO_YANDEX_DOMAIN');
                ?>
function seo_getDir($bLogical, $site_id, $dir, $depth, $checked, $arChecked = array())
{
    if (!is_array($arChecked)) {
        $arChecked = array();
    }
    $arDirs = \CSeoUtils::getDirStructure($bLogical, $site_id, $dir);
    if (count($arDirs) > 0) {
        foreach ($arDirs as $arDir) {
            $d = Main\IO\Path::combine($dir, $arDir['FILE']);
            $bChecked = $arChecked[$d] === 'Y' || $checked && $arChecked[$d] !== 'N';
            $d = Converter::getHtmlConverter()->encode($d);
            $r = RandString(8);
            $varName = $arDir['TYPE'] == 'D' ? 'DIR' : 'FILE';
            ?>
<div class="sitemap-dir-item">
<?php 
            if ($arDir['TYPE'] == 'D') {
                ?>
	<span onclick="loadDir(<?php 
                echo $bLogical ? 'true' : 'false';
                ?>
, this, '<?php 
                echo CUtil::JSEscape($d);
                ?>
', '<?php 
                echo $r;
                ?>
', '<?php 
                echo $depth + 1;
                ?>
', BX('DIR_<?php 
                echo $d;
                ?>
').checked)" class="sitemap-tree-icon"></span><?php 
            }
            ?>
<span class="sitemap-dir-item-text">
		<input type="hidden" name="<?php 
            echo $varName;
            ?>
[<?php 
            echo $d;
            ?>
]" value="N" />
		<input type="checkbox" name="<?php 
            echo $varName;
            ?>
[<?php 
            echo $d;
            ?>
]" id="DIR_<?php 
            echo $d;
            ?>
"<?php 
            echo $bChecked ? ' checked="checked"' : '';
            ?>
 value="Y" onclick="checkAll('<?php 
            echo $r;
            ?>
', this.checked);" />
		<label for="DIR_<?php 
            echo $d;
            ?>
"><?php 
            echo Converter::getHtmlConverter()->encode($arDir['NAME'] . ($bLogical ? ' (' . $arDir['FILE'] . ')' : ''));
            ?>
</label>
	</span>
	<div id="subdirs_<?php 
            echo $r;
            ?>
" class="sitemap-dir-item-children"></div>
</div>
<?php 
        }
    } else {
        echo $space . Loc::getMessage('SEO_SITEMAP_NO_DIRS_FOUND');
    }
}
Beispiel #4
0
    } catch (Exception $e) {
        $strError = Loc::getMessage('SEO_ERROR_GET_ACCESS', array("#ERROR_TEXT#" => $e->getMessage()));
    }
}
$sTableID = "tbl_seo_domains";
$oSort = new CAdminSorting($sTableID, "SORT", "asc");
$lAdmin = new CAdminList($sTableID, $oSort);
$lAdmin->AddHeaders(array(array("id" => "DOMAIN", "content" => Loc::getMessage('SEO_DOMAIN'), "sort" => "DOMAIN", "default" => true), array("id" => "SITE", "content" => Loc::getMessage("SEO_SITE"), "default" => true), array("id" => "SITE_ACTIVE", "content" => Loc::getMessage('SEO_SITE_ACTIVE'), "sort" => "active", "default" => true), array("id" => "BINDED", "content" => Loc::getMessage("SEO_BINDED"), "default" => true), array("id" => "VERIFIED", "content" => Loc::getMessage("SEO_VERIFIED"), "default" => true)));
$bNeedAuth = !$engine->getAuthSettings();
try {
    $currentUser = $engine->getCurrentUser();
} catch (Exception $e) {
    $currentUser = null;
    $bNeedAuth = true;
}
$dbSites = new Bitrix\Main\DB\ArrayResult(\CSeoUtils::getDomainsList());
$rsData = new CAdminResult($dbSites, $sTableID);
while ($arSite = $dbSites->fetch(Converter::getHtmlConverter())) {
    $row =& $lAdmin->AddRow($arSite['DOMAIN'], $arSite);
    $siteDomainEnc = Converter::getHtmlConverter()->encode($arSite['DOMAIN']);
    $siteDomainEncView = Converter::getHtmlConverter()->encode(\CBXPunycode::ToUnicode($arSite['DOMAIN'], $e = null));
    $siteDirEnc = Converter::getHtmlConverter()->encode($arSite['SITE_DIR']);
    $row->AddViewField("DOMAIN", '<a href="http://' . Converter::getHtmlConverter()->encode($arSite['DOMAIN'] . CHTTP::urnEncode($arSite['SITE_DIR'])) . '">' . $siteDomainEncView . $siteDirEnc . '</a>');
    $row->AddViewField("SITE", '[<a href="site_edit.php?lang=' . LANGUAGE_ID . '&amp;LID=' . urlencode($arSite['LID']) . '">' . $arSite['LID'] . '</a>] ' . $arSite['SITE_NAME']);
    $row->AddCheckField("SITE_ACTIVE", false);
    $row->AddViewField("BINDED", '<span data-role="site-binded" data-domain="' . $siteDomainEnc . '" data-dir="' . $siteDirEnc . '">' . ($bNeedAuth ? Loc::getMessage('SEO_NEED_AUTH') : Loc::getMessage('SEO_LOADING')) . '</span>');
    $row->AddViewField("VERIFIED", '<span data-role="site-verified" data-domain="' . $siteDomainEnc . '" data-dir="' . $siteDirEnc . '">' . ($bNeedAuth ? Loc::getMessage('SEO_NEED_AUTH') : Loc::getMessage('SEO_LOADING')) . '</span>');
}
$lAdmin->CheckListMode();
$APPLICATION->SetTitle(Loc::getMessage("SEO_GOOGLE_TITLE"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php";
Beispiel #5
0
 public static function GetByURL($URL, $SITE_ID = false, $bPart = false, $bCleanUrl = false)
 {
     if ($bCleanUrl) {
         $URL = CSeoUtils::CleanURL($URL);
     }
     $arFilter = array('URL' => $URL);
     if ($bPart) {
         $arFilter['URL_EXACT_MATCH'] = 'N';
     }
     if ($SITE_ID) {
         $arFilter['SITE_ID'] = $SITE_ID;
     }
     $dbRes = CSeoKeywords::GetList(array('URL' => 'ASC', 'ID' => 'ASC'), $arFilter);
     $arKeywords = array();
     while ($arRes = $dbRes->Fetch()) {
         $arKeywords[] = $arRes;
     }
     return $arKeywords;
 }
Beispiel #6
0
    $titleFinal = base64_decode($_REQUEST['title_final']);
}
// browser title changers
if (strlen($_REQUEST['title_win_changer_name'])) {
    $titleWinChangerName = $_REQUEST['title_win_changer_name'];
}
if (strlen($_REQUEST['title_win_changer_link']) > 0) {
    $titleWinChangerLink = base64_decode($_REQUEST['title_win_changer_link']);
}
if (strlen($_REQUEST['title_win_final'])) {
    $titleWinFinal = base64_decode($_REQUEST['title_win_final']);
}
//back url processing
$back_url = isset($_REQUEST["back_url"]) ? $_REQUEST["back_url"] : "";
$original_backurl = $back_url;
$back_url = CSeoUtils::CleanURL($back_url);
/**************** ajax tabs processing ************************/
if (isset($_REQUEST['loadtab'])) {
    define('ADMIN_AJAX_MODE', 1);
    $searchers = COption::GetOptionString('seo', 'searchers_list', '');
    $arSearchers = array();
    if (strlen($searchers) > 0) {
        $arSearchers = explode(',', $searchers);
        $arSearcherHits = array();
        if (count($arSearchers) > 0) {
            $dbRes = CSearcher::GetList($by = 's_name', $order = "asc", array('ID' => implode('|', $arSearchers)), $is_filtered = null);
            $arSearchers = array();
            while ($arRes = $dbRes->Fetch()) {
                $arSearchers[$arRes['ID']] = $arRes;
                $arSearcherHits[$arRes['ID']] = 0;
            }
Beispiel #7
0
 protected function processResult($res)
 {
     $obXml = new \CDataXML();
     if ($obXml->loadString($res)) {
         $arEntries = $obXml->getTree()->elementsByName('host');
         $arDomains = array();
         foreach ($arEntries as $entry) {
             $entryChildren = $entry->children();
             $entryData = array();
             foreach ($entryChildren as $child) {
                 $tag = $child->name();
                 switch ($tag) {
                     case 'name':
                         $value = \CBXPunycode::toASCII(ToLower($child->textContent()), $e = null);
                         if (preg_match("/^https:\\/\\//", $value)) {
                             $value = substr($value, 8);
                             $entryData['https'] = 1;
                         }
                         $entryData[$tag] = $value;
                         break;
                     case 'verification':
                     case 'crawling':
                         $entryData[$tag] = $child->getAttribute('state');
                         $details = $child->children();
                         if ($details) {
                             $entryData[$tag . '-details'] = $details[0]->textContent();
                         }
                         break;
                     case 'virused':
                         $entryData[$tag] = $child->textContent() == 'true';
                         break;
                     default:
                         $entryData[$tag] = $child->textContent();
                 }
             }
             // HOST_INFO query returns only host id instead of direct url so we should take it from the previous data
             $hostHref = $entry->getAttribute('href');
             if (!$hostHref) {
                 $hostHref = $this->engineSettings['SITES'][$entryData['name']]['href'];
             }
             $entryData['href'] = $hostHref;
             $arDomains[$entryData['name']] = $entryData;
         }
         $arExistedDomains = \CSeoUtils::getDomainsList();
         foreach ($arExistedDomains as $domain) {
             $domain['DOMAIN'] = ToLower($domain['DOMAIN']);
             if (isset($arDomains[$domain['DOMAIN']])) {
                 if (!is_array($this->engineSettings['SITES'])) {
                     $this->engineSettings['SITES'] = array();
                 }
                 $this->engineSettings['SITES'][$domain['DOMAIN']] = $arDomains[$domain['DOMAIN']];
             }
         }
         $this->saveSettings();
         return $arDomains;
     }
     throw new \Exception('Unexpected query result! ' . $res);
     return false;
 }
Beispiel #8
0
 protected function processResult($res)
 {
     $obXml = new \CDataXML();
     if ($obXml->loadString($res)) {
         $arEntries = $obXml->getTree()->elementsByName('entry');
         $arDomains = array();
         foreach ($arEntries as $entry) {
             $entryChildren = $entry->children();
             $entryData = array('etag' => $entry->getAttribute('etag'));
             foreach ($entryChildren as $child) {
                 $tag = $child->name();
                 switch ($tag) {
                     case 'category':
                         break;
                     case 'content':
                         $entryData[$tag] = $child->getAttribute('src');
                         break;
                     case 'link':
                         if (!isset($entryData[$tag])) {
                             $entryData[$tag] = array();
                         }
                         $entryData[$tag][$child->getAttribute('rel')] = $child->getAttribute('href');
                         break;
                     case 'entryLink':
                         if (!isset($entryData[$tag])) {
                             $entryData[$tag] = array();
                         }
                         $rel = preg_replace("/^[^#]+#/", "", $child->getAttribute('rel'));
                         $entryData[$tag][$rel] = $child->getAttribute('href');
                         break;
                     case 'verification-method':
                         if ($child->getAttribute('type') == 'htmlpage') {
                             $entryData[$tag] = array('in-use' => $child->getAttribute('in-use'), 'file-name' => $child->textContent(), 'file-content' => $child->getAttribute('file-content'));
                         }
                         break;
                     default:
                         $entryData[$tag] = $child->textContent();
                 }
             }
             $url = $entryData['content'];
             if (strlen($url) > 0) {
                 $urlData = parse_url($url);
                 if (isset($urlData['port']) && strlen($urlData['port']) > 0) {
                     $urlData['host'] .= ':' . $urlData['port'];
                 }
                 if (!isset($arDomains[$urlData['host']])) {
                     $arDomains[$urlData['host']] = $entryData;
                 }
             }
         }
         $arExistedDomains = \CSeoUtils::getDomainsList();
         foreach ($arExistedDomains as $domain) {
             if (isset($arDomains[$domain['DOMAIN']])) {
                 if (!is_array($this->engineSettings['SITES'])) {
                     $this->engineSettings['SITES'] = array();
                 }
                 $this->engineSettings['SITES'][$domain['DOMAIN']] = $arDomains[$domain['DOMAIN']];
             }
         }
         $this->saveSettings();
         return $arDomains;
     }
     throw new \Exception('Unexpected query result! ' . $res);
     return false;
 }