コード例 #1
0
ファイル: fn.products.php プロジェクト: diedsmiling/busenika
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);
}
コード例 #2
0
ファイル: pages.php プロジェクト: diedsmiling/busenika
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);
}