Skip to content

Instantly share code, notes, and snippets.

@dzhuryn
Created March 21, 2020 13:05
Show Gist options
  • Save dzhuryn/dea5acfbce3147e3847c60ff32c9130d to your computer and use it in GitHub Desktop.
Save dzhuryn/dea5acfbce3147e3847c60ff32c9130d to your computer and use it in GitHub Desktop.
#### Проверяем основной артикул товара
$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