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'); ?>
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; }
} 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";
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; }