898 lines
32 KiB
PHP
898 lines
32 KiB
PHP
<?php
|
||
// require_once($_SERVER['DOCUMENT_ROOT']."/engine/functions.php");
|
||
// if region == spb
|
||
// adres = address
|
||
// if district is valid
|
||
// rayon = district
|
||
// elseif sub_local is valid
|
||
// rayon = sub_local
|
||
// else
|
||
// if locality_name is valid
|
||
// rayon = locality_name
|
||
// else
|
||
// adres += locality_name
|
||
// -------------------------------------------------
|
||
|
||
class FbnParser
|
||
{ public $region = 'Ленинградская обл.';
|
||
public $city = 'Санкт-Петербург';
|
||
|
||
|
||
public function load($url,$mdb){
|
||
$reader = new \XmlReader();
|
||
|
||
$doc = new DOMDocument();
|
||
|
||
if(!$reader->open($url)){
|
||
die('Failed to open');
|
||
}
|
||
|
||
$cnt = 0;
|
||
$offers = [];
|
||
$time_start = microtime(true);
|
||
while($reader->read()){
|
||
if($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'offer'){
|
||
$offer = simplexml_import_dom($doc->importNode($reader->expand(),true));
|
||
|
||
if((string)$offer->{'category'} == 'квартира' && $offer->{'x-comission'}){
|
||
// if((string)$offer['internal-id'] == '{204F24AA-F332-11EA-BBE6-E83935BA0948}'){
|
||
// var_dump((string)$offer['internal-id']);
|
||
$object_id = $this->is_objects_exist('fbn_id',$offer['internal-id'],'objects');
|
||
|
||
if($object_id>0){
|
||
// echo $object_id;
|
||
$this->update_kvartira($object_id,$offer,$mdb);
|
||
}else if($this->search_kvartira($offer,$mdb)==0){
|
||
$this->add_kvartira($offer,$mdb);
|
||
}
|
||
// break;
|
||
|
||
// }
|
||
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
echo "TIME : ".(microtime(true)-$time_start);
|
||
$reader->close();
|
||
|
||
|
||
}
|
||
|
||
private function preprocess($offer){
|
||
$ready = [];
|
||
|
||
$ready['operation_type'] = $offer['type'] == 'Продажа' ? 1 : 0;
|
||
|
||
switch ($offer['category']) {
|
||
case 'квартира':
|
||
$ready['type'] = 1;
|
||
break;
|
||
case 'комната':
|
||
$ready['type'] = 2;
|
||
break;
|
||
case 'дом':
|
||
$ready['type'] = 3;
|
||
break;
|
||
case 'коммерческая':
|
||
$ready['type'] = 4;
|
||
break;
|
||
case 'часть дома':
|
||
$ready['type'] = 5;
|
||
break;
|
||
case 'коммерческая':
|
||
$ready['type'] = 6;
|
||
break;
|
||
case 'участок':
|
||
$ready['type'] = 7;
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function search_kvartira($offer,$mdb){
|
||
$sql ="SELECT id FROM objects WHERE ";
|
||
$sql.="type=1 ";
|
||
$sql.="AND operation_type=1 ";
|
||
$sql.="AND stoim=".(string)$offer->{'price'}->{'value'}." ";
|
||
$sql.="AND etazh=".(string)$offer->{'floor'}." ";
|
||
$sql.="AND etazh_iz=".(string)$offer->{'floors-total'};
|
||
$rez = mysql_query($sql);
|
||
$rez = mysql_fetch_row($rez);
|
||
return $rez ? $rez[0] : 0;
|
||
}
|
||
|
||
function update_kvartira($obj,$offer,$mdb){
|
||
$ready['objects']['sobstv'] = (string)$offer->{'sales-agent'}->{'organization'};
|
||
if(isset($offer->{'sales-agent'}->{'phone'})){
|
||
$ready['objects']['phone'] = (string)$offer->{'sales-agent'}->{'phone'};
|
||
$ready['objects']['phone_search'] = num_search((string)$offer->{'sales-agent'}->{'phone'});
|
||
}else if(isset($offer->{'sales-agent'}->{'organization-phone'})){
|
||
$ready['phone']['phoneAgency'] = (string)$offer->{'sales-agent'}->{'organization-phone'};
|
||
$ready['phone']['phone_search'] = num_search((string)$offer->{'sales-agent'}->{'organization-phone'});
|
||
}
|
||
if(isset($offer->{'sales-agent'}->{'name'})){
|
||
$ready['objects']['sobstv'] .= " ".(string)$offer->{'sales-agent'}->{'name'};
|
||
}
|
||
|
||
if(isset($offer->{'rooms'})){
|
||
$ready['objects']['komnat'] = (string)$offer->{'rooms'};
|
||
}else{
|
||
$ready['objects']['komnat'] = 1;
|
||
}
|
||
|
||
list($ready['objects']['id_rf_region'],$ready['objects']['rayon'],$ready['objects']['adres']) = $this->get_location($offer);
|
||
|
||
$ready['objects']['nazv'] = $ready['objects']['komnat']." комнатная квартира";
|
||
|
||
if(isset($offer->{'studio'})){
|
||
$ready['objects']['studio_flag'] = 1;
|
||
}
|
||
if(isset($offer->{'area'})){
|
||
$ready['objects']['ploshad'] = (string)$offer->{'area'}->{'value'};
|
||
}
|
||
if(isset($offer->{'kitchen-space'})){
|
||
$ready['objects']['ploshad_k'] = (string)$offer->{'kitchen-space'}->{'value'};
|
||
}
|
||
if(isset($offer->{'living-space'})){
|
||
$ready['objects']['ploshad_komn'] = (string)$offer->{'living-space'}->{'value'};
|
||
}
|
||
if(isset($offer->{'floor'})){
|
||
$ready['objects']['etazh'] = (string)$offer->{'floor'};
|
||
}
|
||
if(isset($offer->{'floors-total'})){
|
||
$ready['objects']['etazh_iz'] = (string)$offer->{'floors-total'};
|
||
}
|
||
|
||
if(isset($offer->{'description'})){
|
||
$ready['objects']['opis'] = (string)$offer->{'description'};
|
||
}
|
||
|
||
if(isset($offer->{'price'})){
|
||
$ready['objects']['stoim'] = (string)$offer->{'price'}->{'value'};
|
||
}
|
||
if(isset($offer->{'x-comission'})){
|
||
|
||
if(intval((string)$offer->{'x-comission'}->{'value'}) <= 100 ){
|
||
$ready['objects']['commission'] =(string)$offer->{'x-comission'}->{'value'};
|
||
$ready['objects']['lease'] = 0;
|
||
}else{
|
||
$ready['objects']['lease'] =(string)$offer->{'x-comission'}->{'value'};
|
||
$ready['objects']['commission'] = 0;
|
||
}
|
||
}
|
||
if(isset($offer->{'x-hot-water'})){
|
||
$ready['objects']['hot_water_id'] = $this->select_or_insert_like(
|
||
'name',
|
||
(string)$offer->{'x-hot-water'},
|
||
'hot_water',
|
||
$mdb
|
||
);
|
||
}
|
||
if(isset($offer->{'x-rubbish-chute'})){
|
||
$ready['objects']['rubbish_chute'] = (string)$offer->{'x-rubbish-chute'};
|
||
}
|
||
if(isset($offer->{'building-type'})){
|
||
$ready['objects']['rent_house_type_id'] = $this->determine_house_type((string)$offer->{'building-type'},$mdb);
|
||
$ready['sale_objects']['house_type'] = $ready['objects']['rent_house_type_id'];
|
||
}else{
|
||
$ready['sale_objects']['house_type']=0;
|
||
}
|
||
|
||
|
||
if(isset($offer->{'deal-status'})){
|
||
$ready['sale_objects']['deal_type'] = $this->determine_deal_type((string)$offer->{'deal-status'},$mdb);
|
||
}else{
|
||
$ready['sale_objects']['deal_type'] = 0;
|
||
}
|
||
|
||
if(isset($offer->{'x-wall'})){
|
||
$ready['sale_objects']['house_material'] = $this->determine_house_material((string)$offer->{'x-wall'},$mdb);
|
||
}else{
|
||
$ready['sale_objects']['house_material'] = 0;
|
||
}
|
||
|
||
$ready['sale_objects']['object_id'] = $obj;
|
||
$ready['photos'] = [];
|
||
|
||
$this->update_sale_object($ready['sale_objects'],$mdb);
|
||
|
||
if(isset($offer->{'image'})){
|
||
for($i = 0;$i<count($offer->{'image'});$i++){
|
||
$ready['photos']['photo'.($i+1)] = (string)$offer->{'image'}[$i];
|
||
if(($i+1)==50){
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if(isset($offer->{'creation-date'})){
|
||
$ready['objects']['date_really_add'] = (string)$offer->{'creation-date'};
|
||
$ready['objects']['date_really_add'] = str_replace('T',' ',$ready['objects']['date_really_add']);
|
||
$ready['objects']['date_really_add'] = explode('+',$ready['objects']['date_really_add']);
|
||
$ready['objects']['date_really_add'] = $ready['objects']['date_really_add'][0];
|
||
|
||
|
||
}
|
||
|
||
if(isset($offer->{'mortgage'})){
|
||
$ready['objects']['stoim_prim'] = $offer->{'mortgage'} == '1' ? 'Возможна ипотека':'';
|
||
}
|
||
|
||
if(isset($offer->{'last-update-date'})){
|
||
$ready['objects']['date_add'] = (string)$offer->{'last-update-date'};
|
||
$ready['objects']['date_add'] = str_replace('T',' ',$ready['objects']['date_add']);
|
||
$ready['objects']['date_add'] = explode('+',$ready['objects']['date_add']);
|
||
$ready['objects']['date_add'] = $ready['objects']['date_add'][0];
|
||
}
|
||
|
||
|
||
if($offer->{'bathroom-unit'}){
|
||
$ready['objects']['bath_type_id'] = $this->determine_bath((string)$offer->{'bathroom-unit'},$mdb);
|
||
}
|
||
|
||
///////////////////////////////////////////////////////////////////////////////////////////
|
||
$this->update_object($obj,$ready['objects'],$mdb);
|
||
if(isset($offer->{'location'}->{'metro'})){
|
||
$this->update_object_metro($obj,(string)$offer->{'location'}->{'metro'}->{'name'},$mdb);
|
||
}
|
||
///////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
$ready['objects_additional_information']['object_id'] = $obj;
|
||
if(isset($offer->{'ceiling-height'})){
|
||
$ready['objects_additional_information']['ceiling_height'] = (string)$offer->{'ceiling-height'};
|
||
}
|
||
if(isset($offer->{'x-window'})){
|
||
$ready['objects_additional_information']['window_view'] = $this->select_or_insert_like(
|
||
'name',
|
||
(string)$offer->{'x-window'},
|
||
'window_view',
|
||
$mdb);
|
||
}
|
||
if(isset($offer->{'balcony'})){
|
||
$ready['objects_additional_information'] = array_merge($ready['objects_additional_information'],$this->determine_balcony((string)$offer->{'balcony'}));
|
||
}
|
||
if(isset($offer->{'renovation'})){
|
||
$ready['objects_additional_information']['renovation'] = $this->select_or_insert(
|
||
['name'=> (string)$offer->{'renovation'}],
|
||
'renovation',
|
||
$mdb);
|
||
}
|
||
|
||
$this->update_additional($ready['objects_additional_information'],$mdb);
|
||
$this->update_photo($obj, $ready['photos'],$mdb);
|
||
}
|
||
|
||
|
||
|
||
|
||
function add_kvartira($offer,$mdb){
|
||
$ready = [];
|
||
$ready['objects'] = array(
|
||
'id_add_user' => 0,
|
||
'operation_type' => 0,
|
||
'type' => 1,
|
||
'rayon' => 0,
|
||
'adres'=> '',
|
||
'transport' => 0,
|
||
'peshkom' => 0,
|
||
'komnat'=>0,
|
||
'ploshad'=>0,
|
||
'ploshad_k'=>0,
|
||
'ploshad_komn'=>0,
|
||
'etazh'=>0,
|
||
'etazh_iz'=>0,
|
||
'opis'=>0,
|
||
'stoim'=>0,
|
||
'commission'=>0,
|
||
'hot_water_id'=>0,
|
||
'rubbish_chute'=>0,
|
||
'rent_house_type_id'=>0,
|
||
'photo1'=>'',
|
||
'photo2'=>'',
|
||
'photo3'=>'',
|
||
'photo4'=>'',
|
||
'photo5'=>'',
|
||
'photo6'=>'',
|
||
'photo7'=>'',
|
||
'photo8'=>'',
|
||
'photo9'=>'',
|
||
'photo10'=>'',
|
||
'photo11'=>'',
|
||
'photo12'=>'',
|
||
'photo13'=>'',
|
||
'photo14'=>'',
|
||
'photo15'=>'',
|
||
'photo16'=>'',
|
||
'photo17'=>'',
|
||
'photo18'=>'',
|
||
'photo19'=>'',
|
||
'photo20'=>'',
|
||
'stoim_prim'=>'',
|
||
'date_really_add'=>'',
|
||
'date_add'=>'',
|
||
'nazv'=>'',
|
||
'srok'=>0,
|
||
'holod'=>0,
|
||
'stirka'=>0,
|
||
'tv'=>0,
|
||
'mebel'=>0,
|
||
'phone'=>'',
|
||
'archive'=>0,
|
||
'sobstv'=>0,
|
||
'phone_search'=>'',
|
||
'id_user'=>0,
|
||
'prim_srok'=>'',
|
||
'black'=>0,
|
||
'vsego_komn'=>0,
|
||
'moder'=>0,
|
||
'id_kv'=>0
|
||
);
|
||
$ready['objects']['sobstv'] = (string)$offer->{'sales-agent'}->{'organization'};
|
||
if(isset($offer->{'sales-agent'}->{'phone'})){
|
||
$ready['objects']['phone'] = (string)$offer->{'sales-agent'}->{'phone'};
|
||
$ready['objects']['phone_search'] = (string)$offer->{'sales-agent'}->{'phone'};
|
||
}else if(isset($offer->{'sales-agent'}->{'organization-phone'})){
|
||
$ready['phone']['phoneAgency'] = (string)$offer->{'sales-agent'}->{'organization-phone'};
|
||
$ready['phone']['phone_search'] = (string)$offer->{'sales-agent'}->{'organization-phone'};
|
||
}
|
||
if(isset($offer->{'sales-agent'}->{'name'})){
|
||
$ready['objects']['sobstv'] .= " ".(string)$offer->{'sales-agent'}->{'name'};
|
||
}
|
||
|
||
|
||
|
||
|
||
//////////////////////////////////////////////////////////////////////
|
||
|
||
|
||
$ready['objects']['operation_type'] = (string)$offer->{'type'} == 'Продажа' ? 1 : 0;
|
||
|
||
$ready['objects']['type'] = 1;
|
||
|
||
list($ready['objects']['id_rf_region'],$ready['objects']['rayon'],$ready['objects']['adres']) = $this->get_location($offer);
|
||
|
||
if(isset($offer->{'location'}->{'metro'})){
|
||
if(isset($offer->{'location'}->{'metro'}->{'time-on-transport'})){
|
||
$ready['objects']['transport'] = (string)$offer->{'location'}->{'metro'}->{'time-on-transport'};
|
||
}
|
||
if(isset($offer->{'location'}->{'metro'}->{'time-on-foot'})){
|
||
$ready['objects']['peshkom'] = (string)$offer->{'location'}->{'metro'}->{'time-on-foot'};
|
||
}
|
||
}
|
||
|
||
|
||
if(isset($offer->{'rooms'})){
|
||
$ready['objects']['komnat'] = (string)$offer->{'rooms'};
|
||
}else{
|
||
$ready['objects']['komnat'] = 1;
|
||
}
|
||
if(isset($offer->{'studio'})){
|
||
$ready['objects']['studio_flag'] = 1;
|
||
}
|
||
if(isset($offer->{'area'})){
|
||
$ready['objects']['ploshad'] = (string)$offer->{'area'}->{'value'};
|
||
}
|
||
if(isset($offer->{'kitchen-space'})){
|
||
$ready['objects']['ploshad_k'] = (string)$offer->{'kitchen-space'}->{'value'};
|
||
}
|
||
if(isset($offer->{'living-space'})){
|
||
$ready['objects']['ploshad_komn'] = (string)$offer->{'living-space'}->{'value'};
|
||
}
|
||
if(isset($offer->{'floor'})){
|
||
$ready['objects']['etazh'] = (string)$offer->{'floor'};
|
||
}
|
||
if(isset($offer->{'floors-total'})){
|
||
$ready['objects']['etazh_iz'] = (string)$offer->{'floors-total'};
|
||
}
|
||
|
||
if(isset($offer->{'description'})){
|
||
$ready['objects']['opis'] = (string)$offer->{'description'};
|
||
}
|
||
|
||
if(isset($offer->{'price'})){
|
||
$ready['objects']['stoim'] = (string)$offer->{'price'}->{'value'};
|
||
}
|
||
if(isset($offer->{'x-comission'})){
|
||
if(intval((string)$offer->{'x-comission'}->{'value'}) <= 100 ){
|
||
$ready['objects']['commission'] =(string)$offer->{'x-comission'}->{'value'};
|
||
}else{
|
||
$ready['objects']['lease'] =(string)$offer->{'x-comission'}->{'value'};
|
||
}
|
||
}
|
||
if(isset($offer->{'x-hot-water'})){
|
||
$ready['objects']['hot_water_id'] = $this->select_or_insert_like(
|
||
'name',
|
||
(string)$offer->{'x-hot-water'},
|
||
'hot_water',
|
||
$mdb
|
||
);
|
||
}
|
||
if(isset($offer->{'x-rubbish-chute'})){
|
||
$ready['objects']['rubbish_chute'] = (string)$offer->{'x-rubbish-chute'};
|
||
}
|
||
|
||
$ready['photos'] = [];
|
||
|
||
if(isset($offer->{'image'})){
|
||
for($i = 0;$i<count($offer->{'image'});$i++){
|
||
$ready['photos']['photo'.($i+1)] = (string)$offer->{'image'}[$i];
|
||
if(($i+1)==50){
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
if(isset($offer->{'creation-date'})){
|
||
$ready['objects']['date_really_add'] = (string)$offer->{'creation-date'};
|
||
$ready['objects']['date_really_add'] = str_replace('T',' ',$ready['objects']['date_really_add']);
|
||
$ready['objects']['date_really_add'] = explode('+',$ready['objects']['date_really_add']);
|
||
$ready['objects']['date_really_add'] = $ready['objects']['date_really_add'][0];
|
||
|
||
|
||
}
|
||
|
||
if(isset($offer->{'mortgage'})){
|
||
$ready['objects']['stoim_prim'] = $offer->{'mortgage'} == '1' ? 'Возможна ипотека':'';
|
||
}
|
||
|
||
if(isset($offer->{'last-update-date'})){
|
||
$ready['objects']['date_add'] = (string)$offer->{'last-update-date'};
|
||
$ready['objects']['date_add'] = str_replace('T',' ',$ready['objects']['date_add']);
|
||
$ready['objects']['date_add'] = explode('+',$ready['objects']['date_add']);
|
||
$ready['objects']['date_add'] = $ready['objects']['date_add'][0];
|
||
}
|
||
|
||
$ready['objects']['nazv'] = $ready['objects']['komnat'] == 0 ? 1 : $ready['objects']['komnat'];
|
||
$ready['objects']['nazv'] .= " комнатная квартира";
|
||
|
||
$ready['objects']['fbn_id'] = $offer['internal-id'];
|
||
if(isset($offer->{'building-type'})){
|
||
$ready['objects']['rent_house_type_id'] = $this->determine_house_type((string)$offer->{'building-type'},$mdb);
|
||
$ready['sale-objects']['house_type'] = $ready['objects']['rent_house_type_id'];
|
||
}
|
||
|
||
if($offer->{'bathroom-unit'}){
|
||
$ready['objects']['bath_type_id'] = $this->determine_bath((string)$offer->{'bathroom-unit'},$mdb);
|
||
}
|
||
|
||
$object_id = $this->add_object($ready['objects'],$mdb);
|
||
///////////////////////////////////////////////////////////////////////////
|
||
if(isset($offer->{'deal-status'})){
|
||
$ready['sale_objects']['deal_type'] = $this->determine_deal_type($offer->{'deal-status'},$mdb);
|
||
}else{
|
||
$ready['sale_objects']['deal_type'] = 0;
|
||
}
|
||
|
||
if(isset($offer->{'x-wall'})){
|
||
$ready['sale_objects']['house_material'] = $this->determine_house_material($offer->{'x-wall'},$mdb);
|
||
}else{
|
||
|
||
$ready['sale_objects']['house_material'] = 0;
|
||
}
|
||
|
||
if(isset($offer->{'building-type'})){
|
||
$ready['sale_objects']['house_type'] = $this->determine_house_type($offer->{'building-type'},$mdb);
|
||
}else{
|
||
$ready['sale_objects']['house_type'] = 0;
|
||
|
||
}
|
||
|
||
$ready['sale_objects']['object_id'] = $object_id;
|
||
|
||
$this->add_sale_object($ready['sale_objects'],$mdb);
|
||
///////////////////////////////////////////////////////////////////////////
|
||
if(isset($offer->{'location'}->{'metro'})){
|
||
$this->add_metro_to_object($object_id,(string)$offer->{'location'}->{'metro'}->{'name'},$mdb);
|
||
}
|
||
////////////////////////////////////////////////////////////////////////////
|
||
|
||
|
||
|
||
|
||
////////////////////////////////////////////////////////////////////////////
|
||
|
||
$ready['objects_additional_information']['object_id'] = $object_id;
|
||
if(isset($offer->{'ceiling-height'})){
|
||
$ready['objects_additional_information']['ceiling_height'] = (string)$offer->{'ceiling-height'};
|
||
}
|
||
if(isset($offer->{'x-window'})){
|
||
$ready['objects_additional_information']['window_view'] = $this->select_or_insert_like(
|
||
'name',
|
||
(string)$offer->{'x-window'},
|
||
'window_view',
|
||
$mdb);
|
||
}
|
||
if(isset($offer->{'balcony'})){
|
||
$ready['objects_additional_information'] = array_merge($ready['objects_additional_information'],$this->determine_balcony((string)$offer->{'balcony'}));
|
||
}
|
||
if(isset($offer->{'renovation'})){
|
||
$ready['objects_additional_information']['renovation'] = $this->select_or_insert(
|
||
['name'=> (string)$offer->{'renovation'}],
|
||
'renovation',
|
||
$mdb);
|
||
}
|
||
|
||
$this->add_addit_info($ready['objects_additional_information'],$mdb);
|
||
$this->update_photo($object_id, $ready['photos'],$mdb);
|
||
|
||
return $object_id;
|
||
}
|
||
|
||
function determine_house_material($str,$mdb){
|
||
if(strtolower($str) == 'кирпично-монолитный'){
|
||
return 5;
|
||
}else{
|
||
return $this->select_or_insert_like(
|
||
'name',
|
||
$str,
|
||
'house_material',
|
||
$mdb);
|
||
}
|
||
}
|
||
|
||
function determine_house_type($str,$mdb){
|
||
if(strtolower($str) == 'кирпично-монолитный'){
|
||
return 15;
|
||
}else{
|
||
return $this->select_or_insert_like(
|
||
'name',
|
||
$str,
|
||
'house_type',
|
||
$mdb);
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function determine_balcony($str){
|
||
$arr = explode(' ',$str);
|
||
$result = [];
|
||
for($i=0;$i<count($arr);$i++){
|
||
if('лоджия' == $arr[$i]){
|
||
$result['loggias'] = 1;
|
||
}
|
||
if('лоджии' == $arr[$i]){
|
||
$result['loggias'] = $arr[$i-1];
|
||
}
|
||
|
||
if('балкон' == $arr[$i]){
|
||
$result['balcony'] = 1;
|
||
}
|
||
|
||
if('балкона' == $arr[$i]){
|
||
$result['balcony'] = $arr[$i-1];
|
||
}
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
function determine_bath($str,$mdb){
|
||
$new_types = [
|
||
'2 санузла' =>10,
|
||
'более 2х санузлов'=>11,
|
||
'сауна'=>12,
|
||
'в доме'=>13,
|
||
'на улице'=>14,
|
||
'биотуалет'=>15,
|
||
'ванна'=>16,
|
||
'бассейн'=>17
|
||
|
||
];
|
||
$id = 0;
|
||
if('совмещенный' == $str){
|
||
$id = 2;
|
||
}
|
||
if('раздельный' == $str){
|
||
$id = 3;
|
||
}
|
||
if('душ на кухне' == $str){
|
||
$id = 7;
|
||
}
|
||
if('без ванны' == $str){
|
||
$id = 9;
|
||
}
|
||
if('душ' == $str){
|
||
$id = 1;
|
||
}
|
||
if('душ' == $str){
|
||
$id = 1;
|
||
}
|
||
if('ванна на кухне' == $str){
|
||
$id = 7;
|
||
}
|
||
if('ванна на кухне' == $str){
|
||
$id = 7;
|
||
}
|
||
if($id==0){
|
||
$id = $this->select_or_insert_like('name',$str,'bath_type',$mdb);
|
||
}
|
||
return $id;
|
||
}
|
||
|
||
function determine_hot_water($str,$mdb){
|
||
$sql = "SELECT id FROM hot_water WHERE name LIKE '".$str."'";
|
||
$rez = mysql_query($sql);
|
||
$rez = mysql_fetch_row($rez);
|
||
return $rez[0];
|
||
}
|
||
|
||
function determine_deal_type($str,$mdb){
|
||
$sql = "SELECT id FROM deal_type WHERE name LIKE '".$str."'";
|
||
$rez = mysql_query($sql);
|
||
$rez = mysql_fetch_row($rez);
|
||
return $rez[0];
|
||
}
|
||
|
||
function select_or_insert($obj,$table,$mdb){
|
||
|
||
$cond = [];
|
||
foreach($obj as $key => $value){
|
||
array_push($cond,$key."='".$value."'");
|
||
}
|
||
|
||
$sql = "SELECT id FROM ".$table." WHERE ".implode(' AND ',$cond);
|
||
|
||
$rez=mysql_query($sql,$mdb);
|
||
|
||
$rez = mysql_fetch_row($rez);
|
||
if(!$rez){
|
||
|
||
$temp = array_map(function($x){
|
||
return "'".$x."'";
|
||
},$obj);
|
||
|
||
$sql = "INSERT INTO ".$table."(".implode(',',array_keys($obj)).") VALUES (".implode(',',$temp).")";
|
||
|
||
|
||
|
||
mysql_query($sql,$mdb);
|
||
$id = mysql_insert_id();
|
||
}else{
|
||
$id = $rez[0];
|
||
}
|
||
|
||
return $id;
|
||
|
||
}
|
||
|
||
function add_metro_to_object($obj,$metro,$mdb){
|
||
|
||
$metro = $this->select_or_insert(['metro' => $metro,
|
||
],'metro',$mdb);
|
||
$sql = "INSERT INTO sp_metro (id_metro,id_obj) VALUES (".$metro.",".$obj.")";
|
||
mysql_query($sql,$mdb);
|
||
}
|
||
|
||
function select_or_insert_like($key,$values,$table,$mdb){
|
||
$sequnce = explode(' ',$values);
|
||
$sql = "SELECT * FROM `$table` where ";
|
||
$sql .= "name LIKE '%".$sequnce[0]."%'";
|
||
for($i=1;$i<count($sequnce);$i++){
|
||
$sql .= "AND name LIKE '%".$sequnce[$i]."%' ";
|
||
}
|
||
|
||
$rez=mysql_query($sql,$mdb);
|
||
$rez = mysql_fetch_row($rez);
|
||
|
||
if(!$rez){
|
||
$sql = "INSERT INTO ".$table."(".$key.") VALUES ('".$values."')";
|
||
mysql_query($sql,$mdb);
|
||
$id = mysql_insert_id();
|
||
}else{
|
||
|
||
$id = $rez[0];
|
||
}
|
||
|
||
return $id;
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
function add_agent($user,$mdb){
|
||
$phoneAgency = isset($user['phoneAgency']) ? $user['phoneAgency'] : "";
|
||
$phone = isset($user['phone']) ? $user['phone'] : "";
|
||
$director = isset($user['director']) ? $user['director'] : "";
|
||
$fio = isset($user['first_name']) ? trim($user['last_name'] . ' ' . $user['first_name'] . ' ' . $user['middle_name']) : "";
|
||
|
||
$sql = "SELECT id FROM users WHERE director LIKE '$director' and fio LIKE '$fio'";
|
||
$rez = mysql_query($sql,$mdb);
|
||
$rez = mysql_fetch_row($rez);
|
||
|
||
if($rez){
|
||
$id = $rez[0];
|
||
|
||
}else{
|
||
$sql = "INSERT INTO users(director,phoneAgency, phone, fio, agent, moder, date_reg,
|
||
id_manager,pwd,admin, superadmin,txt,blocked,last_auth,photo,sitename, site,is_pwd,
|
||
smtp_from,smtp_fromname,smtp,smtp_ssl, smtp_port,smtp_lg,smtp_pwd,manager,agency,
|
||
smtp_check,adres, id_tarif,date_tarif,test_tarif, comment,user_logo,zipal_login,
|
||
zipal_password,department_id,role_id,email)
|
||
VALUES('$director','$phoneAgency', '$phone','$fio', '1', '0',
|
||
NOW(), '0',pwd,0,0,'',0,NOW(),'','','',0,'','','',0,0, '','',1,0,0,'',1,NOW(),0,'','','','',0,0,'')";
|
||
$rez = mysql_query($sql,$mdb);
|
||
$id = mysql_insert_id();
|
||
|
||
}
|
||
return $id;
|
||
|
||
}
|
||
|
||
function add_object($object,$mdb){
|
||
$values = array_map(function($value){
|
||
return "'$value'";
|
||
},$object);
|
||
$sql = "INSERT INTO objects(".implode(',',array_keys($object)).") VALUES (".implode(',',$values).")";
|
||
|
||
// $sql = "INSERT INTO objects(id_add_user,operation_type,type,rayon,adres,transport,peshkom,komnat,
|
||
// ploshad,ploshad_k,ploshad_komn,etazh,etazh_iz,opis,stoim,commission,hot_water_id,
|
||
// rubbish_chute,rent_house_type_id,photo1,photo2,photo3,photo4,photo5,stoim_prim,
|
||
// date_really_add,date_add,nazv,
|
||
// srok,holod,stirka,tv,mebel,phone,photo6,photo7,photo8,photo9,photo10,photo11,
|
||
// photo12,photo13,archive,sobstv,phone_search,id_user,prim_srok,black,
|
||
// vsego_komn,moder,photo14,photo15,photo16,photo17,
|
||
// photo18,photo19,photo20,id_kv)
|
||
// VALUES ('7623','1','2','39','Сланцы,Климчука ул, 4','20','15','2','2','6.00','17,6+17,3+12,6',
|
||
// '5','5','Арт. 14987880 Продаётся уютная 2 комнатная квартира, с ремонтом. Общая площадь 50 кв.м
|
||
// площадь комнат 13+18 кв.м. Раздельный санузел. Квартира расположена на 5 этаже 5 этажного кирпичного дома.
|
||
// Сделан косметический ремонт. Установлены Стеклопакеты , металическая дверь .Трубы поменяны,
|
||
// Горячая вода из центрального водоснабжения, есть обычная ванна. Удобное сообщение с Санкт- Петербургом,
|
||
// Остановка автобусов находится возле дома, в шаговой доступности д/ сад, школа, поликлинника,
|
||
// магазины \" Пятерочка \",\"Магнит\"Горячая вода из центрального водоснабжения, есть обычная ванна.
|
||
// Ленинградская область по адресу Климчука дом 4 г. Сланцы ближайшее метро.',
|
||
// '950000.00','1.00','3','0','6','http://zipal.ru/photo/62179397/ORIGINAL.jpg',
|
||
// 'http://zipal.ru/photo/62179398/ORIGINAL.jpg',
|
||
// 'http://zipal.ru/photo/62179399/ORIGINAL.jpg','http://zipal.ru/photo/62179400/ORIGINAL.jpg',
|
||
// 'http://zipal.ru/photo/64829597/ORIGINAL.jpg','1','2020-03-27 10:27:11','2020-08-25 15:56:51','2 квартира',
|
||
// 0,0,0,0,0,'','','','','','','','','',0,0,'',0,0,'',0,0,0,0,0,0,0,'','','','','','','',0,0,0,'',0,0)";
|
||
|
||
mysql_query($sql);
|
||
$id = mysql_insert_id();
|
||
return mysql_insert_id();
|
||
}
|
||
|
||
function add_sale_object($obj,$mdb){
|
||
$sale = $this->select_or_insert($obj,'sale_objects',$mdb
|
||
);
|
||
}
|
||
|
||
function add_addit_info($obj,$mdb){
|
||
$sale = $this->select_or_insert($obj,'objects_additional_information',$mdb);
|
||
}
|
||
|
||
function update_object($obj,$offer,$mdb){
|
||
$sql = "UPDATE objects SET ";
|
||
|
||
$temp = [];
|
||
foreach($offer as $key => $value){
|
||
$temp[] = $key."='".$value."'";
|
||
|
||
}
|
||
$sql .= implode(',',$temp);
|
||
|
||
$sql .= " WHERE id = ".$obj;
|
||
mysql_query($sql,$mdb);
|
||
|
||
}
|
||
|
||
function update_object_metro($obj,$metro,$mdb){
|
||
$metro = $this->select_or_insert(['metro' => $metro,
|
||
],'metro',$mdb);
|
||
|
||
$sql = "DELETE from sp_metro WHERE id_obj = ".$obj;
|
||
mysql_query($sql,$mdb);
|
||
|
||
$sql = "INSERT INTO sp_metro (id_metro,id_obj) VALUES (".$metro.",".$obj.")";
|
||
mysql_query($sql,$mdb);
|
||
}
|
||
|
||
function update_sale_object($offer,$mdb){
|
||
$sql = "DELETE from sale_objects WHERE object_id =".$offer['object_id'];
|
||
mysql_query($sql,$mdb);
|
||
$this->select_or_insert($offer,'sale_objects',$mdb);
|
||
}
|
||
|
||
function update_additional($offer,$mdb){
|
||
$sql = "DELETE FROM objects_additional_information WHERE object_id = ".$offer['object_id'];
|
||
mysql_query($sql,$mdb);
|
||
$this->select_or_insert($offer,'objects_additional_information',$mdb);
|
||
}
|
||
|
||
function update_photo($objectId, $photos, $mdb) {
|
||
//удаляем старые фото
|
||
$sqlSelectPhoto = "select oop.id, oop.object_photo_id from objects_object_photo oop where oop.object_id = $objectId";
|
||
$rezSelectPhoto = mysql_query($sqlSelectPhoto);
|
||
|
||
if (mysql_num_rows($rezSelectPhoto) > 0) {
|
||
|
||
while ($ph = mysql_fetch_assoc($rezSelectPhoto)) {
|
||
$sqlDeletePhoto = "DELETE FROM object_photo where id = $ph[object_photo_id]";
|
||
mysql_query($sqlDeletePhoto);
|
||
|
||
$sqlDeletePhotoLinks = "DELETE FROM objects_object_photo where id = $ph[id]";
|
||
mysql_query($sqlDeletePhotoLinks);
|
||
}
|
||
}
|
||
|
||
//вставляем фото
|
||
for($num = 1; $num <= 50; $num++) {
|
||
if (isset($photos['photo' . $num]) && $photos['photo' . $num]) {
|
||
$p = $photos['photo' . $num];
|
||
$sqlInsPhoto = "INSERT INTO object_photo(photo) VALUES('$p')";
|
||
mysql_query($sqlInsPhoto, $mdb);
|
||
|
||
$photoId = mysql_insert_id();
|
||
$sqlInsPhotoLink = "INSERT INTO objects_object_photo(object_id, object_photo_id, sort_order) VALUES($objectId, $photoId, $num)";
|
||
mysql_query($sqlInsPhotoLink, $mdb);
|
||
}
|
||
}
|
||
}
|
||
|
||
function is_objects_exist($key,$value,$table){
|
||
$sql = "SELECT id FROM ".$table." WHERE ".$key." = '$value'";
|
||
$rez = mysql_query($sql);
|
||
$rez = mysql_fetch_row($rez);
|
||
return $rez ? $rez[0]:0;
|
||
}
|
||
function is_object_exist_by_like($key,$value,$table,$with_like=false){
|
||
$sql = "SELECT id FROM ".$table." WHERE ";
|
||
$sql .=$key." LIKE '%".$value."%'";
|
||
$rez = mysql_query($sql);
|
||
$rez = mysql_fetch_array($rez);
|
||
return $rez ? $rez[0] : 0;
|
||
}
|
||
function get_location($offer){
|
||
$adres = '';
|
||
$rayon = 0;
|
||
if(isset($offer->{'location'}->{'locality-name'})){
|
||
$rayon=explode(' ',(string)$offer->{'location'}->{'locality-name'})[0];
|
||
if($rayon != $this->city){
|
||
$rayon = $this->is_object_exist_by_like('rayon',$rayon,'rayon');
|
||
}
|
||
}
|
||
if($rayon == 0){
|
||
$adres .=(string)$offer->{'location'}->{'locality-name'}.",";
|
||
}
|
||
if(isset($offer->{'location'}->{'district'})){
|
||
$rayon=explode(' ',(string)$offer->{'location'}->{'district'})[0];
|
||
$rayon = $this->is_object_exist_by_like('rayon',$rayon,'rayon');
|
||
}
|
||
if($rayon == 0){
|
||
if(isset($offer->{'location'}->{'sub-locality-name'})){
|
||
$rayon=explode(' ',(string)$offer->{'location'}->{'sub-locality-name'})[0];
|
||
$rayon = $this->is_object_exist_by_like('rayon',$rayon,'rayon');
|
||
}
|
||
}
|
||
|
||
if($rayon != 0){
|
||
$sqlRegion = "SELECT is_lo FROM rayon WHERE id = $rayon";
|
||
var_dump($sqlRegion);
|
||
$rez = mysql_query($sqlRegion);
|
||
if($row = mysql_fetch_row($rez)){
|
||
$region = $row[0] == 0 ? 81 : 50;
|
||
}
|
||
}
|
||
|
||
if(isset($offer->{'location'}->{'address'})){
|
||
$adres .= (string)$offer->{'location'}->{'address'};
|
||
}
|
||
|
||
return array($region,$rayon,$adres);
|
||
|
||
|
||
|
||
}
|
||
|
||
|
||
} |