<?php namespace app\components; use Yii; use app\models\Filter; use yii\base\Component; use yii\db\Query; class Collection extends Component { //Отображение размера файла public static function human_filesize($bytes, $decimals = 2) { $sz = 'BKMGTP'; $factor = floor((strlen($bytes) - 1) / 3); return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor]; } //Фильтрация фомена public static function domain_filter($domain) { $out = false; $host = str_replace( '*.', '', utf8_encode($domain) ); if (count( explode('.', $host) ) === 2) $out = $host; unset($host); return $out; } //Скачиваине URL файла и передача пути к нему public static function get_filter($type) { $out = array(); $filtes_bd = (new Query()) ->select('`pattern`, `include`') ->from('{{%filters}}') ->where('type=:type AND status=:status', array(':type'=>$type, ':status'=>Filter::STATUS_ON )) ->all(); if ($filtes_bd !== false) $out = $filtes_bd; unset($filtes_bd); return $out; } //Скачиваине URL файла и передача пути к нему public static function apply_filter($domain, $filters) { $out = false; $fiter_check = true; foreach($filters as $filter) if ($fiter_check === true) { $find = preg_match($filter['pattern'], $domain); if ( ($find === 1 && (int)$filter['include']===Filter::INCLUDE_OFF) || ($find === 0 && (int)$filter['include']===Filter::INCLUDE_ON) ) { $fiter_check = false; break; } unset($find); } unset($filter); if ($fiter_check===true) $out = (string)$domain; unset($fiter_check); 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]; } public static function getTixRawData($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 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' => json_decode($response, true), 'errorno' => $errorNum, 'errormessage' => $errorMsg]; } }