コード例 #1
0
ファイル: Adapter.php プロジェクト: pdedkov/xml-proxy
 /**
  * Проверяем индексации url-а
  *
  * @param string $text сайт
  * @param string $region регион
  * @param array $additional массив дополнительных параметорв
  * @throws Exception
  *
  * @return array
  */
 public function isIndexed($text, $region = null, $additional = [])
 {
     $query = is_array($text) ? $text['text'] : $text;
     $domain = is_array($text) && !empty($text['domain']) ? $text['domain'] : null;
     // формируем данные для поиска
     $params = [];
     if (Uri::isValid($query)) {
         $query = Uri::wwwLess(Uri::httpLess($query));
         $params['text'] = 'url:(' . $query . ') | url:(www.' . $query . ')';
     } else {
         $params['text'] = $query;
     }
     $params['region'] = $region;
     // домен
     if (!Uri::isValid($query) && !empty($domain)) {
         $params['text'] .= " site:{$domain}";
     }
     $result = $this->search($params);
     if (!isset($result['total_pages'])) {
         throw new Exception('Не удалось проанализировать выдачу.');
     }
     $domain = $domain ?: Uri::getHost($query);
     $validate = !empty($additional['validate']);
     $urls = array_filter($result['results'], function ($record) use($domain, $validate) {
         if (!empty($domain)) {
             if (!Uri::isSameHostIdna($record->url, $domain, false)) {
                 return false;
             }
         }
         return $validate ? Checker::isValid($record->url, 'text/html') : true;
     });
     return ['indexed' => !empty($urls) && count($urls) > 0, 'urls' => $urls];
 }