ACC SHELL

Path : /srv/www/vhosts/centrumlb/administrace/include/
File Upload :
Current File : /srv/www/vhosts/centrumlb/administrace/include/clone_product.php

<?php

include_once('../config/config.php');
include_once('../libs/funkcephp.php');

define('DEBUG', false);
define('DUPLICATE_VARIATIONS', false);
$Katalog = new Katalog();

$idProduktu = intval($_GET['id']);
if (!isset($idProduktu) || !isset($_GET['id'])) {
    throw new ErrorException('Can not duplicate empty product');
    exit;
}

//$idProduktu = 54;
//Master produkt
$katalogPopis = dibi::query('SELECT * FROM katalog_popis WHERE id=%i', $idProduktu)->fetch();
$katalog = dibi::query('SELECT * FROM katalog WHERE id=%i', $katalogPopis->main_id)->fetch();

//Varianty
$katalogVarianty = dibi::query('SELECT * FROM katalog_popis WHERE varianta =1 AND id_produktu=%i', $katalogPopis->id)->fetchAll();
$katalogParametry = dibi::query('SELECT * FROM katalog_parametry WHERE id_produktu=%i', $idProduktu)->fetchAll();

//NDebugger::dump($katalogParametry);exit;
/*
 * Zalozeni master produktu
 */
// tabulka: Katalog
$arr['main_id'] = Query::zalozitHlavniVetev('katalog');
if (DEBUG) {
    echo 'zalozil jsem hlavni vetev -> ' . $arr['main_id'] . '<br />';
}


foreach (array($katalogPopis) as $popis) {
    unset($popis['id']);
    unset($popis['main_id']);
    unset($popis['id_produktu']);
    unset($popis['obrazek']);
    unset($popis['obrazek2']);
    unset($popis['obrazek3']);
    unset($popis['obrazek4']);
    unset($popis['obrazek5']);
    unset($popis['prodej']);
    unset($popis['sklad']);
    $popis['nazev'] = $popis['nazev'] . '-clone';
    $popis['url'] = $popis['url'] . '-clone';
    $popis['main_id'] = $arr['main_id'];
    $popis['id_produktu'] = isset($idNovehoProduktu) ? $popis['id_produktu'] : 0;

    $idNovehoProduktu = dibi::insert('katalog_popis', $popis)->execute();
    $idNovehoProduktu = dibi::insertId();
    if (DEBUG) {
	echo 'zalozil jsem master produkt -> ' . $idNovehoProduktu . '<br />';
    }

    //NDebugger::dump($idNovehoProduktu);
    //U prvniho produktu jeste neznam id, takze to musim zpetne updatovat
    if ($popis['id_produktu'] == 0) {
	$popis['id_produktu'] = $idNovehoProduktu;
	dibi::query('UPDATE katalog_popis SET id_produktu=%i', $idNovehoProduktu, 'WHERE id=%i', $idNovehoProduktu);
    }
    /*
     * Napredu duplikuju pouze parametry pro master produkt
     * id_katalog, id_produktu je potreba upravit
     */
    foreach ($katalogParametry as $key => $val) {
	if ($val->id_katalog == $idProduktu) {
	    $newParams['id_katalog'] = $idNovehoProduktu;
	    $newParams['id_produktu'] = $idNovehoProduktu;
	    $newParams['id_parametru'] = $val->id_parametru;
	    $newParams['id_hodnoty_parametru'] = $val->id_hodnoty_parametru;
	    dibi::insert('katalog_parametry', $newParams)->execute();
	    if (DEBUG) {
		echo 'zalozil jsem parametry -> ' . $idNovehoProduktu . '<br />';
		echo '<pre>';
		print_r($newParams);
		echo '</pre>';
	    }
	}
    }
}

if (DUPLICATE_VARIATIONS) {
    foreach ($katalogVarianty as $popis) {
	$idStareVarianty = $popis['id'];
	unset($popis['id']);
	unset($popis['main_id']);
	unset($popis['id_produktu']);
	unset($popis['obrazek']);
	unset($popis['obrazek2']);
	unset($popis['obrazek3']);
	unset($popis['obrazek4']);
	unset($popis['obrazek5']);
	unset($popis['prodej']);
	unset($popis['sklad']);
	$popis['main_id'] = $arr['main_id'];
	$popis['id_produktu'] = $idNovehoProduktu;

	$idNoveVarianty = dibi::insert('katalog_popis', $popis)->execute();
	$idNoveVarianty = dibi::insertId();
	if (DEBUG) {
	    echo 'zalozil jsem variantu -> ' . $idNoveVarianty . '<br />';
	}

	//NDebugger::dump($idNovehoProduktu);

	foreach ($katalogParametry as $key => $val) {
	    if ($val->id_katalog == $idStareVarianty) {
		$newParams['id_katalog'] = $idNoveVarianty;
		$newParams['id_produktu'] = $idNovehoProduktu;
		$newParams['id_parametru'] = $val->id_parametru;
		$newParams['id_hodnoty_parametru'] = $val->id_hodnoty_parametru;
		dibi::insert('katalog_parametry', $newParams)->execute();
		if (DEBUG) {
		    echo 'zalozil jsem parametry -> ' . $idNoveVarianty . '<br />';
		    NDebugger::dump($newParams);
		}
	    }
	}
    }
}

Tools::redirect('/administrace/katalog_edit.php?id=' . $idNovehoProduktu);

if (DEBUG) {
    NDebugger::dump($katalogPopis);
    NDebugger::dump($katalog);
    NDebugger::dump($katalogVarianty);
    NDebugger::dump($katalogParametry);
}


ACC SHELL 2018