Joywork/engine/classes/WebHook.php
2026-05-22 21:21:54 +03:00

778 lines
30 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class WebHook {
private $db = null;
private $agency_id = 0;
private $user_id = 0;
private $users = array();
private $activities_id = 0;
private $source_id = 0;
private $params = [];
private $client_id = 0;
private $req_id = 0;
private $params_object = [];
private $sphinx2 = null;
private $photo = [];
private $token_agency = null;
public function __construct($db = null)
{
if($db){
$this->db = $db;
} else {
$pdo = new MysqlPdo(hst, ndb, user, pass);
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
$this->db = $pdo;
}
}
/**
* Авторизация
*/
public function auth($token_user, $token_agency){
$this->token_agency = $token_agency;
$result = array();
$error = false;
$sql = "SELECT * FROM user_api_keys WHERE api_key = '{$token_user}' or api_key = '{$token_agency}'";
$q = $this->db->query($sql);
while($r = $this->db->fetch_assoc($q)){
if($r['api_key'] == $token_user){
$this->user_id = (int)$r['user_id'];
}
if($r['api_key'] == $token_agency){
$this->agency_id = (int)$r['user_id'];
}
}
if($this->user_id > 0){
$userGlobal = new User();
$userGlobal->get($this->user_id);
if($this->agency_id > 0){
if($this->agency_id != $userGlobal->agencyId){
$error = true;
}
} else {
$error = true;
}
} else {
$error = true;
}
if($error){
$result['error'] = "tokens error";
} else {
$result['done'] = "ok";
$this->set_users();
}
return $result;
}
/**
*
*/
public function get_agencyId(){
return $this->agency_id;
}
/**
*
*/
public function get_userId(){
return $this->user_id;
}
/**
*
*/
public function get_client_id(){
return $this->client_id;
}
/**
*
*/
public function get_req_id(){
return $this->req_id;
}
private function set_sphinx2(){
$pdo = new MysqlPdo(hstsph2, null, null, null, true, '9306');
$sql = "SET NAMES 'utf8'";
$pdo->query($sql);
$this->sphinx2 = $pdo;
}
/**
* Все пользователи агентства
*/
private function set_users()
{
$this->users = array();
$agency_id = $this->agency_id;
$list = array();
$usersIds = array();
$usersIds[] = $agency_id;
$sql_users = "SELECT id FROM users WHERE id in (select id from users where id=$agency_id or id_manager=$agency_id or id_manager in
(select id from users where id_manager=$agency_id or id_manager in
(select id from users where id_manager=$agency_id)))";
$q_users = $this->db->query($sql_users);
while($r_users = $this->db->fetch_assoc($q_users)){
$usersIds[] = (int)$r_users['id'];
}
$sql_u = "SELECT * FROM users WHERE id in (".implode(',',$usersIds).")";
$q_u = $this->db->query($sql_u);
while($row = $this->db->fetch_assoc($q_u)){
$list[$row['id']] = $row;
}
$this->users = $list;
}
/**
* Получение массива юзеров
*/
public function get_users(){
return $this->users;
}
/**
* Поиск тега
*/
public function set_activites($activities_id = 0, $name_activities = '') {
if($activities_id == 0 && !empty($name_activities)){
$users = array_keys($this->users);
$sql_activites = "SELECT id FROM `activities` WHERE name = '{$name_activities}' AND (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
$q_aclivites = $this->db->query($sql_activites);
$r_activites = $this->db->fetch_assoc($q_aclivites);
if($r_activites['id'] > 0){
$activities_id = $r_activites['id'];
$this->activities_id = $activities_id;
} else {
$sql_up = "INSERT INTO `activities` SET name='{$name_activities}', user_id={$this->user_id}, manager_id={$this->agency_id}";
$this->db->query($sql_up);
$activities_id = $this->db->insert_id();
$this->activities_id = $activities_id;
}
} else if ($activities_id > 0) {
$this->activities_id = $activities_id;
}
}
/**
* Поиск источника
*/
public function set_source($source_id = 0, $name_source = ""){
$users = array_keys($this->users);
if($source_id == 0 && !empty($name_source)){
$sql_source = "SELECT id FROM `advertising_sources` WHERE source
= '{$name_source}' AND (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
$q_source = $this->db->query($sql_source);
$r_source = $this->db->fetch_assoc($q_source);
if($r_source['id'] > 0){
$source_id = $r_source['id'];
$this->source_id = $source_id;
} else {
$sql_up = "INSERT INTO `advertising_sources` SET source='{$name_source}', user_id={$this->user_id}, manager_id={$this->agency_id}";
$this->db->query($sql_up);
$source_id = $this->db->insert_id();
$this->source_id = $source_id;
}
} else if($source_id > 0){
$this->source_id = $source_id;
}
}
/**
* Установка параметров
*/
public function set_params($params){
$result = array();
//var_dump($params);
$this->params = $params;
if(isset($this->params['action']) && !empty($this->params['action'])){
return array('action' => $this->params['action']);
} else
if(empty($this->params['phone'])){
return array('error' => 'empty phone');
}
else
return array('done'=>'ok');
}
/**
* Установка фото
*/
public function set_photos($photo){
// $result = array();
//var_dump($params);
$this->photo = $photo;
}
/**
* Установка параметнов объета
*/
public function set_params_object($params){
$this->params_object = $params;
}
/**
* Сохранение клиента
*/
public function save_client(){
$phone = $this->params['phone'];
$fio_client = $this->params['name'];
$opis = $this->params['about'];
$funnel_id = $this->params['funnel_id'];
$usersIds = array_keys($this->users);
$sql = "SELECT `id`, `stage`, `deleted`, `fio` FROM `clients` WHERE cancel=0 AND (phone = '$phone' OR id in (SELECT client_id FROM clients_phone2 WHERE phone = '$phone')) and (id_agent in (".implode(',', $usersIds).") or who_work in (".implode(',', $usersIds)."))";
$client = $this->db->fetch_assoc($this->db->query($sql));
if(!empty($client) && $client){
$client_id = $client['id'];
$this->params['name'] = $client['fio'];
} else {
$sql = "INSERT INTO clients SET phone='{$phone}', fio='{$fio_client}', opis='{$opis}', id_agent={$this->user_id}, who_work={$this->user_id}, date_add=NOW(), confirm=1, funnel_id={$funnel_id}, stage=1, source= '{$this->source_id}', integration=9";
/* if(isset($partner) && $partner > 0){
$doers[$user_id] = 1;
$doers[$partner] = 1;
//$doers_confirm = 0;
$sql .= ", doers = '".clearInputElement(json_encode($doers))."', doer_clients=1";
}*/
$this->db->query($sql);
$client_id = $this->db->insert_id();
/* if($partner > 0) {
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `client_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$client_id.", ".$partner.", 'transmitted_parallel', 1,1)";
$pdo->query($sql_conf);
}*/
if($funnel_id > 0){
$Clients = new Clients();
$Clients->get_class_etap($client_id, $funnel_id);
}
if($this->activities_id > 0){
$sql_a = "INSERT INTO `clients_activities` (`activity_id`, `client_id`) VALUES ({$this->activities_id}, {$client_id})";
$this->db->query($sql_a);
}
}
$this->client_id = $client_id;
}
/**
* Создание заявки
*/
public function create_req(){
$fio_client = $this->params['name'];
$opis = $this->params['about'];
$funnel_id = $this->params['funnel_req_id'];
$object_id = $this->params['object_id'];
$type_id = $this->params['type_id'];
$name = $fio_client;
$sql = "SELECT name FROM requisitions_type WHERE id = {$type_id}";
$q = $this->db->query($sql);
$r = $this->db->fetch_assoc($q);
$name = $r['name'].' для '.$fio_client;
$who_work = $this->user_id;
$confirm = 1;
if($this->params['general_req'] == 1){
$who_work = 0;
$confirm = 0;
}
if($this->client_id > 0){
$client_id = $this->client_id;
$sql = "INSERT INTO requisitions SET
client_id={$client_id},
name='{$name}',
description='{$opis}',
user_id={$this->user_id},
who_work={$who_work},
type_id={$type_id},
confirm={$confirm},
funnel_id={$funnel_id},
stage=1,
source = '{$this->source_id}',
object_id = '{$object_id}',
integration = 9
";
$this->db->query($sql);
$req_id = $this->db->insert_id();
if($funnel_id > 0){
$Requisitions = new Requisitions();
$Requisitions->get_class_etap($req_id, $funnel_id);
}
if($this->activities_id > 0){
$sql_a = "INSERT INTO `requisitions_activities` (`activity_id`, `req_id`) VALUES ({$this->activities_id}, {$req_id})";
$this->db->query($sql_a);
}
/* $comment = $message->formname . " на сайте ".$name_site;
$sql_add = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `dop_text`, `read`) ".
"VALUES ({$user_id}, {$req_id}, {$user_id}, 'add', '{$comment}', 2)";
$pdo->query($sql_add);*/
$comment = "Добавлена через вебхук";
$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, `type`, comment, calendar_view, from_id) ".
"VALUES ({$this->user_id}, {$req_id}, '".date('Y-m-d H:i:s')."', 'comment', '{$comment}', 0, {$this->user_id})";
$this->db->query($sql_in_ev);
if($req_id > 0 AND $who_work > 0){
$comment = "Новая заявка добавленная через вебхук";
$sql_add = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `dop_text`, `read`) ".
"VALUES ({$who_work}, {$req_id}, {$who_work}, 'add', '{$comment}', 2)";
$this->db->query($sql_add);
}
/* if($partner > 0) {
$sql_conf = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `read`, `send_telegramm`) VALUES (".$user_id.", ".$req_id.", ".$partner.", 'transmitted_parallel', 2,0)";
$pdo->query($sql_conf);
}*/
$this->req_id = $req_id;
if($this->agency_id == 117 || $this->agency_id == 5238 || $this->agency_id == 19895){
$reqs = $req_id;
$rqClass = new Requisitions(null, true);
$rqClass->set_agencyId($this->agency_id);
$rqClass->set_userId($this->user_id);
$rqClass->autoUnitReq(1, $reqs);
}
}
}
/**
*Создание объектов
*/
public function create_object(){
$arrayError = array();
if(!isset($this->params_object['operation_type'])){
$arrayError[] = array('Error'=>'empty operation_type');
}
else
if((int)$this->params_object['operation_type'] > 1){
$arrayError[] = array('Error'=>'invalid parameter: operation_type');
}
if(!isset($this->params_object['address']) || empty($this->params_object['address'])){
$arrayError[] = array('Error'=>'invalid parameter: address');
}
if(!isset($this->params_object['type']) || empty($this->params_object['type'])){
$arrayError[] = array('Error'=>'invalid parameter: type');
}
if(!isset($this->params_object['name']) || empty($this->params_object['name'])){
$arrayError[] = array('Error'=>'invalid parameter: name');
}
if(!isset($this->params_object['price']) || (int)$this->params_object['price'] < 0){
$arrayError[] = array('Error'=>'invalid parameter: price');
}
if(!empty($arrayError)){
return $arrayError;
exit();
} else {
$real_fields_sphinx = [
"id","type","rayon_id","commission","etazh","adres","srok","land_area","ploshad",
"ploshad_komn", "ploshad_k","komnat","komnat_str","holod","stirka","tv","mebel","stoim",
"date_add","date_really_add","stoim_prim","is_photo","id_add_user",
"id_rf_region","cadastral_number"."parking_type_id",
"type_category","archive","moder","black","phone_search","operation_type",
"use_in_advert","fbn_id","add_to_yandex_feed","add_to_zipal","add_to_avito_feed",
"add_to_cian_feed","add_to_domclick_feed","add_to_emls_feed","add_to_bn_feed","studio_flag",
"id_metro","parent","house_type","build_year","deal_type","tax_number","legal_address","isoccupied",
"layout_id","number_wet_spots","electricity_power","isfurniture","commer_access","parking_price",
"parkingisfree","ceiling_height","column_grid","vat_type_id","commerc_site","commerc_owned",
"floor_material_id","commerc_portal_id","commerc_land_category_id","commerc_permitted_use_id",
"commerc_lift1","lift1_carrying","commerc_lift2","lift2_carrying","commerc_lift3","lift3_carrying",
"commerc_crane1","crane1_carrying","commerc_crane2","crane2_carrying","commerc_crane3",
"crane3_carrying","commerc_crane4","crane4_carrying","commerc_electricity_id","commerc_gas_id",
"commerc_water_id","commerc_sewage_id","commerc_driveways_id","commerc_year","commerc_building_type_id",
"commerc_building_class_id","commerc_specifications","commerc_purpose","commerc_infrastructure",
"building_area","commerc_houselinetype_id","commerc_building_category_id","commerc_opened_id",
"commerc_building_ventilation","commerc_building_conditioning","commerc_building_heating",
"commerc_building_fire","garage_type_id","garage_vid_id","boks_vid_id","commerc_status_id",
"ads_source","ads_agent","complex_id","latitude","longitude","nb_end_date","country_id"];
$obj_fields = array();
$obj_vals = array();
$obj_fields_sphinx = array();
$obj_vals_sphinx = array();
$user = $this->users[$this->user_id];
//var_dump($user);
$object_fields = $this->params_object;
$object_fields['adres'] = $this->params_object['address'];
unset($object_fields['address']);
$object_fields['nazv'] = $this->params_object['name'];
unset($object_fields['name']);
$object_fields['stoim'] = $this->params_object['price'];
unset($object_fields['price']);
$object_fields['id_add_user'] = $this->user_id;
$object_fields['id_rf_region'] = $user['region_rf_id'];
$object_fields['sobstv'] = trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']);
$object_fields['phone'] = $object_fields['phone_search'] = $user['phone'];
$object_fields['date_add'] = date('Y-m-d H:i:s');
$object_fields['date_really_add'] = date('Y-m-d H:i:s');
foreach($object_fields as $field=>$val){
$obj_fields[] = $field;
if($field == 'opis'){
$obj_vals[] = mysql_real_escape_string($val);
} else {
$obj_vals[] = $val;
}
if(in_array($field, $real_fields_sphinx)){
$obj_fields_sphinx[] = $field;
if($field == 'opis'){
$obj_vals_sphinx[] = mysql_real_escape_string($val);
} else if($field == 'date_add' || $field == 'date_really_add'){
$obj_vals_sphinx[] = strtotime($val);
} else {
$obj_vals_sphinx[] = $val;
}
}
}
$sql_in = "INSERT INTO objects (".implode(',', $obj_fields).") VALUES ('".implode('\',\'', $obj_vals)."')";
if($this->db->query($sql_in, true)){
$object_id = $this->db->insert_id();
$obj_fields_sphinx[] = 'id';
$obj_vals_sphinx[] = $object_id;
$query = "INSERT INTO objects_price_history (object_id, price, date_change_price) VALUES ($object_id, '{$this->params_object['price']}', '{$object_fields['date_add']}')";
$this->db->query($query);
$this->set_sphinx2();
$sql_sphinx = "INSERT INTO objects_rt (".implode(',', $obj_fields_sphinx).") VALUES ('".implode('\',\'', $obj_vals_sphinx)."')";
$this->sphinx2->query($sql_sphinx, true);
//if($this->agency_id == 5238){
//var_dump($this->photo);
if(is_array($this->photo)){
$Selectel = SelectelApi::getTokenAndUrl();
$token = $Selectel[0];
$storageUrl = $Selectel[1];
$photos = array();
$num=1;
foreach($this->photo as $img){
// $img = rawurldecode($img);
/* echo $img."\n";
$ph = md5($img.time())."_hook.jpg";
$one = mb_substr($ph,0,1);
$two = mb_substr($ph,1,1);
$three = mb_substr($ph,3,1);
$dstFile = "/$one/$two/$three/$ph";
$rf = SelectelApi::uploadFile($storageUrl, $token, $img, $dstFile, 'image/jpeg');
//если выложили в Selectel
if ($rf) {
//заменяем путь на новый
$new_path = "https://data.joywork.ru" . $dstFile;
$photos['photo'.$num] = $new_path;
echo $new_path."\n";
}*/
$photos['photo'.$num] = $img;
$num++;
}
$this->update_photo($object_id, $photos);
}
// }
return array('done'=>array(array('result'=>'ok', 'object_id'=>$object_id)));
} else {
return array('error'=>$this->db->error());
}
}
}
/**
* Фото объекта
*/
public function update_photo($objectId, $photos) {
//вставялем фото от 1 до 50
for($num = 1; $num <= 50; $num++) {
$sqlSelectPhoto = "select oop.id, oop.object_photo_id from objects_object_photo oop where oop.object_id = $objectId and sort_order = $num";
$rezSelectPhoto = $this->db->query($sqlSelectPhoto);
if (isset($photos['photo' . $num]) && $photos['photo' . $num]) {
$p = $photos['photo' . $num];
if ($this->db->num_rows($rezSelectPhoto) > 0) {
$ph = $this->db->fetch_assoc($rezSelectPhoto);
$sqlUpdPhoto = "UPDATE object_photo SET photo = '$p' WHERE id = $ph[object_photo_id]";
$this->db->query($sqlUpdPhoto);
} else {
$sqlInsPhoto = "INSERT INTO object_photo(photo) VALUES('$p')";
$this->db->query($sqlInsPhoto);
$photoId = $this->db->insert_id();
$sqlInsPhotoLink = "INSERT INTO objects_object_photo(object_id, object_photo_id, sort_order) VALUES($objectId, $photoId, $num)";
$this->db->query($sqlInsPhotoLink);
//echo $sqlInsPhotoLink."\n";
}
} else {
if ($this->db->num_rows($rezSelectPhoto) > 0) {
$ph = $this->db->fetch_assoc($rezSelectPhoto);
$sqlDeletePhoto = "DELETE FROM object_photo where id = $ph[object_photo_id]";
// echo $sqlDeletePhoto."\n";
$this->db->query($sqlDeletePhoto);
$sqlDeletePhotoLinks = "DELETE FROM objects_object_photo where id = $ph[id]";
//echo $sqlDeletePhotoLinks."\n";
$this->db->query($sqlDeletePhotoLinks);
}
}
}
}
/**
* Типы заявок
*/
public function get_types_req(){
$result = array();
$agencyId = (int)$this->agency_id;
if($agencyId == 0){
return array('error' => 'no_agency');
die();
}
$req = new Requisitions($this->db);
$types = $req->get_type(false, true);
if(!empty($types['heir'])){
$result = $types['heir'];
}
return $result;
}
/**
* Воронки
*/
public function get_funnels(){
$result = array();
$agencyId = (int)$this->agency_id;
if($agencyId == 0){
return array('error' => 'no_agency');
die();
}
$nameDefault = "Обычные";
$sqlCastom = "SELECT * FROM funnel_default WHERE agency_id = {$agencyId}";
$qCastom = $this->db->query($sqlCastom);
if($this->db->num_rows($qCastom) > 0){
$rCastom = $this->db->fetch_assoc($qCastom);
if(!empty($rCastom['name'])) $nameDefault = $rCastom['name'];
//if($rCastom['is_show_funnels'] == 0) $isShowFunnels = false;
}
$result[] = array('code'=>0, 'name'=>$nameDefault);
$sql_f = "SELECT * FROM `funnel` WHERE agency_id=$agencyId AND deleted = 0";
$q_f = $this->db->query($sql_f);
while($r_f = $this->db->fetch_assoc($q_f)){
$result[] = array('code'=>(int)$r_f['id'], 'name'=>$r_f['name']);
}
return $result;
}
/**
* Источники
*/
public function get_sources(){
$result = array();
$agencyId = (int)$this->agency_id;
if($agencyId == 0){
return array('error' => 'no_agency');
die();
}
$users = array_keys($this->users);
$sql_source = "SELECT * FROM `advertising_sources` WHERE (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
$q_source = $this->db->query($sql_source);
while($r_source = $this->db->fetch_assoc($q_source)){
$result[] = array('code'=>$r_source['id'], 'name'=>$r_source['source']);
}
return $result;
}
/**
* Теги
*/
public function get_activites(){
$result = array();
$agencyId = (int)$this->agency_id;
if($agencyId == 0){
return array('error' => 'no_agency');
die();
}
$users = array_keys($this->users);
$sql_activites = "SELECT * FROM `activities` WHERE (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
$q_aclivites = $this->db->query($sql_activites);
while($r_activites = $this->db->fetch_assoc($q_aclivites)){
$result[] = array('code'=>$r_activites['id'], 'name'=>$r_activites['name']);
}
return $result;
}
/**
* Сотрудники
*/
public function get_employees(){
$result = array();
$agencyId = (int)$this->agency_id;
if($agencyId == 0){
return array('error' => 'no_agency');
die();
}
$users = array_keys($this->users);
$users_api = array();
$sql = "SELECT * FROM user_api_keys WHERE user_id in (".implode(',', $users).")";
$q = $this->db->query($sql, true);
while($r = $this->db->fetch_assoc($q)){
$users_api[(int)$r['user_id']] = $r;
}
foreach($this->users as $userId => $User){
$is_token = true;
$result[(int)$userId] = array('id'=>$userId, 'phone' => $User['phone'], 'last_name'=>$User['last_name'], 'first_name'=>$User['first_name'], 'middle_name'=>$User['middle_name'], 'agency'=>$User['agency'], 'blocked'=>$User['blocked']);
if(isset($users_api[$userId])){
if(!empty($users_api[(int)$userId]['api_key'])){
$result[(int)$userId]['token'] = $users_api[(int)$userId]['api_key'];
} else {
$is_token = false;
}
} else {
$is_token = false;
}
if(!$is_token){
$id_api = User::gen_token($userId);
$sql_api = "SELECT * FROM user_api_keys WHERE user_id = $userId";
$q_api = $this->db->query($sql_api, true);
$r_api = $this->db->fetch_assoc($q_api);
$users_api[(int)$r_api['user_id']] = $r_api;
if(isset($users_api[$userId])){
if(!empty($users_api[(int)$userId]['api_key'])){
$result[(int)$userId]['token'] = $users_api[(int)$userId]['api_key'];
} else {
$is_token = false;
}
} else {
$is_token = false;
}
}
$result[(int)$userId]['is_token'] = $is_token;
}
return $result;
}
/**
*Получение объектов
*/
public function get_objects($size, $page=0, $objects_ids = []){
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
if($size > 100) $size = 100;
$result = array();
$agencyId = (int)$this->agency_id;
if($agencyId == 0){
return array('error' => 'no_agency');
die();
}
$users = array_keys($this->users);
$this->set_sphinx2();
if(!empty($users)){
$ids = array();
$sql_objects = "SELECT id FROM objects WHERE id_add_user in (".implode(',', $users).") order by date_add DESC LIMIT 1000000 OPTION max_matches=1000000";
$q_objects = $this->sphinx2->query($sql_objects);
$vsego = 0;
$objects = array();
$limit1 = $page * $size;
$limit2 = $limit1 + $size;
while($r_objects = $this->sphinx2->fetch_assoc($q_objects)){
if($vsego >= $limit1 && $vsego < $limit2){
$ids[] = $r_objects['id'];
}
$vsego++;
}
$all_pages = ceil($vsego / $size);
$limit = $page * $size;
if(!empty($ids)){
$sql = "SELECT objects.*,
rayon.rayon,
ads_objects.ads_id,
ads_objects.ads_source,
ads_objects.ads_agent,
ads_objects.ads_url,
DATE_FORMAT(objects.date_add,'%d.%m.%Y %H:%i') as date_add,
DATE_FORMAT(objects.date_really_add,'%d.%m.%Y %H:%i') as date_really_add,
lu.name as land_usage_name,
UNIX_TIMESTAMP(objects.date_add) as date_update
FROM objects objects
LEFT JOIN rayon rayon on objects.rayon = rayon.id
LEFT JOIN land_usage_type lu on objects.land_usage_type_id = lu.id
LEFT JOIN ads_objects ON ads_objects.obj_id = objects.id
WHERE objects.id in (" . implode(", ", $ids) .") ORDER BY date_update DESC";
$q = $this->db->query($sql);
while($r = $this->db->fetch_assoc($q)){
$objects[] = $r;
}
}
$result['count'] = $vsego;
$result['count_objects_page'] = count($ids);
$result['pages'] = $all_pages;
$result['page'] = $page;
$result['objects'] = $objects;
}
return $result;
}
/**
*Получение токенов объектов
*/
public function get_objects_ids($objects){
$result = array();
foreach($objects as $object){
$token = md5($object).'_object';
$url = 'https://joywork.ru/object-view.php?token='.$token.'&token_agency='.$this->token_agency;
$result[] = array('id'=>$object, 'token'=>$token, 'url'=>$url);
}
return $result;
}
}