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)); }
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'); } }
} 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 . '&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";
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; }
$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; }
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; }
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; }