-
-
Save dzhuryn/dea5acfbce3147e3847c60ff32c9130d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#### Проверяем основной артикул товара | |
$productMainArticle = $doc->get('longtitle'); | |
//если у товара есть артикул | |
if(!empty($productMainArticle)){ | |
//якщо в товара у основний артикул але у базі його немає | |
if(empty($mainArticle)){ | |
$insert[] = [ | |
'product_id'=>$productId, | |
'type'=>1, | |
'article'=>$productMainArticle | |
]; | |
} | |
//якщо основний артикул товару не співпадає із тим що у базі | |
elseif ($mainArticle['article'] != $productMainArticle){ | |
$update[] = [ | |
'id'=>$mainArticle['id'], | |
'product_id'=>$productId, | |
'type'=>1, | |
'article'=>$productMainArticle | |
]; | |
} | |
} | |
else if(!empty($mainArticle)){ //если у товара нет главного артикла но в базе есть удаляем | |
$deleted[] = $mainArticle['id']; | |
} | |
#### Артиклы у размеров | |
$productSizeArticles = []; | |
$sizes = json_decode($doc->get('sizes'),true)["fieldValue"]; | |
if(!empty($sizes)){ | |
$productSizeArticles = array_column($sizes,'article'); | |
} | |
//ищем артиклы которые есть в базе но их нет у товаре | |
foreach ($sizeArticles as $row) { | |
if(!in_array($row['article'],$productSizeArticles)){ | |
$deleted[] = $row['id']; | |
} | |
} | |
//проходимя по артиклам, тех которых нет в базе вставляем, те которые есть но другие | |
foreach ($productSizeArticles as $productSizeArticle){ | |
$search = array_filter($sizeArticles,function ($arr) use($productSizeArticle){ | |
return $arr['article'] == $productSizeArticle; | |
}); | |
//в базе нет этого артикла и нет свободных id чтоб туда вписать | |
if(empty($search) && empty($deleted)){ | |
$insert[] = [ | |
'product_id'=>$productId, | |
'type'=>2, | |
'article'=>$productSizeArticle | |
]; | |
} | |
//усли артикула в базе нет, но есть свободная айдишка | |
else if(empty($search) && !empty($deleted)){ | |
var_dump(1); | |
$rowId = array_shift($deleted); | |
$update[] = [ | |
'id'=>$rowId, | |
'product_id'=>$productId, | |
'type'=>2, | |
'article'=>$productSizeArticle | |
]; | |
} | |
} | |
foreach ($insert as $el) { | |
$modx->db->insert($modx->db->escape($el),$articlesTable); | |
} | |
foreach ($update as $el) { | |
$modx->db->update($modx->db->escape($el),$articlesTable,'id = '.$el['id']); | |
} | |
foreach ($deleted as $el) { | |
$modx->db->delete($articlesTable,"id = $el"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment