mirror of
https://github.com/janickiy/yii2-nomer
synced 2025-03-09 15:39:59 +00:00
143 lines
No EOL
5.2 KiB
PHP
143 lines
No EOL
5.2 KiB
PHP
<?php
|
|
namespace app\controllers;
|
|
|
|
use app\models\BlockPhone;
|
|
use app\models\ResultCache;
|
|
use app\models\SearchRequest;
|
|
use app\models\UrlFilter;
|
|
use yii\db\Expression;
|
|
use yii\helpers\ArrayHelper;
|
|
use yii\helpers\Json;
|
|
use yii\web\Controller;
|
|
use yii\web\NotFoundHttpException;
|
|
|
|
class FrameController extends Controller {
|
|
|
|
public $layout = 'frame';
|
|
|
|
public function actionIndex($phone) {
|
|
$phone = preg_replace("/^8/", "7", $phone);
|
|
|
|
$refresh = \Yii::$app->request->get("refresh", false);
|
|
|
|
$result = [];
|
|
|
|
$block = BlockPhone::find()->where(["phone" => $phone, "status" => 1])->one();
|
|
if(!is_null($block)) {
|
|
return $this->render("block", ["phone" => $phone]);
|
|
}
|
|
|
|
$cache = ResultCache::find()->where(['phone' => $phone])->andWhere([">", "tm", date("Y-m-d H:i:s", strtotime("-1 month"))])->all();
|
|
if(count($cache) && !$refresh) {
|
|
$result["cache"] = true;
|
|
}
|
|
|
|
if (preg_match("/79(\d{9})/", $phone)) {
|
|
$operatorCache = ResultCache::find()->where(["phone" => $phone, "type_id" => ResultCache::TYPE_OPERATOR])->one();
|
|
if(is_null($operatorCache)) {
|
|
$operator = @file_get_contents("https://moscow.megafon.ru/api/mfn/info?msisdn=" . $phone);
|
|
if ($operator) {
|
|
$operator = Json::decode($operator);
|
|
|
|
if (!is_null($operator) && !isset($operator["error"])) {
|
|
$result["mobile"]["operator"] = $operator["operator"];
|
|
$result["mobile"]["region"] = $operator["region"];
|
|
$operatorCache = new ResultCache();
|
|
$operatorCache->phone = $phone;
|
|
$operatorCache->type_id = ResultCache::TYPE_OPERATOR;
|
|
$operatorCache->data = Json::encode($result["mobile"]);
|
|
$operatorCache->save();
|
|
}
|
|
}
|
|
} else {
|
|
$result["mobile"] = Json::decode($operatorCache->data);
|
|
}
|
|
}
|
|
|
|
$lastId = \Yii::$app->session->get("lastSearchId", null);
|
|
$lastPhone = \Yii::$app->session->get("lastSearchPhone");
|
|
if($phone !== $lastPhone) {
|
|
$searchRequest = new SearchRequest();
|
|
$searchRequest->ip = \Yii::$app->request->userIP;
|
|
$searchRequest->ua = \Yii::$app->request->userAgent;
|
|
$searchRequest->phone = $phone;
|
|
$searchRequest->tm = new Expression("NOW()");
|
|
$searchRequest->user_id = \Yii::$app->getUser()->isGuest?null:\Yii::$app->getUser()->getId();
|
|
$searchRequest->refresh = (boolean)$refresh;
|
|
$searchRequest->save();
|
|
$lastId = $searchRequest->id;
|
|
}
|
|
|
|
$log = SearchRequest::find()->where(["phone" => $phone])->andWhere(["<>", "id", $lastId])->orderBy(["id" => SORT_DESC])->all();
|
|
|
|
|
|
return $this->render("index", [
|
|
'id' => $lastId,
|
|
'phone' => $phone,
|
|
'result' => $result,
|
|
'log' => $log
|
|
]);
|
|
}
|
|
|
|
public function actionVk($phone) {
|
|
$vkCache = ResultCache::find()->where(['phone' => preg_replace('/^8/', '7', $phone), 'type_id' => ResultCache::TYPE_VK])->one();
|
|
if(is_null($vkCache)) {
|
|
throw new NotFoundHttpException("Страница не найдена");
|
|
}
|
|
|
|
$vkCacheData = Json::decode($vkCache->data);
|
|
|
|
return $this->render("vk", [
|
|
"phone" => $phone,
|
|
"result" => $vkCacheData["result2012"]
|
|
]);
|
|
}
|
|
|
|
public function actionGoogle($phone) {
|
|
$googleCache = ResultCache::find()->where(['phone' => preg_replace('/^8/', '7', $phone), 'type_id' => ResultCache::TYPE_GOOGLE_PHONE])->one();
|
|
if(is_null($googleCache)) {
|
|
throw new NotFoundHttpException("Страница не найдена");
|
|
}
|
|
|
|
$urls = ArrayHelper::map(UrlFilter::find()->all(), "url", "type");
|
|
|
|
return $this->render("google", [
|
|
"phone" => $phone,
|
|
"result" => Json::decode($googleCache->data),
|
|
"urls" => $urls
|
|
]);
|
|
}
|
|
|
|
public function actionAvinfo($phone) {
|
|
$avinfoCache = ResultCache::find()->where(['phone' => preg_replace('/^8/', '7', $phone), 'type_id' => ResultCache::TYPE_AVINFO])->one();
|
|
if(is_null($avinfoCache)) {
|
|
throw new NotFoundHttpException("Страница не найдена");
|
|
}
|
|
|
|
return $this->render("avinfo", [
|
|
"phone" => $phone,
|
|
"result" => Json::decode($avinfoCache->data)
|
|
]);
|
|
}
|
|
|
|
public function actionAvito($phone, $id = null) {
|
|
$avitoCache = ResultCache::find()->where(['phone' => preg_replace('/^8/', '7', $phone), 'type_id' => ResultCache::TYPE_AVITO])->one();
|
|
if(is_null($avitoCache)) {
|
|
throw new NotFoundHttpException("Страница не найдена");
|
|
}
|
|
|
|
if($id) {
|
|
return $this->render("avito_item", [
|
|
"id" => $id,
|
|
"phone" => $phone,
|
|
"result" => Json::decode($avitoCache->data)
|
|
]);
|
|
}
|
|
|
|
return $this->render("avito", [
|
|
"phone" => $phone,
|
|
"result" => Json::decode($avitoCache->data)
|
|
]);
|
|
}
|
|
|
|
} |