<?php namespace app\components; use Yii; use app\models\Filter; use yii\base\Component; use yii\db\Query; class Collection extends Component { //Скачиваине URL файла и передача пути к нему public static function domain_filter($domain) { $out = false; $host = str_replace( '*.', '', utf8_encode($domain) ); $host_level = count( explode('.', $host) ); if ($host_level === 2) { $filtes_bd = (new Query()) ->select('`pattern`, `include`') ->from('{{%filters}}') ->where('type=:type AND status=:status', array(':type'=>Filter::TYPE_BEFORE, ':status'=>Filter::STATUS_ON )) ->all(); if ($filtes_bd !== false) { $fiter_check = true; foreach($filtes_bd as $filter) { $find = preg_match($filter['pattern'], $host); if ($host === '002cc20.icu') echo ' > i:'.$filter['include'].' result:'.$find.' if1:'.(($find === 1 && $filter['include']===Filter::INCLUDE_OFF)?1:0).' if2:'.(($find === 0 && $filter['include']===Filter::INCLUDE_ON)?1:0)."\n"; if ( ($find === 1 && $filter['include']===Filter::INCLUDE_OFF) || ($find === 0 && $filter['include']===Filter::INCLUDE_ON) ) { $fiter_check = false; break; } unset($find); } unset($filter); if ($fiter_check===true) $out = (string)$host; unset($fiter_check); } unset($filtes_bd); } unset($host_level); unset($host); return $out; } //Скачиваине URL файла и передача пути к нему public static function download_file($csvFile) { $out = ''; $temp_csv_name = tempnam(sys_get_temp_dir(), 'rkn_'); if ($temp_csv_name !== false) { $file_handle = fopen((string)$csvFile, 'r'); if ($file_handle!==false) { $file_write = file_put_contents($temp_csv_name, $file_handle); if ($file_write!==false) $out = $temp_csv_name; unset($file_write); fclose($file_handle); } unset($file_handle); } unset($temp_csv_name); return $out; } public static function getRawData($url, $domain) { $post = [ 'doms' => implode("\r\n",$domain), ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $response = curl_exec($ch); $errorNum = curl_errno($ch); $errorMsg = curl_error($ch); curl_close($ch); return ['data' => $response, 'errorno' => $errorNum, 'errormessage' => $errorMsg]; } }