function fn_clone_product($product_id) { // Clone main data $data = db_get_row("SELECT * FROM ?:products WHERE product_id = ?i", $product_id); unset($data['product_id']); $data['status'] = 'D'; $pid = db_query("INSERT INTO ?:products ?e", $data); // Clone descriptions $data = db_get_array("SELECT * FROM ?:product_descriptions WHERE product_id = ?i", $product_id); foreach ($data as $v) { $v['product_id'] = $pid; if ($v['lang_code'] == CART_LANGUAGE) { $orig_name = $v['product']; $new_name = $v['product'] . ' [CLONE]'; } $v['product'] .= ' [CLONE]'; db_query("INSERT INTO ?:product_descriptions ?e", $v); } // Clone prices $data = db_get_array("SELECT * FROM ?:product_prices WHERE product_id = ?i", $product_id); foreach ($data as $v) { $v['product_id'] = $pid; unset($v['price_id']); db_query("INSERT INTO ?:product_prices ?e", $v); } // Clone categories links $data = db_get_array("SELECT * FROM ?:products_categories WHERE product_id = ?i", $product_id); $_cids = array(); foreach ($data as $v) { $v['product_id'] = $pid; db_query("INSERT INTO ?:products_categories ?e", $v); $_cids[] = $v['category_id']; } fn_update_product_count($_cids); // Clone product options fn_clone_product_options($product_id, $pid); // Clone global linked options $gl_options = db_get_fields("SELECT option_id FROM ?:product_global_option_links WHERE product_id = ?i", $product_id); if (!empty($gl_options)) { foreach ($gl_options as $v) { db_query("INSERT INTO ?:product_global_option_links (option_id, product_id) VALUES (?i, ?i)", $v, $pid); } } // Clone product features $data = db_get_array("SELECT * FROM ?:product_features_values WHERE product_id = ?i", $product_id); foreach ($data as $v) { $v['product_id'] = $pid; db_query("INSERT INTO ?:product_features_values ?e", $v); } // Clone blocks fn_clone_block_links('products', $product_id, $pid); // Clone addons fn_set_hook('clone_product', $product_id, $pid); // Clone images fn_clone_image_pairs($pid, $product_id, 'product'); // Clone product files if (is_dir(DIR_DOWNLOADS . $product_id)) { $data = db_get_array("SELECT * FROM ?:product_files WHERE product_id = ?i", $product_id); foreach ($data as $v) { $v['product_id'] = $pid; $old_file_id = $v['file_id']; unset($v['file_id']); $file_id = db_query("INSERT INTO ?:product_files ?e", $v); $file_descr = db_get_row("SELECT * FROM ?:product_file_descriptions WHERE file_id = ?i", $old_file_id); $file_descr['file_id'] = $file_id; db_query("INSERT INTO ?:product_file_descriptions ?e", $file_descr); } fn_copy(DIR_DOWNLOADS . $product_id, DIR_DOWNLOADS . $pid); } fn_build_products_cache(array($pid)); return array('product_id' => $pid, 'orig_name' => $orig_name, 'product' => $new_name); }
function fn_clone_page($page_id) { if (!fn_check_company_id('pages', 'page_id', $page_id)) { fn_company_access_denied_notification(false); return false; } // Clone main data $data = db_get_row("SELECT * FROM ?:pages WHERE page_id = ?i", $page_id); unset($data['page_id']); $data['status'] = 'D'; $new_page_id = db_query("INSERT INTO ?:pages ?e", $data); // Update parent-child deps $id_path = explode('/', $data['id_path']); array_pop($id_path); $id_path[] = $new_page_id; db_query("UPDATE ?:pages SET id_path = ?s WHERE page_id = ?i", implode('/', $id_path), $new_page_id); // Clone descriptions $data = db_get_array("SELECT * FROM ?:page_descriptions WHERE page_id = ?i", $page_id); foreach ($data as $v) { $v['page_id'] = $new_page_id; if ($v['lang_code'] == CART_LANGUAGE) { $orig_name = $v['page']; $new_name = $v['page'] . ' [CLONE]'; } $v['page'] .= ' [CLONE]'; db_query("INSERT INTO ?:page_descriptions ?e", $v); } fn_clone_block_links('pages', $page_id, $new_page_id); fn_set_hook('clone_page', $page_id, $new_page_id); return array('page_id' => $new_page_id, 'orig_name' => $orig_name, 'page' => $new_name); }