diff --git a/.gitignore b/.gitignore index 1d5dc8d..cb332b0 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ sitemap* .htsecure cron/yasprav.log vizitka/tmp/ -vkteamssetup.exe \ No newline at end of file +vkteamssetup.exe +local/*.json \ No newline at end of file diff --git a/bitrix/php_interface/init.php b/bitrix/php_interface/init.php index 78e5d57..795bce8 100644 --- a/bitrix/php_interface/init.php +++ b/bitrix/php_interface/init.php @@ -2,7 +2,7 @@ function get_related($iblock_id, $id) { - $res = CIBlockElement::GetList(Array("NAME" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $id, "ACTIVE" => "Y"), false, Array("nPageSize" => 1000)); + $res = CIBlockElement::GetList(Array("NAME" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $id, ), false, Array("nPageSize" => 1000)); $ar_res = Array(); while ($obElement = $res->GetNextElement()) @@ -20,7 +20,7 @@ function get_related_array($iblock_id, $ids) foreach($ids AS $id) { - $res = CIBlockElement::GetList(Array("NAME" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $id, "ACTIVE" => "Y"), false, Array("nPageSize" => 1000)); + $res = CIBlockElement::GetList(Array("NAME" => "ASC"), Array("IBLOCK_ID" => $iblock_id, "ID" => $id, ), false, Array("nPageSize" => 1000)); while ($obElement = $res->GetNextElement()) { diff --git a/local/ilsa_code_fix.php b/local/ilsa_code_fix.php new file mode 100644 index 0000000..36196f0 --- /dev/null +++ b/local/ilsa_code_fix.php @@ -0,0 +1,35 @@ + "ASC" ], [ "IBLOCK_ID" => IBLOCK_ID_CATALOG_CARS_NEW, ], false, [], [] ); + +$c = 0; +while($car_search_ob = $car_search_res->GetNextElement()) +{ + $car_existed = $car_search_ob->GetFields(); + $car_existed['PROPERTIES'] = $car_search_ob->GetProperties(); + + $title = $car_existed['NAME']." ".$car_existed['PROPERTIES']['MODIFICATION_YEAR']['VALUE']; + $code = CUtil::translit( str_replace([""", " ", "+"], ['"', "-", "-plus-"], $title), "ru", [ "max_len" => 255, "change_case" => "L", "replace_space" => "-", "replace_other" => "-", "safe_chars" => "-" ] ); + + print $code."\n"; + + $car_update_element = new CIBlockElement; + $car_update_result = $car_update_element->Update($car_existed['ID'], [ "CODE" => $code ]); + $c++; +} + +print "\n\ntotal ".$c; + +die(); + +?> \ No newline at end of file diff --git a/local/ilsa_update.php b/local/ilsa_update.php index 9af9148..3e131e1 100644 --- a/local/ilsa_update.php +++ b/local/ilsa_update.php @@ -51,7 +51,7 @@ while($all_modifications_search_ob = $all_modifications_search_res->GetNextEleme array_push( $bitrix_existed_modifications, $modification_search['CODE'] ); } -$all_cars_search_res = CIBlockElement::GetList( [], [ "IBLOCK_ID" => 1, "ACTIVE" => "Y" ], false, false, [] ); +$all_cars_search_res = CIBlockElement::GetList( [], [ "IBLOCK_ID" => 1, ], false, false, [] ); while($all_cars_search_ob = $all_cars_search_res->GetNextElement()) { $car_search = $all_cars_search_ob->GetFields(); @@ -65,7 +65,12 @@ print "bitrix_existed_models = ".count($bitrix_existed_models)."\n"; print "bitrix_existed_modifications = ".count($bitrix_existed_modifications)."\n"; print "bitrix_existed_cars = ".count($bitrix_existed_cars)."\n"; -$content = file_get_contents(API_HOST."/site/Vehicle/GetModifications", false, stream_context_create($arrContextOptions)); +$api_modifications_url = API_HOST."/site/Vehicle/GetModifications"; +$content = file_get_contents($api_modifications_url, false, stream_context_create($arrContextOptions)); +print $api_modifications_url."\n\n"; + +file_put_contents("./api_modifications.json", $content); + $json = json_decode($content, true); $brands_and_models = []; @@ -75,9 +80,12 @@ $brands_and_models = []; $c = 0; +$api_data_titles = []; + $api_data = []; $api_brands = []; $api_models = []; +$api_modifications = []; $api_cars = []; //prepare brands list from API @@ -90,6 +98,13 @@ foreach($json AS $entry) ]; } + if(!isset($api_data_titles[ $entry['brand']['name'] ])) + { + $api_data_titles[ $entry['brand']['name'] ] = [ + "models" => [] + ]; + } + if(!in_array($entry['brand']['id'], $api_brands)) { array_push($api_brands, $entry['brand']['id']); @@ -102,7 +117,14 @@ foreach($json AS $entry) if(!isset($api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ])) { $api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ] = [ - "cars" => [] + "modifications" => [] + ]; + } + + if(!isset($api_data_titles[ $entry['brand']['name'] ]['models'][ $entry['model']['name'] ])) + { + $api_data_titles[ $entry['brand']['name'] ]['models'][ $entry['model']['name'] ] = [ + "modifications" => [] ]; } @@ -112,12 +134,40 @@ foreach($json AS $entry) } } -//prepare models list from API +//prepare modifications list from API foreach($json AS $entry) { - if(!isset($api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ]['cars'][ $entry['uid'] ])) + if(!isset($api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ]['modifications'][ $entry['modification'] ])) { - array_push($api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ]['cars'], $entry['uid']); + $api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ]['modifications'][ $entry['modification'] ] = [ + "cars" => [] + ]; + } + + if(!isset($api_data_titles[ $entry['brand']['name'] ]['models'][ $entry['model']['name'] ]['modifications'][ $entry['modification'] ])) + { + $api_data_titles[ $entry['brand']['name'] ]['models'][ $entry['model']['name'] ]['modifications'][ $entry['modification'] ] = [ + "cars" => [] + ]; + } + + if(!in_array($entry['modification'], $api_modifications)) + { + array_push($api_modifications, $entry['modification']); + } +} + +//prepare cars list from API +foreach($json AS $entry) +{ + if(!isset($api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ]['modifications'][ $entry['modification'] ]['cars'][ $entry['uid'] ])) + { + array_push($api_data[ $entry['brand']['id'] ]['models'][ $entry['model']['id'] ]['modifications'][ $entry['modification'] ]['cars'], $entry['uid']); + } + + if(!isset($api_data_titles[ $entry['brand']['name'] ]['models'][ $entry['model']['name'] ]['modifications'][ $entry['modification'] ]['cars'][ $entry['uid'] ])) + { + array_push($api_data_titles[ $entry['brand']['name'] ]['models'][ $entry['model']['name'] ]['modifications'][ $entry['modification'] ]['cars'], $entry['uid']); } if(!in_array($entry['uid'], $api_cars)) @@ -126,6 +176,25 @@ foreach($json AS $entry) } } +ksort($api_data_titles); + +foreach($api_data_titles AS $k => $v) +{ + $models = $v['models']; + ksort($models); + + foreach($models AS $kk => $vv) + { + $modifications = $vv['modifications']; + ksort($modifications); + $models[$kk]['modifications'] = $modifications; + } + + $api_data_titles[$k]['models'] = $models; +} + +file_put_contents("./api_data_titles.json", json_encode($api_data_titles)); + //print_r($bitrix_existed_models); foreach($bitrix_existed_models AS $existed_model) { @@ -313,7 +382,7 @@ function set_modification_activity($modification_code, $active = "N") function set_car_activity($car_uid, $active = "N") { - print "SET ACTIVE ".$car_uid." | ".$active."\n"; + //print "SET ACTIVE ".$car_uid." | ".$active."\n"; $car_id = null; $car_search_res = CIBlockElement::GetList( [], [ "IBLOCK_ID" => IBLOCK_ID_CATALOG_CARS_NEW, "PROPERTY_UID" => $car_uid ], false, false, [] ); @@ -433,14 +502,14 @@ function models_check($bitrix_models, $bitrix_modifications, $bitrix_modificatio ]; } -print "bitrix brands\n\n"; -print_r($bitrix_brands); +print "bitrix brands count: ".count($bitrix_brands)."\n"; +//print_r($bitrix_brands); -print "bitrix models\n\n"; -print_r($bitrix_models); +print "bitrix models count: ".count($bitrix_models)."\n"; +//print_r($bitrix_models); -print "bitrix modifications\n\n"; -print_r($bitrix_modifications); +print "bitrix modifications count: ".count($bitrix_modifications)."\n"; +//print_r($bitrix_modifications); //кешируем новые UID ТС $json_new_cars = []; @@ -464,10 +533,11 @@ foreach($json AS $car) $modification_json = json_decode($modification_content, true); $name = "".$car['brand']['name']." ".$car['model']['name']." ".$car['modification'].""; - $replace_name = "".$car['brand']['name']." ".$car['model']['name']." ".$car['modification'].""; - $code = CUtil::translit( str_replace(["+"], ["-plus-"], $replace_name), "ru", [ "max_len" => 255, "change_case" => "L", "replace_space" => "-", "replace_other" => "-" ] ); - print "new car --- uid ".$car['uid']." | code ".$code."\n"; + $title = $name." ".$car['modificationYear'].""; + $code = CUtil::translit( str_replace([""", " ", "+"], ['"', "-", "-plus-"], $title), "ru", [ "max_len" => 255, "change_case" => "L", "replace_space" => "-", "replace_other" => "-", "safe_chars" => "-" ] ); + + //print "new car --- uid ".$car['uid']." | code ".$code."\n"; $PROPERTY_VALUES = [ "UID" => $car['uid'], @@ -528,17 +598,24 @@ foreach($json AS $car) { print "CAR ERROR: ".$car_element->LAST_ERROR." | ".$car['uid']." | ".$code."\n"; - /* - if($car_element->LAST_ERROR === "Элемент с таким символьным кодом уже существует.
") + if($car_element->LAST_ERROR == "Элемент с таким символьным кодом уже существует.
") { - print "replace: ".$car_existed['UID']." -> ".$car['uid']." | ".$code."\n"; + $car_with_problem = null; + $car_with_problem_res = CIBlockElement::GetList( [ "ID" => "ASC" ], [ "IBLOCK_ID" => IBLOCK_ID_CATALOG_CARS_NEW, "CODE" => $code ], false, ["nPageSize" => 1], [] ); + + while($car_with_problem_ob = $car_with_problem_res->GetNextElement()) + { + $car_with_problem = $car_with_problem_ob->GetFields(); + } - $car_update_element = new CIBlockElement; - $car_update_result = $car_update_element->Update($car_existed['ID'], $car_update_payload); - - CIBlockElement::SetPropertyValuesEx($car_existed['ID'], IBLOCK_ID_CATALOG_CARS_NEW, $PROPERTY_VALUES, []); + if($car_with_problem !== null) + { + print "REPLACE FOR ".$car_with_problem['ID']." uid => ".$car['uid']."\n\n"; + print_r($car_with_problem); + print "\n\n\n"; + CIBlockElement::SetPropertyValuesEx($car_with_problem['ID'], IBLOCK_ID_CATALOG_CARS_NEW, $PROPERTY_VALUES, []); + } } - */ } //} } diff --git a/local/templates/404/header.php b/local/templates/404/header.php index 46d1e6c..f1de31d 100644 --- a/local/templates/404/header.php +++ b/local/templates/404/header.php @@ -1,7 +1,7 @@ - +