core/api/modules/tovar_show/tk-ligat.php

137 lines
5.8 KiB
PHP
Raw Normal View History

2022-12-11 13:55:49 +05:00
<?php
function to_table($txt){
$old = array(": ");#Ищем вредное ">",, "<"
$new = array("</td><td>");#Меняем на полезное"&gt;", , "&lt;"
$text = str_replace($old, $new, $txt);#Собсно сама замена =)
return $text;
}
function to_barcode($txt){
$old = array(".");#Ищем вредное ">",, "<"
$new = array("");#Меняем на полезное"&gt;", , "&lt;"
$text = str_replace($old, $new, $txt);#Собсно сама замена =)
return $text;
}
//функция автоматического создания характеристик
function to_har( $txt, $db ){
$str_pos = mb_strripos( $txt, ":" );
$har = trim( mb_substr( $txt, 0, $str_pos ) );//Характеристика
$txt = mb_substr( $txt, $str_pos+2, strlen( $txt ) );//Значение характеристики
unset( $a );
$a['txt'] = $db->magicSQLite($har);
$id = $db -> get_val( 'sp_har', $a, 'id' );
//Смотрим, есть ли у товара эта характеристика, если же есть - обновляем, в случае отличая, иначе - добавляем....
unset( $b );
$b['pages_id'] = ID;
$b['sp_har_id'] = $id;
$txt_from_bd = $db -> get_val( 'har', $b, 'txt' );
if( $txt_from_bd ){
if($txt_from_bd!=$txt){
$sql='UPDATE `har` SET `txt`="' . $txt . '" WHERE `pages_id` = ' . ID . ' AND `sp_har_id`=' . $id;
$db->free_sql($sql);
}
}else{
$b['txt'] = $txt;
$db -> add( 'har', $b );
}
}
//Проверяем справочник характеристик
function find_in_bd($txt, $db){
$str_pos= mb_strripos($txt, ":");
$strTrim=mb_substr($txt, 0, $str_pos);
unset($a);
$a['txt']=$db->magicSQLite($strTrim);
$id=$db->get_val('sp_har', $a, 'id');
if (!$id)$db->add('sp_har', $a);
if ($strTrim=='Штрих-код' || $strTrim=='Штрихкод'){
$barcode = mb_substr($txt, $str_pos+2, strlen($txt));
$barcode=to_barcode($barcode);
$sql='UPDATE `pages` SET `barcode`="' . $barcode . '" WHERE `id` = ' . ID;
$db->free_sql($sql);
}
}
//Обрабатываем заголовок:
$txt = $page[0]['txt'];
//если первые шесть символов - цифры. а шестой - пробел - считаем что это артикул
if ( $page[0]['artikul']=='' ){
$txt=trim($txt);
$artikul = substr( $txt, 0, 6 );
$space = substr( $txt, 6, 1 );
if ($space==' ' && !$page[0]['artikul']) {
$page[0]['txt']= $db -> del_str( $page[0]['txt'], $artikul . ' ' );
//echo $page[0]['txt'];
#$sql = 'UPDATE `pages` SET `artikul`=' . $artikul . ', `txt`="' . $page[0]['txt'] . '" WHERE `id`=' . ID;
#$db -> free_sql( $sql );
// echo $page[0]['artikul'];
$page[0]['artikul'] = $artikul;
}
}
//print_r($page);
$sql='UPDATE `pages` SET `json`="" WHERE `json` = "' . '{""opisanie"":null}"';
//echo $sql;
$db->free_sql($sql);
//смотрим описание:
if (!$page[0]['opisanie'] || $page[0]['opisanie']==null){
$content='/home/www/tk-ligat.ru/content/a_' . $page[0]['artikul'] . '.txt';
//Смотрим существование файла с описанием:
if (!file_exists($content)){
exec('python3 /home/www/tk-ligat.ru/get.py ' . $page[0]['artikul'] . ' ' . ID);
sleep(2);
}
//Ищем контент спарсенный
$text = fopen($content, "r");
if ($text) {
while (($buffer = fgets($text)) !== false ) {
$textStr = trim($buffer);
//echo $textStr;
if($textStr=='Характеристики')break;
//echo $textStr;
if($textStr!='Описание' && strlen($textStr)>3)$page[0]['opisanie']=$page[0]['opisanie'] . '<p>' . $textStr . '</p>';
}
}
fclose($text);
unset($a);
$a['id']=ID;
$json=$db->from_j($db->get_val('pages', $a, 'json'));
//print_r($json);
$json['opisanie']=$page[0]['opisanie'];
$to_j=$db->to_j($json);
if (BD_TYPE=='SQLITE3'){
$sql='UPDATE `pages` SET `json`="' . $db->magicSQLite($db->clear_json($to_j)) . '" WHERE `id` = ' . ID;
}else{
$sql='UPDATE `pages` SET `json`="' . $db->clear_json($to_j) . '" WHERE `id` = ' . ID;
}
//echo $sql;
$db->free_sql($sql);
}
//смотрим характеристики:
if (!$page[0]['harakteriskika']){
$content='/home/www/tk-ligat.ru/content/a_' . $page[0]['artikul'] . '.txt';
//Смотрим существование файла с описанием:
if (!file_exists($content)){
exec('python3 /home/www/tk-ligat.ru/get.py ' . $page[0]['artikul'] . ' ' . ID);
sleep(2);
}
//Ищем контент спарсенный
$text = fopen($content, "r");
if ($text) {
$i=0;
while (($buffer = fgets($text)) !== false ) {
$textStr = trim($buffer);
if($textStr=='Характеристики')$i=1;
//echo $textStr;
if($textStr!='Характеристики' && $i==1 && strlen($textStr)>2){
$page[0]['harakteriskika']=$page[0]['harakteriskika'] . '<tr><td align="left">' . to_table($textStr) . '</td></tr>';
find_in_bd($textStr, $db);
to_har($textStr, $db);
}
}
}
fclose($text);
}
?>