private function save_variation_meta($id, $data)
 {
     $product_meta = get_product_meta($id, 'product_metadata', true);
     if (!is_array($product_meta)) {
         $product_meta = array();
     }
     $product_meta = $this->merge_meta_deep($product_meta, $data['product_metadata']);
     // convert to pound to maintain backward compat with shipping modules
     if (isset($data['product_metadata']['weight']) || isset($data['product_metadata']['weight_unit'])) {
         $product_meta['weight'] = wpsc_convert_weight($product_meta['weight'], $product_meta['weight_unit'], 'pound', true);
     }
     update_product_meta($id, 'product_metadata', $product_meta);
     if (isset($data['price'])) {
         update_product_meta($id, 'price', wpsc_string_to_float($data['price']));
     }
     if (isset($data['sale_price'])) {
         $sale_price = wpsc_string_to_float($data['sale_price']);
         if (is_numeric($sale_price)) {
             update_product_meta($id, 'special_price', wpsc_string_to_float($data['sale_price']));
         } else {
             update_product_meta($id, 'special_price', '');
         }
     }
     if (isset($data['sku'])) {
         update_product_meta($id, 'sku', $data['sku']);
     }
     if (isset($data['stock'])) {
         if (is_numeric($data['stock'])) {
             update_product_meta($id, 'stock', (int) $data['stock']);
         } else {
             update_product_meta($id, 'stock', '');
         }
     }
 }
function wpsc_update_alt_product_currency($product_id, $newCurrency, $newPrice)
{
    global $wpdb;
    $old_curr = get_product_meta($product_id, 'currency', true);
    $sql = $wpdb->prepare("SELECT `isocode` FROM `" . WPSC_TABLE_CURRENCY_LIST . "` WHERE `id`= %d", $newCurrency);
    $isocode = $wpdb->get_var($sql);
    $newCurrency = 'currency';
    $old_curr[$isocode] = $newPrice;
    if ($newPrice != '' && $newPrice > 0.0) {
        update_product_meta($product_id, $newCurrency, $old_curr);
    } else {
        if ((empty($old_curr[$isocode]) || 0.0 == $old_curr[$isocode]) && is_array($old_curr)) {
            unset($old_curr[$isocode]);
        }
        update_product_meta($product_id, $newCurrency, $old_curr);
    }
}
function wpsc_add_product($product_values)
{
    global $wpdb;
    // takes an array, inserts it into the database as a product
    $success = false;
    $insertsql = "INSERT INTO `" . WPSC_TABLE_PRODUCT_LIST . "` SET";
    $insertsql .= "`name` = '" . $wpdb->escape($product_values['name']) . "',";
    $insertsql .= "`description`  = '" . $wpdb->escape($product_values['description']) . "',";
    $insertsql .= "`additional_description`  = '" . $wpdb->escape($product_values['additional_description']) . "',";
    $insertsql .= "`price` = '" . $wpdb->escape($product_values['price']) . "',";
    $insertsql .= "`quantity_limited` = '" . $wpdb->escape($product_values['quantity_limited']) . "',";
    $insertsql .= "`quantity` = '" . $wpdb->escape($product_values['quantity']) . "',";
    $insertsql .= "`special` = '" . $wpdb->escape($product_values['special']) . "',";
    $insertsql .= "`special_price` = '" . $wpdb->escape($product_values['special_price']) . "',";
    $insertsql .= "`weight` = '" . $wpdb->escape($product_values['weight']) . "',";
    $insertsql .= "`weight_unit` = '" . $wpdb->escape($product_values['weight_unit']) . "',";
    $insertsql .= "`no_shipping` = '" . $wpdb->escape($product_values['no_shipping']) . "',";
    $insertsql .= "`pnp` = '" . $wpdb->escape($product_values['pnp']) . "',";
    $insertsql .= "`international_pnp` = '" . $wpdb->escape($product_values['international_pnp']) . "',";
    $insertsql .= "`donation` = '" . $wpdb->escape($product_values['donation']) . "',";
    $insertsql .= "`display_frontpage` = '" . $wpdb->escape($product_values['display_frontpage']) . "',";
    $insertsql .= "`notax` = '" . $wpdb->escape($product_values['notax']) . "',";
    $insertsql .= "`image` = '0',";
    $insertsql .= "`file` = '0',";
    $insertsql .= "`thumbnail_state` = '0' ;";
    //Insert the data
    if ($wpdb->query($insertsql)) {
        // if we succeeded, we have a product id, we wants it for the next stuff
        $product_id = $wpdb->get_var("SELECT LAST_INSERT_ID() AS `id` FROM `" . WPSC_TABLE_PRODUCT_LIST . "` LIMIT 1");
        // add the tags
        if (function_exists('wp_insert_term')) {
            product_tag_init();
            $tags = $product_values['product_tag'];
            if ($tags != "") {
                $tags = explode(',', $tags);
                foreach ($tags as $tag) {
                    $tt = wp_insert_term((string) $tag, 'product_tag');
                }
                $return = wp_set_object_terms($product_id, $tags, 'product_tag');
            }
        }
        $image = wpsc_item_process_image($product_id, $product_values['image_path'], basename($product_values['image_path']), $product_values['width'], $product_values['height'], $product_values['image_resize']);
        if ($image != null) {
            $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `image` = '" . $wpdb->escape($image) . "' WHERE `id`='" . $product_id . "' LIMIT 1");
        }
        // add the product meta values
        if ($product_values['productmeta_values'] != null) {
            foreach ((array) $product_values['productmeta_values'] as $key => $value) {
                if (get_product_meta($product_id, $key) != false) {
                    update_product_meta($product_id, $key, $value);
                } else {
                    add_product_meta($product_id, $key, $value);
                }
            }
        }
        // and the custom meta values
        if ($product_values['new_custom_meta'] != null) {
            foreach ((array) $product_values['new_custom_meta']['name'] as $key => $name) {
                $value = $product_values['new_custom_meta']['value'][(int) $key];
                if ($name != '' && $value != '') {
                    add_product_meta($product_id, $name, $value, false, true);
                }
            }
        }
        // Add the tidy url name
        $tidied_name = trim($product_values['name']);
        $tidied_name = strtolower($tidied_name);
        $url_name = sanitize_title($tidied_name);
        $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`meta_value`, '" . $wpdb->escape($url_name) . "', '')) AS `max_number` FROM `" . WPSC_TABLE_PRODUCTMETA . "` WHERE `meta_key` IN ('url_name') AND `meta_value` REGEXP '^(" . $wpdb->escape($url_name) . "){1}(\\d)*\$' ", ARRAY_A);
        $extension_number = '';
        if ($similar_names['count'] > 0) {
            $extension_number = (int) $similar_names['max_number'] + 1;
        }
        $url_name .= $extension_number;
        add_product_meta($product_id, 'url_name', $url_name, true);
        // Add the varations and associated values
        $variations_procesor = new nzshpcrt_variations();
        if ($product_values['variation_values'] != null) {
            $variations_procesor->add_to_existing_product($product_id, $product_values['variation_values']);
        }
        if ($product_values['variation_priceandstock'] != null) {
            $variations_procesor->update_variation_values($product_id, $product_values['variation_priceandstock']);
        }
        // Add the selelcted categories
        $item_list = '';
        if (count($product_values['category']) > 0) {
            foreach ($product_values['category'] as $category_id) {
                $category_id = (int) $category_id;
                $check_existing = $wpdb->get_var("SELECT `id` FROM `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "` WHERE `product_id` = " . $product_id . " AND `category_id` = '{$category_id}' LIMIT 1");
                if ($check_existing == null) {
                    $wpdb->query("INSERT INTO `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "` ( `product_id` , `category_id` ) VALUES ( '" . $product_id . "', '" . $category_id . "');");
                }
            }
        }
        $success = true;
    }
    return $success;
}
/**
 * wpsc_item_reassign_file function 
 *
 * @param integer product ID
 * @param string the selected file name;
 */
function wpsc_item_reassign_file($product_id, $selected_files)
{
    global $wpdb;
    $product_file_list = array();
    // initialise $idhash to null to prevent issues with undefined variables and error logs
    $idhash = null;
    /* if we are editing, grab the current file and ID hash */
    if (!$selected_files) {
        // unlikely that anyone will ever upload a file called .none., so its the value used to signify clearing the product association
        $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `file` = '0' WHERE `id` = '{$product_id}' LIMIT 1");
        return null;
    }
    foreach ($selected_files as $selected_file) {
        // if we already use this file, there is no point doing anything more.
        $current_fileid = $wpdb->get_var("SELECT `file` FROM `" . WPSC_TABLE_PRODUCT_LIST . "` WHERE `id` = '{$product_id}' LIMIT 1");
        if ($current_fileid > 0) {
            $current_file_data = $wpdb->get_row("SELECT `id`,`idhash` FROM `" . WPSC_TABLE_PRODUCT_FILES . "` WHERE `id` = '{$current_fileid}' LIMIT 1", ARRAY_A);
            if (basename($selected_file) == $file_data['idhash']) {
                //$product_file_list[] = $current_fileid;
                //return $current_fileid;
            }
        }
        $selected_file = basename($selected_file);
        if (file_exists(WPSC_FILE_DIR . $selected_file)) {
            $timestamp = time();
            $file_data = $wpdb->get_row("SELECT * FROM `" . WPSC_TABLE_PRODUCT_FILES . "` WHERE `idhash` IN('" . $wpdb->escape($selected_file) . "') LIMIT 1", ARRAY_A);
            $fileid = (int) $file_data['id'];
            // if the file does not have a database row, add one.
            if ($fileid < 1) {
                $mimetype = wpsc_get_mimetype(WPSC_FILE_DIR . $selected_file);
                $filename = $idhash = $selected_file;
                $timestamp = time();
                $wpdb->query("INSERT INTO `" . WPSC_TABLE_PRODUCT_FILES . "` (`product_id`, `filename`  , `mimetype` , `idhash` , `date` ) VALUES ('{$product_id}', '{$filename}', '{$mimetype}', '{$idhash}', '{$timestamp}');");
                $fileid = $wpdb->get_var("SELECT `id` FROM `" . WPSC_TABLE_PRODUCT_FILES . "` WHERE `date` = '{$timestamp}' AND `filename` IN ('{$filename}')");
            }
            // update the entry in the product table
            $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `file` = '{$fileid}' WHERE `id` = '{$product_id}' LIMIT 1");
            $product_file_list[] = $fileid;
        }
    }
    //exit('<pre>'.print_r($product_file_list, true).'</pre>');
    update_product_meta($product_id, 'product_files', $product_file_list);
    return $fileid;
}
示例#5
0
 do_action('wpsc_product_form_submit', $product_id);
 /* Add or edit tidy url name */
 $tidied_name = trim($_POST['title']);
 $tidied_name = strtolower($tidied_name);
 $url_name = preg_replace(array("/(\\s)+/", "/[^\\w-]+/i"), array("-", ''), $tidied_name);
 $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`meta_value`, '{$url_name}', '')) AS `max_number` FROM `" . $wpdb->prefix . "wpsc_productmeta` WHERE `meta_key` IN ('url_name') AND `meta_value` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
 $extension_number = '';
 if ($similar_names['count'] > 0) {
     $extension_number = (int) $similar_names['max_number'] + 1;
 }
 $stored_name = get_product_meta($_POST['prodid'], 'url_name', true);
 if (get_product_meta($_POST['prodid'], 'url_name', true) != false) {
     $current_url_name = get_product_meta($_POST['prodid'], 'url_name');
     if ($current_url_name[0] != $url_name) {
         $url_name .= $extension_number;
         update_product_meta($_POST['prodid'], 'url_name', $url_name);
     }
 } else {
     $url_name .= $extension_number;
     add_product_meta($_POST['prodid'], 'url_name', $url_name, true);
 }
 /* update thumbnail images */
 if (!($thumbnail_image == null && $_POST['image_resize'] == 3 && $_POST['current_thumbnail_image'] != null)) {
     if ($thumbnail_image != null) {
         $wpdb->query("UPDATE `" . $wpdb->prefix . "product_list` SET `thumbnail_image` = '" . $thumbnail_image . "' WHERE `id`='" . $_POST['prodid'] . "' LIMIT 1");
     }
 }
 $image_resize = $_POST['image_resize'];
 if (!is_numeric($image_resize) || $image_resize < 1) {
     $image_resize = 0;
 }
/**
 * @todo - Should probably refactor this at some point - very procedural,
 *         WAY too many foreach loops for my liking :)  But it does the trick
 *
 * @param <type> $term_id
 */
function save_term_prices($term_id)
{
    // First - Saves options from input
    if (isset($_POST['variation_price']) || isset($_POST["apply_to_current"])) {
        $term_prices = get_option('term_prices');
        $term_prices[$term_id]["price"] = sanitize_text_field($_POST["variation_price"]);
        $term_prices[$term_id]["checked"] = isset($_POST["apply_to_current"]) ? "checked" : "unchecked";
        update_option('term_prices', $term_prices);
    }
    // Second - If box was checked, let's then check whether or not it was flat, differential, or percentile, then let's apply the pricing to every product appropriately
    if (isset($_POST["apply_to_current"])) {
        //Now, find all products with this term_id, update their pricing structure (terms returned include only parents at this point, we'll grab relevent children soon)
        $products_to_mod = get_objects_in_term($term_id, "wpsc-variation");
        $product_parents = array();
        foreach ((array) $products_to_mod as $get_parent) {
            $post = get_post($get_parent);
            if (!$post->post_parent) {
                $product_parents[] = $post->ID;
            }
        }
        //Now that we have all parent IDs with this term, we can get the children (only the ones that are also in $products_to_mod, we don't want to apply pricing to ALL kids)
        foreach ($product_parents as $parent) {
            $args = array('post_parent' => $parent, 'post_type' => 'wpsc-product');
            $children = get_children($args, ARRAY_A);
            foreach ($children as $childrens) {
                $parent = $childrens["post_parent"];
                $children_ids[$parent][] = $childrens["ID"];
                $children_ids[$parent] = array_intersect($children_ids[$parent], $products_to_mod);
            }
        }
        //Got the right kids, let's grab their parent pricing and modify their pricing based on var_price_type
        foreach ((array) $children_ids as $parents => $kids) {
            $kids = array_values($kids);
            foreach ($kids as $kiddos) {
                $price = wpsc_determine_variation_price($kiddos);
                update_product_meta($kiddos, 'price', $price);
            }
        }
    }
}
/**
	* wpsc_decrement_claimed_stock method
	*
	* @param float a price
	* @return string a price with a currency sign
*/
function wpsc_decrement_claimed_stock($purchase_log_id)
{
    global $wpdb;
    //processed
    $all_claimed_stock = $wpdb->get_results($wpdb->prepare("SELECT `cs`.`product_id`, `cs`.`stock_claimed`, `pl`.`id`, `pl`.`processed` FROM `" . WPSC_TABLE_CLAIMED_STOCK . "` `cs` JOIN `" . WPSC_TABLE_PURCHASE_LOGS . "` `pl` ON `cs`.`cart_id` = `pl`.`id` WHERE `cs`.`cart_id` = '%s'", $purchase_log_id));
    if (!empty($all_claimed_stock)) {
        switch ($all_claimed_stock[0]->processed) {
            case 3:
            case 4:
            case 5:
                foreach ((array) $all_claimed_stock as $claimed_stock) {
                    $product = get_post($claimed_stock->product_id);
                    $current_stock = get_post_meta($product->ID, '_wpsc_stock', true);
                    $remaining_stock = $current_stock - $claimed_stock->stock_claimed;
                    update_product_meta($product->ID, 'stock', $remaining_stock);
                    $product_meta = get_product_meta($product->ID, 'product_metadata', true);
                    if ($remaining_stock < 1) {
                        // this is to make sure after upgrading to 3.8.9, products will have
                        // "notify_when_none_left" enabled by default if "unpublish_when_none_left"
                        // is enabled.
                        if (!isset($product_meta['notify_when_none_left'])) {
                            $product_meta['unpublish_when_none_left'] = 0;
                            if (!empty($product_meta['unpublish_when_none_left'])) {
                                $product_meta['unpublish_when_none_left'] = 1;
                                update_product_meta($product->ID, 'product_metadata', $product_meta);
                            }
                        }
                        $email_message = sprintf(__('The product "%s" is out of stock.', 'wpsc'), $product->post_title);
                        if (!empty($product_meta["unpublish_when_none_left"])) {
                            $result = wp_update_post(array('ID' => $product->ID, 'post_status' => $draft));
                            if ($result) {
                                $email_message = __('The product "%s" is out of stock and has been unpublished.', 'wpsc');
                            }
                        }
                        if ($product_meta["notify_when_none_left"] == 1) {
                            wp_mail(get_option('purch_log_email'), sprintf(__('%s is out of stock', 'wpsc'), $product->post_title), $email_message);
                        }
                    }
                }
            case 6:
                $wpdb->query($wpdb->prepare("DELETE FROM `" . WPSC_TABLE_CLAIMED_STOCK . "` WHERE `cart_id` IN (%s)", $purchase_log_id));
                break;
        }
    }
}
示例#8
0
function wpsc_update_files()
{
    global $wpdb, $user_ID;
    $product_files = $wpdb->get_results("SELECT * FROM " . WPSC_TABLE_PRODUCT_FILES . "");
    $wpsc_update = WPSC_Update::get_instance();
    foreach ($product_files as $product_file) {
        $wpsc_update->check_timeout();
        $variation_post_ids = array();
        if (!empty($product_file->product_id)) {
            $product_post_id = (int) $wpdb->get_var($wpdb->prepare("SELECT `post_id` FROM `{$wpdb->postmeta}` WHERE meta_key = %s AND `meta_value` = %d LIMIT 1", '_wpsc_original_id', $product_file->product_id));
        } else {
            $product_post_id = (int) $wpdb->get_var("SELECT `id` FROM " . WPSC_TABLE_PRODUCT_LIST . " WHERE file=" . $product_file->id);
            $product_post_id = (int) $wpdb->get_var($wpdb->prepare("SELECT `post_id` FROM `{$wpdb->postmeta}` WHERE meta_key = %s AND `meta_value` = %d LIMIT 1", '_wpsc_original_id', $product_post_id));
        }
        $variation_items = $wpdb->get_col("SELECT `id` FROM " . WPSC_TABLE_VARIATION_PROPERTIES . " WHERE `file` = '{$product_file->id}'");
        if (count($variation_items) > 0) {
            $variation_post_ids = $wpdb->get_col("SELECT `post_id` FROM `{$wpdb->postmeta}` WHERE meta_key = '_wpsc_original_variation_id' AND `meta_value` IN(" . implode(", ", $variation_items) . ")");
        }
        $attachment_template = array('post_mime_type' => $product_file->mimetype, 'post_title' => $product_file->filename, 'post_name' => $product_file->idhash, 'post_content' => '', 'post_parent' => $product_post_id, 'post_type' => "wpsc-product-file", 'post_status' => 'inherit');
        $file_id = wpsc_get_meta($product_file->id, '_new_file_id', 'wpsc_files');
        if ($file_id == null && count($variation_post_ids) == 0) {
            $file_data = $attachment_template;
            $file_data['post_parent'] = $product_post_id;
            $new_file_id = wp_insert_post($file_data);
            wpsc_update_meta($product_file->id, '_new_file_id', $new_file_id, 'wpsc_files');
        }
        if (count($variation_post_ids) > 0) {
            foreach ($variation_post_ids as $variation_post_id) {
                $old_file_id = get_product_meta($variation_post_id, 'old_file_id', true);
                if ($old_file_id == null) {
                    $file_data = $attachment_template;
                    $file_data['post_parent'] = $variation_post_id;
                    $new_file_id = wp_insert_post($file_data);
                    update_product_meta($variation_post_id, 'old_file_id', $product_file->id, 'wpsc_files');
                }
            }
        }
        if (!empty($product_file->preview)) {
            $preview_template = array('post_mime_type' => $product_file->preview_mimetype, 'post_title' => $product_file->preview, 'post_name' => $product_file->filename, 'post_content' => '', 'post_parent' => $new_file_id, 'post_type' => "wpsc-product-preview", 'post_status' => 'inherit');
            wp_insert_post($preview_template);
        }
    }
    $download_ids = $wpdb->get_col("SELECT `id` FROM " . WPSC_TABLE_DOWNLOAD_STATUS . "");
    foreach ($download_ids as $download_id) {
        if (wpsc_get_meta($download_id, '_is_legacy', 'wpsc_downloads') !== 'false') {
            wpsc_update_meta($download_id, '_is_legacy', 'true', 'wpsc_downloads');
        }
    }
}
示例#9
0
function nzshpcrt_install()
{
    global $wpdb, $user_level, $wp_rewrite, $wp_version;
    $table_name = $wpdb->prefix . "product_list";
    //$log_table_name = $wpdb->prefix . "sms_log";
    if ($wp_version < 2.1) {
        get_currentuserinfo();
        if ($user_level < 8) {
            return;
        }
    }
    $first_install = false;
    $result = mysql_list_tables(DB_NAME);
    $tables = array();
    while ($row = mysql_fetch_row($result)) {
        $tables[] = $row[0];
    }
    if (!in_array($table_name, $tables)) {
        $first_install = true;
    }
    if (get_option('wpsc_version') == null) {
        add_option('wpsc_version', WPSC_VERSION, 'wpsc_version', 'yes');
    }
    // Table structure for table `".$wpdb->prefix."also_bought_product`
    $num = 0;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . "also_bought_product";
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "also_bought_product` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`selected_product` bigint(20) unsigned NOT NULL default '0',\n\t\t`associated_product` bigint(20) unsigned NOT NULL default '0',\n\t\t`quantity` int(10) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."cart_contents`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'cart_contents';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "cart_contents` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`prodid` bigint(20) unsigned NOT NULL default '0',\n\t\t`purchaseid` bigint(20) unsigned NOT NULL default '0',\n\t\t`price` varchar(128) NOT NULL default '0',\n\t\t`pnp` varchar(128) NOT NULL default '0',\n\t\t`gst` varchar(128) NOT NULL default '0',\n\t\t`quantity` int(10) unsigned NOT NULL default '0',\n\t\t`donation` varchar(1) NOT NULL default '0',\n\t\t`no_shipping` varchar(1) NOT NULL default '0',\n\t\t`files` TEXT NOT NULL default '',\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."cart_item_extras`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'cart_item_extras';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "cart_item_extras` (\n\t\t`id` int(11) NOT NULL auto_increment,\n\t\t`cart_id` int(11) NOT NULL,\n\t\t`extra_id` int(11) NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."cart_item_variations`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'cart_item_variations';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "cart_item_variations` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`cart_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`variation_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`value_id` bigint(20) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."collect_data_forms`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'collect_data_forms';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "collect_data_forms` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`name` varchar(255) NOT NULL default '',\n\t\t`type` varchar(64) NOT NULL default '',\n\t\t`mandatory` varchar(1) NOT NULL default '0',\n\t\t`display_log` char(1) NOT NULL default '0',\n\t\t`default` varchar(128) NOT NULL default '0',\n\t\t`active` varchar(1) NOT NULL default '1',\n\t\t`order` int(10) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `order` (`order`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."currency_list`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'currency_list';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "currency_list` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`country` varchar(255) NOT NULL default '',\n\t\t`isocode` char(2) default NULL,\n\t\t`currency` varchar(255) NOT NULL default '',\n\t\t`symbol` varchar(10) NOT NULL default '',\n\t\t`symbol_html` varchar(10) NOT NULL default '',\n\t\t`code` char(3) NOT NULL default '',\n\t\t`has_regions` char(1) NOT NULL default '0',\n\t\t`tax` varchar(8) NOT NULL default '',\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."download_status`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'download_status';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "download_status` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`fileid` bigint(20) unsigned NOT NULL default '0',\n\t\t`purchid` bigint(20) unsigned NOT NULL default '0',\n\t\t`uniqueid` varchar(64) default NULL,\n\t\t`downloads` int(11) NOT NULL default '0',\n\t\t`ip_number` varchar(255) NOT NULL default '',\n\t\t`active` varchar(1) NOT NULL default '0',\n\t\t`datetime` datetime NOT NULL,\n\t\tPRIMARY KEY  (`id`),\n\t\tUNIQUE KEY `uniqueid` (`uniqueid`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."extras_values`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'extras_values';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "extras_values` (\n\t\t`id` int(11) NOT NULL auto_increment,\n\t\t`name` varchar(128) NOT NULL,\n\t\t`extras_id` int(11) NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."extras_values_associations`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'extras_values_associations';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "extras_values_associations` (\n\t\t`id` int(11) NOT NULL auto_increment,\n\t\t`product_id` int(11) NOT NULL,\n\t\t`value_id` int(11) NOT NULL,\n\t\t`price` varchar(20) NOT NULL,\n\t\t`visible` varchar(1) NOT NULL,\n\t\t`extras_id` int(11) NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."item_category_associations`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'item_category_associations';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "item_category_associations` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`product_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`category_id` bigint(20) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tUNIQUE KEY `product_id` (`product_id`,`category_id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."product_brands`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_brands';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_brands` (\n\t\t`id` bigint(20) NOT NULL auto_increment,\n\t\t`name` text NOT NULL,\n\t\t`description` text NOT NULL,\n\t\t`active` varchar(1) NOT NULL default '1',\n\t\t`order` bigint(20) unsigned NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."product_categories`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_categories';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_categories` (\n\t\t`id` bigint(20) NOT NULL auto_increment,\n\t\t`group_id` BIGINT( 20 ) UNSIGNED NOT NULL,\n\t\t`name` text NOT NULL,\n\t\t`nice-name` varchar(255) NOT NULL,\n\t\t`description` text NOT NULL,\n\t\t`image` text NOT NULL,\n\t\t`fee` varchar(1) NOT NULL default '0',\n\t\t`active` varchar(1) NOT NULL default '1',\n\t\t`category_parent` bigint(20) unsigned default '0',\n\t\t`order` bigint(20) unsigned NOT NULL,\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `group_id` (`group_id`),\n\t\tKEY `nice-name` (`nice-name`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."product_extra`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_extra';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_extra` (\n\t\t`id` int(11) NOT NULL auto_increment,\n\t\t`name` varchar(128) NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."product_files`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_files';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_files` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`filename` varchar(255) NOT NULL default '',\n\t\t`mimetype` varchar(128) NOT NULL default '',\n\t\t`idhash` varchar(45) NOT NULL default '',\n\t\t`preview` varchar(255) NOT NULL default '',\n\t\t`preview_mimetype` varchar(128) NOT NULL default '',\n\t\t`date` varchar(255) NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."product_images`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_images';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_images` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`product_id` bigint(20) unsigned NOT NULL,\n\t\t`image` varchar(255) NOT NULL,\n\t\t`width` mediumint(8) unsigned NOT NULL,\n\t\t`height` mediumint(8) unsigned NOT NULL,\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `product_id` (`product_id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."product_list`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_list';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_list` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`name` text NOT NULL,\n\t\t`description` longtext NOT NULL,\n\t\t`additional_description` longtext NOT NULL,\n\t\t`price` varchar(20) NOT NULL default '0',\n\t\t`weight` int(11) NOT NULL default '0',\n\t\t`weight_unit` varchar(10) NOT NULL,\n\t\t`pnp` varchar(20) NOT NULL default '0',\n\t\t`international_pnp` varchar(20) NOT NULL default '0',\n\t\t`file` bigint(20) unsigned NOT NULL,\n\t\t`image` text NOT NULL,\n\t\t`category` bigint(20) unsigned NOT NULL default '0',\n\t\t`brand` bigint(20) unsigned NOT NULL default '0',\n\t\t`quantity_limited` varchar(1) NOT NULL,\n\t\t`quantity` int(10) unsigned NOT NULL default '0',\n\t\t`special` varchar(1) NOT NULL default '0',\n\t\t`special_price` varchar(20) NOT NULL default '0',\n\t\t`display_frontpage` varchar(1) NOT NULL default '0',\n\t\t`notax` varchar(1) NOT NULL default '0',\n\t\t`active` varchar(1) NOT NULL default '1',\n\t\t`donation` varchar(1) NOT NULL default '0',\n\t\t`no_shipping` varchar(1) NOT NULL default '0',\n\t\t`thumbnail_image` text,\n\t\t`thumbnail_state` int(11) NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."product_order`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_order';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_order` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`category_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`product_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`order` bigint(20) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tUNIQUE KEY `category_id` (`category_id`,`product_id`),\n\t\tKEY `order` (`order`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."product_rating`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_rating';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_rating` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`ipnum` varchar(30) NOT NULL default '',\n\t\t`productid` bigint(20) unsigned NOT NULL default '0',\n\t\t`rated` tinyint(1) NOT NULL default '0',\n\t\t`time` bigint(20) unsigned NOT NULL,\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."product_variations`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'product_variations';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "product_variations` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`name` varchar(128) NOT NULL default '',\n\t\t`variation_association` bigint(20) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `variation_association` (`variation_association`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."purchase_logs`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'purchase_logs';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "purchase_logs` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`totalprice` varchar(128) NOT NULL default '0',\n\t\t`statusno` smallint(6) NOT NULL default '0',\n\t\t`sessionid` varchar(255) NOT NULL default '',\n\t\t`transactid` varchar(255) NOT NULL default '',\n\t\t`authcode` varchar(255) NOT NULL default '',\n\t\t`downloadid` bigint(20) unsigned NOT NULL default '0',\n\t\t`processed` bigint(20) unsigned NOT NULL default '1',\n\t\t`user_ID` bigint(20) unsigned default NULL,\n\t\t`date` varchar(255) NOT NULL default '',\n\t\t`gateway` varchar(64) NOT NULL default '',\n\t\t`billing_country` char(6) NOT NULL default '',\n\t\t`shipping_country` char(6) NOT NULL default '',\n\t\t`base_shipping` varchar(128) NOT NULL default '0',\n\t\t`email_sent` char(1) NOT NULL default '0',\n\t\t`discount_value` varchar(32) NOT NULL default '0',\n\t\t`discount_data` text NOT NULL,\n\t\t`track_id` varchar(50) default NULL default '',\n\t\t`shipping_region` char(6) NOT NULL default '',\n\t\t`find_us` varchar(255) NOT NULL  default '',\n\t\t`engravetext` varchar(255) default NULL,\n\t\t`closest_store` varchar(255) default NULL,\n\t\t`google_order_number` varchar(20) NOT NULL default '',\n\t\t`google_user_marketing_preference` varchar(10) NOT NULL default '',\n\t\t`google_status` longtext NOT NULL,\n\t\tPRIMARY KEY  (`id`),\n\t\tUNIQUE KEY `sessionid` (`sessionid`),\n\t\tKEY `gateway` (`gateway`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."purchase_statuses`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'purchase_statuses';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "purchase_statuses` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`name` varchar(128) NOT NULL default '',\n\t\t`active` varchar(1) NOT NULL default '0',\n\t\t`colour` varchar(6) NOT NULL default '',\n\t\tPRIMARY KEY  (`id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."region_tax`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'region_tax';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "region_tax` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`country_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`name` varchar(64) NOT NULL default '',\n\t\t`code` char(2) NOT NULL default '',\n\t\t`tax` float NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `country_id` (`country_id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."submited_form_data`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'submited_form_data';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "submited_form_data` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`log_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`form_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`value` varchar(255) NOT NULL default '',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `log_id` (`log_id`,`form_id`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."variation_associations`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'variation_associations';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "variation_associations` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`type` varchar(64) NOT NULL default '',\n\t\t`name` varchar(128) NOT NULL default '',\n\t\t`associated_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`variation_id` bigint(20) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `associated_id` (`associated_id`),\n\t\tKEY `variation_id` (`variation_id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."variation_priceandstock`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'variation_priceandstock';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "variation_priceandstock` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`product_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`variation_id_1` bigint(20) unsigned NOT NULL default '0',\n\t\t`variation_id_2` bigint(20) unsigned NOT NULL default '0',\n\t\t`stock` bigint(20) unsigned NOT NULL default '0',\n\t\t`price` varchar(32) NOT NULL default '0',\n\t\t`file` varchar(1) NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `product_id` (`product_id`),\n\t\tKEY `variation_id_1` (`variation_id_1`,`variation_id_2`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."variation_values`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'variation_values';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "variation_values` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`name` varchar(128) NOT NULL default '',\n\t\t`variation_id` bigint(20) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `variation_id` (`variation_id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."variation_values_associations`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'variation_values_associations';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "variation_values_associations` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`product_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`value_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`quantity` int(11) NOT NULL default '0',\n\t\t`price` varchar(32) NOT NULL default '0',\n\t\t`visible` varchar(1) NOT NULL default '0',\n\t\t`variation_id` bigint(20) unsigned NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `product_id` (`product_id`,`value_id`,`variation_id`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."wpsc_coupon_codes`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'wpsc_coupon_codes';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "wpsc_coupon_codes` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`coupon_code` varchar(255) default NULL,\n\t\t`value` bigint(20) unsigned NOT NULL default '0',\n\t\t`is-percentage` char(1) NOT NULL default '0',\n\t\t`use-once` char(1) NOT NULL default '0',\n\t\t`is-used` char(1) NOT NULL default '0',\n\t\t`active` char(1) NOT NULL default '1',\n\t\t`every_product` varchar(255) NOT NULL,\n\t\t`start` datetime NOT NULL,\n\t\t`expiry` datetime NOT NULL,\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `coupon_code` (`coupon_code`),\n\t\tKEY `active` (`active`),\n\t\tKEY `start` (`start`),\n\t\tKEY `expiry` (`expiry`)\n\t) TYPE=MyISAM ;\n\t";
    // Table structure for table `".$wpdb->prefix."wpsc_logged_subscriptions`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'wpsc_logged_subscriptions';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "wpsc_logged_subscriptions` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`cart_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`user_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`length` varchar(64) NOT NULL default '0',\n\t\t`start_time` varchar(64) NOT NULL default '0',\n\t\t`active` varchar(1) NOT NULL default '0',\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `cart_id` (`cart_id`),\n\t\tKEY `user_id` (`user_id`),\n\t\tKEY `start_time` (`start_time`)\n\t) TYPE=MyISAM;\n\t";
    // Table structure for table `".$wpdb->prefix."wpsc_productmeta`
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'wpsc_productmeta';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "wpsc_productmeta` (\n\t\t`id` bigint(20) unsigned NOT NULL auto_increment,\n\t\t`product_id` bigint(20) unsigned NOT NULL default '0',\n\t\t`meta_key` varchar(255) default NULL,\n\t\t`meta_value` longtext,\n\t\tPRIMARY KEY  (`id`),\n\t\tKEY `product_id` (`product_id`),\n\t\tKEY `meta_key` (`meta_key`)\n\t) TYPE=MyISAM ;\n\t";
    $num++;
    $wpsc_tables[$num]['table_name'] = $wpdb->prefix . 'wpsc_categorisation_groups';
    $wpsc_tables[$num]['table_sql'] = "CREATE TABLE `" . $wpdb->prefix . "wpsc_categorisation_groups` (\n  `id` bigint(20) unsigned NOT NULL auto_increment,\n  `name` varchar(255) NOT NULL,\n  `description` text NOT NULL,\n  `active` varchar(1) NOT NULL default '1',\n  `default` varchar(1) NOT NULL default '0',\n  PRIMARY KEY  (`id`),\n  KEY `group_name` (`name`)\n) ENGINE=MyISAM ;\n\t";
    // and here is where the tables are added to the database, fairly simple, if it doesnt find the table, it makes it
    foreach ($wpsc_tables as $wpsc_table) {
        if (!$wpdb->get_var("SHOW TABLES LIKE '{$wpsc_table['table_name']}'")) {
            $wpdb->query($wpsc_table['table_sql']);
        }
    }
    wpsc_create_upload_directories();
    require dirname(__FILE__) . "/currency_list.php";
    /*
    Updates from old versions, 
    */
    if (get_option('wpsc_version') <= 3.5) {
        include_once 'updates/update-to-3.5.0.php';
    }
    //
    //   if((get_option('wpsc_version') < 3.5 ) || ((get_option('wpsc_version') == 3.5 ) && (get_option('wpsc_minor_version') <= 2))) {
    include_once 'updates/update-to-3.5.2.php';
    //     }
    include_once 'updates/update-to-3.5.2.php';
    include_once 'updates/update-to-3.6.0.php';
    include_once 'updates/update-to-3.6.4.php';
    /* all code to add new database tables and columns must be above here */
    if (get_option('wpsc_version') < WPSC_VERSION || get_option('wpsc_version') == WPSC_VERSION && get_option('wpsc_minor_version') < WPSC_MINOR_VERSION) {
        update_option('wpsc_version', WPSC_VERSION);
        update_option('wpsc_minor_version', WPSC_MINOR_VERSION);
    }
    $currency_data = $wpdb->get_var("SELECT COUNT(*) AS `count` FROM `" . $wpdb->prefix . "currency_list`");
    if ($currency_data == 0) {
        $currency_array = explode("\n", $currency_sql);
        foreach ($currency_array as $currency_row) {
            $wpdb->query($currency_row);
        }
    }
    $add_initial_category = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . $wpdb->prefix . "product_categories`;", ARRAY_A);
    if ($add_initial_category[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `{$wpdb->prefix}wpsc_categorisation_groups` (`id`, `name`, `description`, `active`, `default`) VALUES (1, 'Categories', 'Product Categories', '1', '1')");
        $wpdb->query("INSERT INTO `{$wpdb->prefix}wpsc_categorisation_groups` (`id`, `name`, `description`, `active`, `default`) VALUES (2, 'Brands', 'Product Brands', '1', '0')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "product_categories` (`group_id`, `name` , `description`, `active`) VALUES ('1', '" . TXT_WPSC_EXAMPLECATEGORY . "', '" . TXT_WPSC_EXAMPLEDETAILS . "', '1');");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "product_categories` (`group_id`, `name` , `description`, `active`) VALUES ('2', '" . TXT_WPSC_EXAMPLEBRAND . "', '" . TXT_WPSC_EXAMPLEDETAILS . "', '1');");
    }
    $purchase_statuses_data = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . $wpdb->prefix . "purchase_statuses`", ARRAY_A);
    if ($purchase_statuses_data[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "purchase_statuses` (`name` , `active` , `colour` ) \n    VALUES\n    ('" . TXT_WPSC_RECEIVED . "', '1', ''),\n    ('" . TXT_WPSC_ACCEPTED_PAYMENT . "', '1', ''),\n    ('" . TXT_WPSC_JOB_DISPATCHED . "', '1', ''),\n    ('" . TXT_WPSC_PROCESSED . "', '1', '');");
    }
    $check_category_assoc = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . $wpdb->prefix . "item_category_associations`;", ARRAY_A);
    if ($check_category_assoc[0]['count'] == 0) {
        $sql = "SELECT * FROM `" . $wpdb->prefix . "product_list` WHERE `active`=1";
        $product_list = $wpdb->get_results($sql, ARRAY_A);
        foreach ((array) $product_list as $product) {
            $results = $wpdb->query("INSERT INTO `" . $wpdb->prefix . "item_category_associations` (`product_id` , `category_id` ) VALUES ('" . $product['id'] . "', '" . $product['category'] . "');");
        }
    }
    $add_regions = $wpdb->get_var("SELECT COUNT(*) AS `count` FROM `" . $wpdb->prefix . "region_tax`");
    // exit($add_regions);
    if ($add_regions < 1) {
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Alberta', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'British Columbia', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Manitoba', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'New Brunswick', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Newfoundland', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Northwest Territories', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Nova Scotia', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Nunavut', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Ontario', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Prince Edward Island', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Quebec', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Saskatchewan', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '100', 'Yukon', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Alabama', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Alaska', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Arizona', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Arkansas', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'California', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Colorado', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Connecticut', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Delaware', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Florida', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Georgia', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Hawaii', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Idaho', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Illinois', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Indiana', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Iowa', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Kansas', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Kentucky', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Louisiana', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Maine', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Maryland', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Massachusetts', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Michigan', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Minnesota', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Mississippi', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Missouri', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Montana', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Nebraska', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Nevada', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'New Hampshire', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'New Jersey', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'New Mexico', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'New York', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'North Carolina', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'North Dakota', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Ohio', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Oklahoma', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Oregon', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Pennsylvania', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Rhode Island', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'South Carolina', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'South Dakota', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Tennessee', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Texas', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Utah', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Vermont', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Virginia', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Washington', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Washington DC', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'West Virginia', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Wisconsin', '0.00')");
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "region_tax` ( `country_id` , `name` , `tax` ) VALUES ( '136', 'Wyoming', '0.00')");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'AL' WHERE `name` IN('Alabama')LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'AK' WHERE `name` IN('Alaska') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'AZ' WHERE `name` IN('Arizona') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'AR' WHERE `name` IN('Arkansas') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'CA' WHERE `name` IN('California') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'CO' WHERE `name` IN('Colorado') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'CT' WHERE `name` IN('Connecticut') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'DE' WHERE `name` IN('Delaware') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'FL' WHERE `name` IN('Florida') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'GA' WHERE `name` IN('Georgia')  LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'HI' WHERE `name` IN('Hawaii')  LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'ID' WHERE`name` IN('Idaho')  LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'IL' WHERE `name` IN('Illinois')  LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'IN' WHERE `name` IN('Indiana')  LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'IA' WHERE `name` IN('Iowa')  LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'KS' WHERE `name` IN('Kansas')  LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'KY' WHERE `name` IN('Kentucky') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'LA' WHERE `name` IN('Louisiana') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'ME' WHERE `name` IN('Maine') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'MD' WHERE `name` IN('Maryland') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'MA' WHERE `name` IN('Massachusetts') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'MI' WHERE `name` IN('Michigan') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'MN' WHERE `name` IN('Minnesota') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'MS' WHERE `name` IN('Mississippi') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'MO' WHERE `name` IN('Missouri') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'MT' WHERE `name` IN('Montana') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'NE' WHERE `name` IN('Nebraska') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'NV' WHERE `name` IN('Nevada') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'NH' WHERE `name` IN('New Hampshire') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'NJ' WHERE `name` IN('New Jersey') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'NM' WHERE `name` IN('New Mexico') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'NY' WHERE `name` IN('New York') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'NC' WHERE `name` IN('North Carolina') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'ND' WHERE `name` IN('North Dakota') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'OH' WHERE `name` IN('Ohio') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'OK' WHERE `name` IN('Oklahoma') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'OR' WHERE `name` IN('Oregon') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'PA' WHERE `name` IN('Pennsylvania') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'RI' WHERE `name` IN('Rhode Island') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'SC' WHERE `name` IN('South Carolina') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'SD' WHERE `name` IN('South Dakota') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'TN' WHERE `name` IN('Tennessee') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'TX' WHERE `name` IN('Texas') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'UT' WHERE `name` IN('Utah') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'VT' WHERE `name` IN('Vermont') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'VA' WHERE `name` IN('Virginia') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'WA' WHERE `name` IN('Washington') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'DC' WHERE `name` IN('Washington DC') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'WV' WHERE `name` IN('West Virginia') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'WI' WHERE `name` IN('Wisconsin') LIMIT 1 ;");
        $wpdb->query("UPDATE `" . $wpdb->prefix . "region_tax` SET `code` = 'WY' WHERE `name` IN('Wyoming') LIMIT 1 ;");
    }
    $data_forms = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . $wpdb->prefix . "collect_data_forms`", ARRAY_A);
    if ($data_forms[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "collect_data_forms` ( `name`, `type`, `mandatory`, `display_log`, `default`, `active`, `order`) VALUES ( '" . TXT_WPSC_YOUR_BILLING_CONTACT_DETAILS . "', 'heading', '0', '0', '', '1', 1),\n\t( '" . TXT_WPSC_FIRSTNAME . "', 'text', '1', '1', '', '1', 2),\n\t( '" . TXT_WPSC_LASTNAME . "', 'text', '1', '1', '', '1', 3),\n\t( '" . TXT_WPSC_ADDRESS . "', 'address', '1', '0', '', '1', 4),\n\t( '" . TXT_WPSC_CITY . "', 'city', '1', '0', '', '1', 5),\n\t( '" . TXT_WPSC_COUNTRY . "', 'country', '1', '0', '', '1', 7),\n\t( '" . TXT_WPSC_POSTAL_CODE . "', 'text', '0', '0', '', '1', 8),\n\t( '" . TXT_WPSC_EMAIL . "', 'email', '1', '1', '', '1', 9),\n\t( '" . TXT_WPSC_DELIVER_TO_A_FRIEND . "', 'heading', '0', '0', '', '1', 10),\n\t( '" . TXT_WPSC_FIRSTNAME . "', 'text', '0', '0', '', '1', 11),\n\t( '" . TXT_WPSC_LASTNAME . "', 'text', '0', '0', '', '1', 12),\n\t( '" . TXT_WPSC_ADDRESS . "', 'address', '0', '0', '', '1', 13),\n\t( '" . TXT_WPSC_CITY . "', 'city', '0', '0', '', '1', 14),\n\t( '" . TXT_WPSC_STATE . "', 'text', '0', '0', '', '1', 15),\n\t( '" . TXT_WPSC_COUNTRY . "', 'delivery_country', '0', '0', '', '1', 16),\n\t( '" . TXT_WPSC_POSTAL_CODE . "', 'text', '0', '0', '', '1', 17);");
        update_option('country_form_field', $country_form_id[0]['id']);
        update_option('email_form_field', $email_form_id[0]['id']);
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "collect_data_forms` ( `name`, `type`, `mandatory`, `display_log`, `default`, `active`, `order` ) VALUES ( '" . TXT_WPSC_PHONE . "', 'text', '1', '0', '', '1', '8');");
    }
    $product_brands_data = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . $wpdb->prefix . "product_brands`", ARRAY_A);
    if ($product_brands_data[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `" . $wpdb->prefix . "product_brands` ( `name`, `description`, `active`, `order`) VALUES ( '" . TXT_WPSC_EXAMPLEBRAND . "','" . TXT_WPSC_EXAMPLEDETAILS . "', '1', '0');");
    }
    add_option('show_thumbnails', 1, TXT_WPSC_SHOWTHUMBNAILS, "yes");
    add_option('product_image_width', '', TXT_WPSC_PRODUCTIMAGEWIDTH, 'yes');
    add_option('product_image_height', '', TXT_WPSC_PRODUCTIMAGEHEIGHT, 'yes');
    add_option('category_image_width', '', TXT_WPSC_CATEGORYIMAGEWIDTH, 'yes');
    add_option('category_image_height', '', TXT_WPSC_CATEGORYIMAGEHEIGHT, 'yes');
    add_option('product_list_url', '', TXT_WPSC_PRODUCTLISTURL, 'yes');
    add_option('shopping_cart_url', '', TXT_WPSC_SHOPPINGCARTURL, 'yes');
    add_option('checkout_url', '', TXT_WPSC_CHECKOUTURL, 'yes');
    add_option('transact_url', '', TXT_WPSC_TRANSACTURL, 'yes');
    add_option('payment_gateway', '', TXT_WPSC_PAYMENTGATEWAY, 'yes');
    if (function_exists('register_sidebar')) {
        add_option('cart_location', '4', TXT_WPSC_CARTLOCATION, 'yes');
    } else {
        add_option('cart_location', '1', TXT_WPSC_CARTLOCATION, 'yes');
    }
    if (function_exists('register_sidebar')) {
        add_option('cart_location', '4', TXT_WPSC_CARTLOCATION, 'yes');
    } else {
        add_option('cart_location', '1', TXT_WPSC_CARTLOCATION, 'yes');
    }
    //add_option('show_categorybrands', '0', TXT_WPSC_SHOWCATEGORYBRANDS, 'yes');
    add_option('currency_type', '156', TXT_WPSC_CURRENCYTYPE, 'yes');
    add_option('currency_sign_location', '3', TXT_WPSC_CURRENCYSIGNLOCATION, 'yes');
    add_option('gst_rate', '1', TXT_WPSC_GSTRATE, 'yes');
    add_option('max_downloads', '1', TXT_WPSC_MAXDOWNLOADS, 'yes');
    add_option('display_pnp', '1', TXT_WPSC_DISPLAYPNP, 'yes');
    add_option('display_specials', '1', TXT_WPSC_DISPLAYSPECIALS, 'yes');
    add_option('do_not_use_shipping', '0', 'do_not_use_shipping', 'yes');
    add_option('postage_and_packaging', '0', TXT_WPSC_POSTAGEAND_PACKAGING, 'yes');
    add_option('purch_log_email', '', TXT_WPSC_PURCHLOGEMAIL, 'yes');
    add_option('return_email', '', TXT_WPSC_RETURNEMAIL, 'yes');
    add_option('terms_and_conditions', '', TXT_WPSC_TERMSANDCONDITIONS, 'yes');
    add_option('google_key', 'none', TXT_WPSC_GOOGLEMECHANTKEY, 'yes');
    add_option('google_id', 'none', TXT_WPSC_GOOGLEMECHANTID, 'yes');
    add_option('default_brand', 'none', TXT_WPSC_DEFAULTBRAND, 'yes');
    add_option('wpsc_default_category', 'none', TXT_WPSC_DEFAULTCATEGORY, 'yes');
    add_option('product_view', 'default', "", 'yes');
    add_option('add_plustax', 'default', "", '1');
    add_option('nzshpcrt_first_load', '0', "", 'yes');
    if (!(get_option('show_categorybrands') > 0 && get_option('show_categorybrands') < 3)) {
        update_option('show_categorybrands', 2);
    }
    //add_option('show_categorybrands', '0', TXT_WPSC_SHOWCATEGORYBRANDS, 'yes');
    /* PayPal options */
    add_option('paypal_business', '', TXT_WPSC_PAYPALBUSINESS, 'yes');
    add_option('paypal_url', '', TXT_WPSC_PAYPALURL, 'yes');
    //update_option('paypal_url', "https://www.sandbox.paypal.com/xclick");
    add_option('paypal_multiple_business', '', TXT_WPSC_PAYPALBUSINESS, 'yes');
    if (get_option('paypal_multiple_url') == null) {
        add_option('paypal_multiple_url', '', TXT_WPSC_PAYPALURL, 'yes');
        update_option('paypal_multiple_url', "https://www.paypal.com/cgi-bin/webscr");
    }
    add_option('product_ratings', '0', TXT_WPSC_SHOWPRODUCTRATINGS, 'yes');
    if (get_option('wpsc_selected_theme') == '') {
        add_option('wpsc_selected_theme', 'default', 'Selected Theme', 'yes');
        update_option('wpsc_selected_theme', "default");
    }
    if (!get_option('product_image_height')) {
        update_option('product_image_height', '96');
        update_option('product_image_width', '96');
    }
    if (!get_option('category_image_height')) {
        update_option('category_image_height', '96');
        update_option('category_image_width', '96');
    }
    if (!get_option('single_view_image_height')) {
        update_option('single_view_image_height', '128');
        update_option('single_view_image_width', '128');
    }
    wpsc_product_files_htaccess();
    /*
     * This part creates the pages and automatically puts their URLs into the options page.
     * As you can probably see, it is very easily extendable, just pop in your page and the deafult content in the array and you are good to go.
     */
    $post_date = date("Y-m-d H:i:s");
    $post_date_gmt = gmdate("Y-m-d H:i:s");
    $num = 0;
    $pages[$num]['name'] = 'products-page';
    $pages[$num]['title'] = TXT_WPSC_PRODUCTSPAGE;
    $pages[$num]['tag'] = '[productspage]';
    $pages[$num]['option'] = 'product_list_url';
    $num++;
    $pages[$num]['name'] = 'checkout';
    $pages[$num]['title'] = TXT_WPSC_CHECKOUT;
    $pages[$num]['tag'] = '[shoppingcart]';
    $pages[$num]['option'] = 'shopping_cart_url';
    //   $num++;
    //   $pages[$num]['name'] = 'enter-details';
    //   $pages[$num]['title'] = TXT_WPSC_ENTERDETAILS;
    //   $pages[$num]['tag'] = '[checkout]';
    //   $pages[2$num]['option'] = 'checkout_url';
    $num++;
    $pages[$num]['name'] = 'transaction-results';
    $pages[$num]['title'] = TXT_WPSC_TRANSACTIONRESULTS;
    $pages[$num]['tag'] = '[transactionresults]';
    $pages[$num]['option'] = 'transact_url';
    $num++;
    $pages[$num]['name'] = 'your-account';
    $pages[$num]['title'] = TXT_WPSC_YOUR_ACCOUNT;
    $pages[$num]['tag'] = '[userlog]';
    $pages[$num]['option'] = 'user_account_url';
    $newpages = false;
    $i = 0;
    $post_parent = 0;
    foreach ($pages as $page) {
        $check_page = $wpdb->get_row("SELECT * FROM `" . $wpdb->posts . "` WHERE `post_content` LIKE '%" . $page['tag'] . "%' LIMIT 1", ARRAY_A);
        if ($check_page == null) {
            if ($i == 0) {
                $post_parent = 0;
            } else {
                $post_parent = $first_id;
            }
            if ($wp_version >= 2.1) {
                $sql = "INSERT INTO " . $wpdb->posts . "\n        (post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order, post_type)\n        VALUES\n        ('1', '{$post_date}', '{$post_date_gmt}', '" . $page['tag'] . "', '', '" . $page['title'] . "', '', 'publish', 'closed', 'closed', '', '" . $page['name'] . "', '', '', '{$post_date}', '{$post_date_gmt}', '{$post_parent}', '0', 'page')";
            } else {
                $sql = "INSERT INTO " . $wpdb->posts . "\n        (post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order)\n        VALUES\n        ('1', '{$post_date}', '{$post_date_gmt}', '" . $page['tag'] . "', '', '" . $page['title'] . "', '', 'static', 'closed', 'closed', '', '" . $page['name'] . "', '', '', '{$post_date}', '{$post_date_gmt}', '{$post_parent}', '0')";
            }
            $wpdb->query($sql);
            $post_id = $wpdb->insert_id;
            if ($i == 0) {
                $first_id = $post_id;
            }
            $wpdb->query("UPDATE {$wpdb->posts} SET guid = '" . get_permalink($post_id) . "' WHERE ID = '{$post_id}'");
            update_option($page['option'], get_permalink($post_id));
            if ($page['option'] == 'shopping_cart_url') {
                update_option('checkout_url', get_permalink($post_id));
            }
            $newpages = true;
            $i++;
        }
    }
    if ($newpages == true) {
        wp_cache_delete('all_page_ids', 'pages');
        $wp_rewrite->flush_rules();
    }
    /* adds nice names for permalinks for products */
    $check_product_names = $wpdb->get_results("SELECT `" . $wpdb->prefix . "product_list`.`id`, `" . $wpdb->prefix . "product_list`.`name`, `" . $wpdb->prefix . "wpsc_productmeta`.`meta_key` FROM `" . $wpdb->prefix . "product_list` LEFT JOIN `" . $wpdb->prefix . "wpsc_productmeta` ON `" . $wpdb->prefix . "product_list`.`id` = `" . $wpdb->prefix . "wpsc_productmeta`.`product_id` WHERE (`" . $wpdb->prefix . "wpsc_productmeta`.`meta_key` IN ('url_name') AND  `" . $wpdb->prefix . "wpsc_productmeta`.`meta_value` IN (''))  OR ISNULL(`" . $wpdb->prefix . "wpsc_productmeta`.`meta_key`)");
    if ($check_product_names != null) {
        $sql_query = "SELECT `id`, `name` FROM `" . $wpdb->prefix . "product_list` WHERE `active` IN('1')";
        $sql_data = $wpdb->get_results($sql_query, ARRAY_A);
        foreach ((array) $sql_data as $datarow) {
            $tidied_name = trim($datarow['name']);
            $tidied_name = strtolower($tidied_name);
            $url_name = preg_replace(array("/(\\s)+/", "/[^\\w-]+/"), array("-", ''), $tidied_name);
            $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`meta_value`, '{$url_name}', '')) AS `max_number` FROM `" . $wpdb->prefix . "wpsc_productmeta` WHERE `meta_key` LIKE 'url_name' AND `meta_value` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
            $extension_number = '';
            if ($similar_names['count'] > 0) {
                $extension_number = (int) $similar_names['max_number'] + 1;
            }
            if (get_product_meta($datarow['id'], 'url_name') != false) {
                $current_url_name = get_product_meta($datarow['id'], 'url_name');
                if ($current_url_name[0] != $url_name) {
                    $url_name .= $extension_number;
                    update_product_meta($datarow['id'], 'url_name', $url_name);
                }
            } else {
                $url_name .= $extension_number;
                add_product_meta($datarow['id'], 'url_name', $url_name, true);
            }
        }
    }
    /* adds nice names for permalinks for categories */
    $check_category_names = $wpdb->get_results("SELECT DISTINCT `nice-name` FROM `" . $wpdb->prefix . "product_categories` WHERE `nice-name` IN ('') AND `active` IN ('1')");
    if ($check_category_names != null) {
        $sql_query = "SELECT `id`, `name` FROM `" . $wpdb->prefix . "product_categories` WHERE `active` IN('1')";
        $sql_data = $wpdb->get_results($sql_query, ARRAY_A);
        foreach ((array) $sql_data as $datarow) {
            $tidied_name = trim($datarow['name']);
            $tidied_name = strtolower($tidied_name);
            $url_name = preg_replace(array("/(\\s)+/", "/[^\\w-]+/"), array("-", ''), $tidied_name);
            $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`nice-name`, '{$url_name}', '')) AS `max_number` FROM `" . $wpdb->prefix . "product_categories` WHERE `nice-name` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
            $extension_number = '';
            if ($similar_names['count'] > 0) {
                $extension_number = (int) $similar_names['max_number'] + 1;
            }
            $url_name .= $extension_number;
            $wpdb->query("UPDATE `" . $wpdb->prefix . "product_categories` SET `nice-name` = '{$url_name}' WHERE `id` = '" . $datarow['id'] . "' LIMIT 1 ;");
        }
        $wp_rewrite->flush_rules();
    }
    /* Moves images to thumbnails directory */
    // this code should no longer be needed, as most people will be using a sufficiently new version
    $image_dir = WPSC_FILE_PATH . "/images/";
    $product_images = WPSC_IMAGE_DIR;
    $product_thumbnails = WPSC_THUMBNAIL_DIR;
    if (!is_dir($product_thumbnails)) {
        @mkdir($product_thumbnails, 0775);
    }
    $product_list = $wpdb->get_results("SELECT * FROM `" . $wpdb->prefix . "product_list` WHERE `image` != ''", ARRAY_A);
    foreach ((array) $product_list as $product) {
        if (!glob($product_thumbnails . $product['image'])) {
            $new_filename = $product['id'] . "_" . $product['image'];
            if (file_exists($image_dir . $product['image'])) {
                copy($image_dir . $product['image'], $product_thumbnails . $new_filename);
                if (file_exists($product_images . $product['image'])) {
                    copy($product_images . $product['image'], $product_images . $new_filename);
                }
                $wpdb->query("UPDATE `" . $wpdb->prefix . "product_list` SET `image` = '" . $new_filename . "' WHERE `id`='" . $product['id'] . "' LIMIT 1");
            } else {
                $imagedir = $product_thumbnails;
                $name = $new_filename;
                $new_image_path = $product_images . $product['image'];
                $imagepath = $product['image'];
                $height = get_option('product_image_height');
                $width = get_option('product_image_width');
                if (file_exists($product_images . $product['image'])) {
                    include "extra_image_processing.php";
                    copy($product_images . $product['image'], $product_images . $new_filename);
                    $wpdb->query("UPDATE `" . $wpdb->prefix . "product_list` SET `image` = '" . $new_filename . "' WHERE `id`='" . $product['id'] . "' LIMIT 1");
                }
            }
        }
    }
    // */
}
示例#10
0
/**
 * wpsc_resize_image_thumbnail function 
 *
 * @param integer product ID
 * @param integer the action to perform on the image
 * @param integer the width of the thumbnail image
 * @param integer the height of the thumbnail image
 * @param array the custom image array from $_FILES
 */
function wpsc_resize_image_thumbnail($product_id, $image_action = 0, $width = 0, $height = 0, $custom_image = null)
{
    global $wpdb;
    //exit("<pre>".print_r(func_get_args(), true)."</pre>");
    $image_id = $wpdb->get_var("SELECT `image` FROM `" . WPSC_TABLE_PRODUCT_LIST . "` WHERE `id` = '{$product_id}' LIMIT 1");
    $image = $wpdb->get_var("SELECT `image` FROM `" . WPSC_TABLE_PRODUCT_IMAGES . "` WHERE `id` = '{$image_id}' LIMIT 1");
    // check if there is an image that is supposed to be there.
    if ($image != '') {
        if (is_numeric($image)) {
        }
        // check that is really there
        if (file_exists(WPSC_IMAGE_DIR . $image)) {
            // if the width or height is less than 1, set the size to the default
            if (($width < 1 || $height < 1) && $image_action == 2) {
                $image_action = 1;
            }
            switch ($image_action) {
                case 0:
                    if (!file_exists(WPSC_THUMBNAIL_DIR . $image)) {
                        copy(WPSC_IMAGE_DIR . $image, WPSC_THUMBNAIL_DIR . $image);
                    }
                    break;
                case 1:
                    // if case 1, replace the provided size with the default size
                    $height = get_option('product_image_height');
                    $width = get_option('product_image_width');
                case 2:
                    // if case 2, use the provided size
                    $image_input = WPSC_IMAGE_DIR . $image;
                    $image_output = WPSC_THUMBNAIL_DIR . $image;
                    if ($width < 1) {
                        $width = 96;
                    }
                    if ($height < 1) {
                        $height = 96;
                    }
                    image_processing($image_input, $image_output, $width, $height);
                    update_product_meta($product_id, 'thumbnail_width', $width);
                    update_product_meta($product_id, 'thumbnail_height', $height);
                    break;
                case 3:
                    $custom_image_name = '';
                    if ($custom_image !== null) {
                        if (move_uploaded_file($custom_image, WPSC_THUMBNAIL_DIR . $image)) {
                            $custom_image_name = $wpdb->escape(basename($image));
                            $image_input = WPSC_THUMBNAIL_DIR . $image;
                            if (function_exists('getimagesize')) {
                                $imagedata = getimagesize($image_input);
                                update_product_meta($product_id, 'thumbnail_width', (int) $imagedata[0]);
                                update_product_meta($product_id, 'thumbnail_height', (int) $imagedata[1]);
                            }
                        }
                    }
                    break;
            }
            if (!file_exists(WPSC_IMAGE_DIR . $image)) {
                $wpdb->query("INSERT INTO `" . WPSC_TABLE_PRODUCT_IMAGES . "` SET `thumbnail_state` = '{$image_action}' WHERE `id`='{$product_id}' LIMIT 1");
                $sql = "INSERT INTO `" . WPSC_TABLE_PRODUCT_IMAGES . "` (`product_id`, `image`, `width`, `height`) VALUES ('{$product_id}', '{$image}', '{$width}', '{$height}' )";
                $wpdb->query($sql);
                $image_id = (int) $wpdb->insert_id;
            }
            $sql = "UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `thumbnail_state` = '{$image_action}', `image` = '{$image_id}', `thumbnail_image` = '{$custom_image_name}'  WHERE `id`='{$product_id}' LIMIT 1";
            //exit($sql);
            $wpdb->query($sql);
        } else {
            //if it is not, we need to unset the associated image
            //$wpdb->query("UPDATE `".WPSC_TABLE_PRODUCT_LIST."` SET `image` = '' WHERE `id`='{$product_id}' LIMIT 1");
            //$wpdb->query("INSERT INTO `".WPSC_TABLE_PRODUCT_IMAGES."` (`product_id`, `image`, `width`, `height`) VALUES ('{$product_id}', '{$image}', '{$width}', '{$height}' )");
        }
    }
}
/**
	* wpsc_decrement_claimed_stock method 
	*
	* @param float a price
	* @return string a price with a currency sign
*/
function wpsc_decrement_claimed_stock($purchase_log_id)
{
    global $wpdb;
    //processed
    $all_claimed_stock = $wpdb->get_results($wpdb->prepare("SELECT `cs`.`product_id`, `cs`.`stock_claimed`, `pl`.`id`, `pl`.`processed` FROM `" . WPSC_TABLE_CLAIMED_STOCK . "` `cs` JOIN `" . WPSC_TABLE_PURCHASE_LOGS . "` `pl` ON `cs`.`cart_id` = `pl`.`id` WHERE `cs`.`cart_id` = '%s'", $purchase_log_id));
    if (!empty($all_claimed_stock)) {
        switch ($all_claimed_stock[0]->processed) {
            case 3:
            case 4:
            case 5:
                foreach ((array) $all_claimed_stock as $claimed_stock) {
                    $product = get_post($claimed_stock->product_id);
                    $current_stock = get_post_meta($product->ID, '_wpsc_stock', true);
                    $remaining_stock = $current_stock - $claimed_stock->stock_claimed;
                    update_product_meta($product->ID, 'stock', $remaining_stock);
                    $product_meta = get_product_meta($product->ID, 'product_metadata', true);
                    if ($remaining_stock < 1 && $product_meta["unpublish_when_none_left"] == 1) {
                        wp_mail(get_option('purch_log_email'), sprintf(__('%s is out of stock', 'wpsc'), $product->post_title), sprintf(__('Remaining stock of %s is 0. Product was unpublished.', 'wpsc'), $product->post_title));
                        $wpdb->update($wpdb->posts, array('post_status' => 'draft'), array('ID' => $product->ID), '%s', '%d');
                    }
                }
            case 6:
                $wpdb->query($wpdb->prepare("DELETE FROM `" . WPSC_TABLE_CLAIMED_STOCK . "` WHERE `cart_id` IN (%s)", $purchase_log_id));
                break;
        }
    }
}
示例#12
0
/**
 * @todo - Should probably refactor this at some point - very procedural,
 *		   WAY too many foreach loops for my liking :)  But it does the trick
 *
 * @param <type> $term_id
 */
function save_term_prices($term_id)
{
    // First - Saves options from input
    if (isset($_POST['variation_price']) || isset($_POST["apply_to_current"])) {
        $term_prices = get_option('term_prices');
        $term_prices[$term_id]["price"] = $_POST["variation_price"];
        $term_prices[$term_id]["checked"] = isset($_POST["apply_to_current"]) ? "checked" : "unchecked";
        update_option('term_prices', $term_prices);
    }
    // Second - If box was checked, let's then check whether or not it was flat, differential, or percentile, then let's apply the pricing to every product appropriately
    if (isset($_POST["apply_to_current"])) {
        //Check for flat, percentile or differential
        $var_price_type = '';
        if (flat_price($_POST["variation_price"])) {
            $var_price_type = 'flat';
        } elseif (differential_price($_POST["variation_price"])) {
            $var_price_type = 'differential';
        } elseif (percentile_price($_POST["variation_price"])) {
            $var_price_type = 'percentile';
        }
        //Now, find all products with this term_id, update their pricing structure (terms returned include only parents at this point, we'll grab relevent children soon)
        $products_to_mod = get_objects_in_term($term_id, "wpsc-variation");
        $product_parents = array();
        foreach ((array) $products_to_mod as $get_parent) {
            $post = get_post($get_parent);
            if (!$post->post_parent) {
                $product_parents[] = $post->ID;
            }
        }
        //Now that we have all parent IDs with this term, we can get the children (only the ones that are also in $products_to_mod, we don't want to apply pricing to ALL kids)
        foreach ($product_parents as $parent) {
            $args = array('post_parent' => $parent, 'post_type' => 'wpsc-product');
            $children = get_children($args, ARRAY_A);
            foreach ($children as $childrens) {
                $parent = $childrens["post_parent"];
                $children_ids[$parent][] = $childrens["ID"];
                $children_ids[$parent] = array_intersect($children_ids[$parent], $products_to_mod);
            }
        }
        //Got the right kids, let's grab their parent pricing and modify their pricing based on var_price_type
        foreach ((array) $children_ids as $parents => $kids) {
            $kids = array_values($kids);
            $parent_pricing = get_product_meta($parents, "price", true);
            foreach ($kids as $kiddos) {
                $child_pricing = get_product_meta($kiddos, "price", true);
                if ($var_price_type == 'flat') {
                    update_product_meta($kiddos, "price", floatval($_POST["variation_price"]));
                } elseif ($var_price_type == 'percentile') {
                    //Are we decreasing or increasing the price?
                    if (strchr($_POST["variation_price"], '-')) {
                        $positive = false;
                    } else {
                        $positive = true;
                    }
                    //Now, let's get the parent product price, +/- by the percentage given
                    $percentage = absint($_POST["variation_price"]) / 100;
                    if ($positive) {
                        $price = $parent_pricing + $parent_pricing * $percentage;
                    } else {
                        $price = $parent_pricing - $parent_pricing * $percentage;
                    }
                    update_product_meta($kiddos, "price", $price);
                } elseif ($var_price_type == 'differential') {
                    //Are we decreasing or increasing the price?
                    if (strchr($_POST["variation_price"], '-')) {
                        $positive = false;
                    } else {
                        $positive = true;
                    }
                    //Now, let's get the parent product price, +/- by the differential given
                    $differential = absint($_POST["variation_price"]);
                    if ($positive) {
                        $price = $parent_pricing + $differential;
                    } else {
                        $price = $parent_pricing - $differential;
                    }
                    update_product_meta($kiddos, "price", $price);
                }
            }
        }
    }
}
/**
 * wpsc_decrement_claimed_stock method
 *
 * @param float a price
 * @return string a price with a currency sign
 */
function wpsc_decrement_claimed_stock($purchase_log_id)
{
    // Processed
    $claimed_query = new WPSC_Claimed_Stock(array('cart_id' => $purchase_log_id));
    $all_claimed_stock = $claimed_query->get_purchase_log_claimed_stock();
    do_action('wpsc_pre_decrement_claimed_stock', $purchase_log_id, $claimed_query);
    if (!empty($all_claimed_stock)) {
        do_action('wpsc_decrement_claimed_stock_' . $all_claimed_stock[0]->processed, $purchase_log_id, $claimed_query);
        do_action('wpsc_decrement_claimed_stock', $purchase_log_id, $claimed_query);
        switch ($all_claimed_stock[0]->processed) {
            case 3:
            case 4:
            case 5:
                foreach ((array) $all_claimed_stock as $claimed_stock) {
                    $product = get_post($claimed_stock->product_id);
                    $current_stock = get_post_meta($product->ID, '_wpsc_stock', true);
                    $remaining_stock = $current_stock - $claimed_stock->stock_claimed;
                    update_product_meta($product->ID, 'stock', $remaining_stock);
                    $product_meta = get_product_meta($product->ID, 'product_metadata', true);
                    if ($remaining_stock < 1) {
                        // this is to make sure after upgrading to 3.8.9, products will have
                        // "notify_when_none_left" enabled by default if "unpublish_when_none_left"
                        // is enabled.
                        if (!isset($product_meta['notify_when_none_left'])) {
                            $product_meta['unpublish_when_none_left'] = 0;
                            if (!empty($product_meta['unpublish_when_none_left'])) {
                                $product_meta['unpublish_when_none_left'] = 1;
                                update_product_meta($product->ID, 'product_metadata', $product_meta);
                            }
                        }
                        $email_message = sprintf(__('The product "%s" is out of stock.', 'wp-e-commerce'), $product->post_title);
                        if (!empty($product_meta["unpublish_when_none_left"])) {
                            $result = wp_update_post(array('ID' => $product->ID, 'post_status' => 'draft'));
                            if ($result) {
                                $email_message = sprintf(__('The product "%s" is out of stock and has been unpublished.', 'wp-e-commerce'), $product->post_title);
                            }
                        }
                        if ($product_meta["notify_when_none_left"] == 1) {
                            wp_mail(get_option('purch_log_email'), sprintf(__('%s is out of stock', 'wp-e-commerce'), $product->post_title), $email_message);
                        }
                    }
                }
            case 6:
                $claimed_query = new WPSC_Claimed_Stock(array('cart_id' => $purchase_log_id));
                $claimed_query->clear_claimed_stock(0);
                break;
        }
    }
}
示例#14
0
function wpsc_install()
{
    global $wpdb, $user_level, $wp_rewrite, $wp_version;
    $table_name = $wpdb->prefix . "wpsc_product_list";
    $first_install = false;
    $result = mysql_list_tables(DB_NAME);
    $tables = array();
    while ($row = mysql_fetch_row($result)) {
        $tables[] = $row[0];
    }
    if (!in_array($table_name, $tables)) {
        $first_install = true;
        add_option('wpsc_purchaselogs_fixed', true);
    }
    if (get_option('wpsc_version') == null) {
        add_option('wpsc_version', WPSC_VERSION, 'wpsc_version', 'yes');
    }
    // run the create or update code here.
    wpsc_create_or_update_tables();
    wpsc_create_upload_directories();
    if (!wp_get_schedule("wpsc_hourly_cron_tasks")) {
        wp_schedule_event(time(), 'hourly', 'wpsc_hourly_cron_tasks');
    }
    if (!wp_get_schedule("wpsc_daily_cron_tasks")) {
        wp_schedule_event(time(), 'daily', 'wpsc_daily_cron_tasks');
    }
    //wp_get_schedule( $hook, $args )
    /* all code to add new database tables and columns must be above here */
    if (get_option('wpsc_version') < WPSC_VERSION || get_option('wpsc_version') == WPSC_VERSION && get_option('wpsc_minor_version') < WPSC_MINOR_VERSION) {
        update_option('wpsc_version', WPSC_VERSION);
        update_option('wpsc_minor_version', WPSC_MINOR_VERSION);
    }
    $add_initial_category = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "`;", ARRAY_A);
    if ($add_initial_category[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` (`id`, `name`, `description`, `active`, `default`) VALUES (1, 'Categories', 'Product Categories', '1', '1')");
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` (`id`, `name`, `description`, `active`, `default`) VALUES (2, 'Brands', 'Product Brands', '1', '0')");
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` (`group_id`, `name` , `description`, `active`) VALUES ('1', '" . __('Example category', 'wpsc') . "', '" . __('Example details', 'wpsc') . "', '1');");
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` (`group_id`, `name` , `description`, `active`) VALUES ('2', '" . __('Example Brand', 'wpsc') . "', '" . __('Example details', 'wpsc') . "', '1');");
    }
    $purchase_statuses_data = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . WPSC_TABLE_PURCHASE_STATUSES . "`", ARRAY_A);
    if ($purchase_statuses_data[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_PURCHASE_STATUSES . "` (`name` , `active` , `colour` ) \r\n    VALUES\r\n    ('" . __('Order Received', 'wpsc') . "', '1', ''),\r\n    ('" . __('Accepted Payment', 'wpsc') . "', '1', ''),\r\n    ('" . __('Job Dispatched', 'wpsc') . "', '1', ''),\r\n    ('" . __('Closed Order', 'wpsc') . "', '1', '');");
    }
    $check_category_assoc = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "`;", ARRAY_A);
    if ($check_category_assoc[0]['count'] == 0) {
        $sql = "SELECT * FROM `" . WPSC_TABLE_PRODUCT_LIST . "` WHERE `active`=1";
        $product_list = $wpdb->get_results($sql, ARRAY_A);
        foreach ((array) $product_list as $product) {
            $results = $wpdb->query("INSERT INTO `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "` (`product_id` , `category_id` ) VALUES ('" . $product['id'] . "', '" . $product['category'] . "');");
        }
    }
    add_option('show_thumbnails', 1, __('Show Thumbnails', 'wpsc'), "yes");
    add_option('product_image_width', '', __('product image width', 'wpsc'), 'yes');
    add_option('product_image_height', '', __('product image height', 'wpsc'), 'yes');
    add_option('category_image_width', '', __('product group image width', 'wpsc'), 'yes');
    add_option('category_image_height', '', __('product group image height', 'wpsc'), 'yes');
    add_option('product_list_url', '', __('The location of the product list', 'wpsc'), 'yes');
    add_option('shopping_cart_url', '', __('The location of the shopping cart', 'wpsc'), 'yes');
    add_option('checkout_url', '', __('The location of the checkout page', 'wpsc'), 'yes');
    add_option('transact_url', '', __('The location of the transaction detail page', 'wpsc'), 'yes');
    add_option('payment_gateway', '', __('The payment gateway to use', 'wpsc'), 'yes');
    if (function_exists('register_sidebar')) {
        add_option('cart_location', '4', __('Cart Location', 'wpsc'), 'yes');
    } else {
        add_option('cart_location', '1', __('Cart Location', 'wpsc'), 'yes');
    }
    if (function_exists('register_sidebar')) {
        add_option('cart_location', '4', __('Cart Location', 'wpsc'), 'yes');
    } else {
        add_option('cart_location', '1', __('Cart Location', 'wpsc'), 'yes');
    }
    //add_option('show_categorybrands', '0', __('Display categories or brands or both', 'wpsc'), 'yes');
    add_option('currency_type', '156', __('Currency type', 'wpsc'), 'yes');
    add_option('currency_sign_location', '3', __('Currency sign location', 'wpsc'), 'yes');
    add_option('gst_rate', '1', __('the GST rate', 'wpsc'), 'yes');
    add_option('max_downloads', '1', __('the download limit', 'wpsc'), 'yes');
    add_option('display_pnp', '1', __('Display or hide postage and packaging', 'wpsc'), 'yes');
    add_option('display_specials', '1', __('Display or hide specials on the sidebar', 'wpsc'), 'yes');
    add_option('do_not_use_shipping', '1', 'do_not_use_shipping', 'no');
    add_option('postage_and_packaging', '0', __('Default postage and packaging', 'wpsc'), 'yes');
    add_option('purch_log_email', '', __('Email address that purchase log is sent to', 'wpsc'), 'yes');
    add_option('return_email', '', __('Email address that purchase reports are sent from', 'wpsc'), 'yes');
    add_option('terms_and_conditions', '', __('Checkout terms and conditions', 'wpsc'), 'yes');
    add_option('google_key', 'none', __('Google Merchant Key', 'wpsc'), 'yes');
    add_option('google_id', 'none', __('Google Merchant ID', 'wpsc'), 'yes');
    add_option('default_brand', 'none', __('Default Brand', 'wpsc'), 'yes');
    add_option('wpsc_default_category', 'all', __('Select what product group you want to display on the products page', 'wpsc'), 'yes');
    add_option('product_view', 'default', "", 'yes');
    add_option('add_plustax', 'default', "", '1');
    add_option('nzshpcrt_first_load', '0', "", 'yes');
    if (!(get_option('show_categorybrands') > 0 && get_option('show_categorybrands') < 3)) {
        update_option('show_categorybrands', 2);
    }
    //add_option('show_categorybrands', '0', __('Display categories or brands or both', 'wpsc'), 'yes');
    /* PayPal options */
    add_option('paypal_business', '', __('paypal business', 'wpsc'), 'yes');
    add_option('paypal_url', '', __('paypal url', 'wpsc'), 'yes');
    add_option('paypal_ipn', '1', __('paypal url', 'wpsc'), 'yes');
    //update_option('paypal_url', "https://www.sandbox.paypal.com/xclick");
    add_option('paypal_multiple_business', '', __('paypal business', 'wpsc'), 'yes');
    if (get_option('paypal_multiple_url') == null) {
        add_option('paypal_multiple_url', __('paypal url', 'wpsc'), 'yes');
        update_option('paypal_multiple_url', "https://www.paypal.com/cgi-bin/webscr");
    }
    add_option('product_ratings', '0', __('Show Product Ratings', 'wpsc'), 'yes');
    add_option('wpsc_email_receipt', __('Thank you for purchasing with %shop_name%, any items to be shipped will be processed as soon as possible, any items that can be downloaded can be downloaded using the links on this page.All prices include tax and postage and packaging where applicable.You ordered these items:%product_list%%total_shipping%%total_price%', 'wpsc'), 'yes');
    add_option('wpsc_email_admin', __('%product_list%%total_shipping%%total_price%', 'wpsc'), 'yes');
    if (get_option('wpsc_selected_theme') == '') {
        add_option('wpsc_selected_theme', 'default', 'Selected Theme', 'yes');
        update_option('wpsc_selected_theme', "default");
    }
    if (!get_option('product_image_height')) {
        update_option('product_image_height', '96');
        update_option('product_image_width', '96');
    }
    if (!get_option('category_image_height')) {
        update_option('category_image_height', '96');
        update_option('category_image_width', '96');
    }
    if (!get_option('single_view_image_height')) {
        update_option('single_view_image_height', '128');
        update_option('single_view_image_width', '128');
    }
    if (!get_option('wpsc_gallery_image_height')) {
        update_option('wpsc_gallery_image_height', '96');
        update_option('wpsc_gallery_image_width', '96');
    }
    if (!is_array(get_option('custom_gateway_options'))) {
        update_option('custom_gateway_options', array('testmode'));
    }
    add_option("wpsc_category_url_cache", array(), '', 'yes');
    wpsc_product_files_htaccess();
    /*
     * This part creates the pages and automatically puts their URLs into the options page.
     * As you can probably see, it is very easily extendable, just pop in your page and the deafult content in the array and you are good to go.
     */
    $post_date = date("Y-m-d H:i:s");
    $post_date_gmt = gmdate("Y-m-d H:i:s");
    $num = 0;
    $pages[$num]['name'] = 'products-page';
    $pages[$num]['title'] = __('Products Page', 'wpsc');
    $pages[$num]['tag'] = '[productspage]';
    $pages[$num]['option'] = 'product_list_url';
    $num++;
    $pages[$num]['name'] = 'checkout';
    $pages[$num]['title'] = __('Checkout', 'wpsc');
    $pages[$num]['tag'] = '[shoppingcart]';
    $pages[$num]['option'] = 'shopping_cart_url';
    //   $num++;
    //   $pages[$num]['name'] = 'enter-details';
    //   $pages[$num]['title'] = __('Enter Your Details', 'wpsc');
    //   $pages[$num]['tag'] = '[checkout]';
    //   $pages[2$num]['option'] = 'checkout_url';
    $num++;
    $pages[$num]['name'] = 'transaction-results';
    $pages[$num]['title'] = __('Transaction Results', 'wpsc');
    $pages[$num]['tag'] = '[transactionresults]';
    $pages[$num]['option'] = 'transact_url';
    $num++;
    $pages[$num]['name'] = 'your-account';
    $pages[$num]['title'] = __('Your Account', 'wpsc');
    $pages[$num]['tag'] = '[userlog]';
    $pages[$num]['option'] = 'user_account_url';
    $newpages = false;
    $i = 0;
    $post_parent = 0;
    foreach ($pages as $page) {
        $check_page = $wpdb->get_row("SELECT * FROM `" . $wpdb->posts . "` WHERE `post_content` LIKE '%" . $page['tag'] . "%'  AND `post_type` NOT IN('revision') LIMIT 1", ARRAY_A);
        if ($check_page == null) {
            if ($i == 0) {
                $post_parent = 0;
            } else {
                $post_parent = $first_id;
            }
            if ($wp_version >= 2.1) {
                $sql = "INSERT INTO " . $wpdb->posts . "\r\n        (post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order, post_type)\r\n        VALUES\r\n        ('1', '{$post_date}', '{$post_date_gmt}', '" . $page['tag'] . "', '', '" . $page['title'] . "', '', 'publish', 'closed', 'closed', '', '" . $page['name'] . "', '', '', '{$post_date}', '{$post_date_gmt}', '{$post_parent}', '0', 'page')";
            } else {
                $sql = "INSERT INTO " . $wpdb->posts . "\r\n        (post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order)\r\n        VALUES\r\n        ('1', '{$post_date}', '{$post_date_gmt}', '" . $page['tag'] . "', '', '" . $page['title'] . "', '', 'static', 'closed', 'closed', '', '" . $page['name'] . "', '', '', '{$post_date}', '{$post_date_gmt}', '{$post_parent}', '0')";
            }
            $wpdb->query($sql);
            $post_id = $wpdb->insert_id;
            if ($i == 0) {
                $first_id = $post_id;
            }
            $wpdb->query("UPDATE {$wpdb->posts} SET guid = '" . get_permalink($post_id) . "' WHERE ID = '{$post_id}'");
            update_option($page['option'], get_permalink($post_id));
            if ($page['option'] == 'shopping_cart_url') {
                update_option('checkout_url', get_permalink($post_id));
            }
            $newpages = true;
            $i++;
        }
    }
    if ($newpages == true) {
        wp_cache_delete('all_page_ids', 'pages');
        $wp_rewrite->flush_rules();
    }
    /* adds nice names for permalinks for products */
    $check_product_names = $wpdb->get_results("SELECT `" . WPSC_TABLE_PRODUCT_LIST . "`.`id`, `" . WPSC_TABLE_PRODUCT_LIST . "`.`name`, `" . WPSC_TABLE_PRODUCTMETA . "`.`meta_key` FROM `" . WPSC_TABLE_PRODUCT_LIST . "` LEFT JOIN `" . WPSC_TABLE_PRODUCTMETA . "` ON `" . WPSC_TABLE_PRODUCT_LIST . "`.`id` = `" . WPSC_TABLE_PRODUCTMETA . "`.`product_id` WHERE (`" . WPSC_TABLE_PRODUCTMETA . "`.`meta_key` IN ('url_name') AND  `" . WPSC_TABLE_PRODUCTMETA . "`.`meta_value` IN (''))  OR ISNULL(`" . WPSC_TABLE_PRODUCTMETA . "`.`meta_key`)", ARRAY_A);
    if ($check_product_names != null) {
        foreach ((array) $check_product_names as $datarow) {
            $tidied_name = trim($datarow['name']);
            $tidied_name = strtolower($tidied_name);
            $url_name = sanitize_title($tidied_name);
            $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`meta_value`, '{$url_name}', '')) AS `max_number` FROM `" . WPSC_TABLE_PRODUCTMETA . "` WHERE `meta_key` LIKE 'url_name' AND `meta_value` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
            $extension_number = '';
            if ($similar_names['count'] > 0) {
                $extension_number = (int) $similar_names['max_number'] + 1;
            }
            if (get_product_meta($datarow['id'], 'url_name') != false) {
                $current_url_name = get_product_meta($datarow['id'], 'url_name');
                if ($current_url_name != $url_name) {
                    $url_name .= $extension_number;
                    update_product_meta($datarow['id'], 'url_name', $url_name);
                }
            } else {
                $url_name .= $extension_number;
                add_product_meta($datarow['id'], 'url_name', $url_name, true);
            }
        }
    }
    /* adds nice names for permalinks for categories */
    $check_category_names = $wpdb->get_results("SELECT DISTINCT `nice-name` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `nice-name` IN ('') AND `active` IN ('1')");
    if ($check_category_names != null) {
        $sql_query = "SELECT `id`, `name` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `active` IN('1')";
        $sql_data = $wpdb->get_results($sql_query, ARRAY_A);
        foreach ((array) $sql_data as $datarow) {
            $tidied_name = trim($datarow['name']);
            $tidied_name = strtolower($tidied_name);
            $url_name = sanitize_title($tidied_name);
            $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`nice-name`, '{$url_name}', '')) AS `max_number` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `nice-name` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
            $extension_number = '';
            if ($similar_names['count'] > 0) {
                $extension_number = (int) $similar_names['max_number'] + 1;
            }
            $url_name .= $extension_number;
            $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` SET `nice-name` = '{$url_name}' WHERE `id` = '" . $datarow['id'] . "' LIMIT 1 ;");
        }
        $wp_rewrite->flush_rules();
    }
    /* Moves images to thumbnails directory */
    // this code should no longer be needed, as most people will be using a sufficiently new version
    $image_dir = WPSC_FILE_PATH . "/images/";
    $product_images = WPSC_IMAGE_DIR;
    $product_thumbnails = WPSC_THUMBNAIL_DIR;
    if (!is_dir($product_thumbnails)) {
        @mkdir($product_thumbnails, 0775);
    }
    $product_list = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_PRODUCT_LIST . "` WHERE `image` != ''", ARRAY_A);
    foreach ((array) $product_list as $product) {
        if (!glob($product_thumbnails . $product['image'])) {
            $new_filename = $product['id'] . "_" . $product['image'];
            if (file_exists($image_dir . $product['image'])) {
                copy($image_dir . $product['image'], $product_thumbnails . $new_filename);
                if (file_exists($product_images . $product['image'])) {
                    copy($product_images . $product['image'], $product_images . $new_filename);
                }
                $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `image` = '" . $new_filename . "' WHERE `id`='" . $product['id'] . "' LIMIT 1");
            } else {
                $imagedir = $product_thumbnails;
                $name = $new_filename;
                $new_image_path = $product_images . $product['image'];
                $imagepath = $product['image'];
                $height = get_option('product_image_height');
                $width = get_option('product_image_width');
                if (file_exists($product_images . $product['image'])) {
                    include "extra_image_processing.php";
                    copy($product_images . $product['image'], $product_images . $new_filename);
                    $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `image` = '" . $new_filename . "' WHERE `id`='" . $product['id'] . "' LIMIT 1");
                }
            }
        }
    }
    // */
}
示例#15
0
function wpsc_mass_resize_thumbnails()
{
    global $wpdb;
    check_admin_referer('mass_resize');
    if (isset($_GET['wpsc_options'])) {
        foreach ($_GET['wpsc_options'] as $key => $value) {
            if ($value != get_option($key) and absint($value) > 0) {
                update_option($key, absint($value));
            }
        }
    }
    $height = get_option('product_image_height');
    $width = get_option('product_image_width');
    $product_data = $wpdb->get_results("SELECT `product`.`id`, `product`.`image` AS `image_id`, `images`.`image` AS `file`  FROM `" . WPSC_TABLE_PRODUCT_LIST . "` AS `product` INNER JOIN  `" . WPSC_TABLE_PRODUCT_IMAGES . "` AS `images` ON `product`.`image` = `images`.`id` WHERE `product`.`image` > 0 ", ARRAY_A);
    foreach ((array) $product_data as $product) {
        $image_input = WPSC_IMAGE_DIR . $product['file'];
        $image_output = WPSC_THUMBNAIL_DIR . $product['file'];
        if ($product['file'] != '' and file_exists($image_input)) {
            image_processing($image_input, $image_output, $width, $height);
            update_product_meta($product['id'], 'thumbnail_width', $width);
            update_product_meta($product['id'], 'thumbnail_height', $height);
        } else {
            $wpdb->query("DELETE FROM `" . WPSC_TABLE_PRODUCT_IMAGES . "` WHERE `id` IN('{$product['image_id']}') LIMIT 1");
            $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `image` = NULL WHERE `id` = '" . $product['id'] . "' LIMIT 1");
        }
    }
    //$wpdb->query("DELETE FROM `".WPSC_TABLE_PRODUCT_IMAGES."` WHERE `product_id` IN('0')");
    $_SESSION['wpsc_thumbnails_resized'] = true;
    $sendback = wp_get_referer();
    $sendback = add_query_arg('tab', $_SESSION['wpsc_settings_curr_page'], remove_query_arg('tab', $sendback));
    wp_redirect($sendback);
    exit;
}
示例#16
0
    $sql_query = "SELECT `id`, `name` FROM `" . $wpdb->prefix . "product_list` WHERE `active` IN('1')";
    $sql_data = $wpdb->get_results($sql_query, ARRAY_A);
    foreach ((array) $sql_data as $datarow) {
        $tidied_name = trim($datarow['name']);
        $tidied_name = strtolower($tidied_name);
        $url_name = preg_replace(array("/(\\s)+/", "/[^\\w-]+/"), array("-", ''), $tidied_name);
        $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`meta_value`, '{$url_name}', '')) AS `max_number` FROM `" . $wpdb->prefix . "wpsc_productmeta` WHERE `meta_key` LIKE 'url_name' AND `meta_value` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
        $extension_number = '';
        if ($similar_names['count'] > 0) {
            $extension_number = (int) $similar_names['max_number'] + 1;
        }
        if (get_product_meta($datarow['id'], 'url_name') != false) {
            $current_url_name = get_product_meta($datarow['id'], 'url_name');
            if ($current_url_name != $url_name) {
                $url_name .= $extension_number;
                update_product_meta($datarow['id'], 'url_name', $url_name);
            }
        } else {
            $url_name .= $extension_number;
            add_product_meta($datarow['id'], 'url_name', $url_name, true);
        }
    }
}
/* creates table to store data on what was bought with what however many times */
if ($wpdb->get_var("SHOW TABLES LIKE '" . $wpdb->prefix . "also_bought_product'") != $wpdb->prefix . "also_bought_product") {
    $wpsc_also_bought_product = "CREATE TABLE `" . $wpdb->prefix . "also_bought_product` (\n  `id` bigint(20) unsigned NOT NULL auto_increment,\n  `selected_product` bigint(20) unsigned NOT NULL default '0',\n  `associated_product` bigint(20) unsigned NOT NULL default '0',\n  `quantity` int(10) unsigned NOT NULL default '0',\n  PRIMARY KEY  (`id`)\n) TYPE=MyISAM;";
    $wpdb->query($wpsc_also_bought_product);
}
if (!$wpdb->get_results("SELECT `id` FROM `" . $wpdb->prefix . "also_bought_product`")) {
    /* inserts data on what was bought with what however many times */
    $product_ids = $wpdb->get_col("SELECT `id` FROM `" . $wpdb->prefix . "product_list` WHERE `active` IN('1')");
示例#17
0
function wpsc_mass_resize_thumbnails_and_clean_images()
{
    if (!current_user_can('manage_options')) {
        wp_die("You don't look like an administrator.");
    }
    global $wpdb;
    $height = get_option('product_image_height');
    $width = get_option('product_image_width');
    $product_data = $wpdb->get_results("SELECT `product`.`id`, `product`.`image` AS `image_id`, `images`.`image` AS `file`  FROM `" . WPSC_TABLE_PRODUCT_LIST . "` AS `product` INNER JOIN  `" . WPSC_TABLE_PRODUCT_IMAGES . "` AS `images` ON `product`.`image` = `images`.`id` WHERE `product`.`image` > 0 ", ARRAY_A);
    foreach ((array) $product_data as $product) {
        $image_input = WPSC_IMAGE_DIR . $product['file'];
        $image_output = WPSC_THUMBNAIL_DIR . $product['file'];
        if ($product['file'] != '' and file_exists($image_input)) {
            image_processing($image_input, $image_output, $width, $height);
            update_product_meta($product['id'], 'thumbnail_width', $width);
            update_product_meta($product['id'], 'thumbnail_height', $height);
        } else {
            $wpdb->query("DELETE FROM `" . WPSC_TABLE_PRODUCT_IMAGES . "` WHERE `id` IN('{$product['image_id']}') LIMIT 1");
            $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `image` = NULL WHERE `id` = '" . $product['id'] . "' LIMIT 1");
        }
    }
    $wpdb->query("DELETE FROM `" . WPSC_TABLE_PRODUCT_IMAGES . "` WHERE `product_id` IN('0')");
}
示例#18
0
function wpsc_install()
{
    global $wpdb, $user_level, $wp_rewrite, $wp_version;
    $table_name = $wpdb->prefix . "wpsc_product_list";
    $first_install = false;
    $result = mysql_list_tables(DB_NAME);
    $tables = array();
    while ($row = mysql_fetch_row($result)) {
        $tables[] = $row[0];
    }
    if (!in_array($table_name, $tables)) {
        $first_install = true;
        add_option('wpsc_purchaselogs_fixed', true);
    }
    if (get_option('wpsc_version') == null) {
        add_option('wpsc_version', WPSC_VERSION, 'wpsc_version', 'yes');
    }
    // run the create or update code here.
    wpsc_create_or_update_tables();
    wpsc_create_upload_directories();
    /* all code to add new database tables and columns must be above here */
    if (get_option('wpsc_version') < WPSC_VERSION || get_option('wpsc_version') == WPSC_VERSION && get_option('wpsc_minor_version') < WPSC_MINOR_VERSION) {
        update_option('wpsc_version', WPSC_VERSION);
        update_option('wpsc_minor_version', WPSC_MINOR_VERSION);
    }
    $add_initial_category = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "`;", ARRAY_A);
    if ($add_initial_category[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` (`id`, `name`, `description`, `active`, `default`) VALUES (1, 'Categories', 'Product Categories', '1', '1')");
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_CATEGORISATION_GROUPS . "` (`id`, `name`, `description`, `active`, `default`) VALUES (2, 'Brands', 'Product Brands', '1', '0')");
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` (`group_id`, `name` , `description`, `active`) VALUES ('1', '" . TXT_WPSC_EXAMPLECATEGORY . "', '" . TXT_WPSC_EXAMPLEDETAILS . "', '1');");
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` (`group_id`, `name` , `description`, `active`) VALUES ('2', '" . TXT_WPSC_EXAMPLEBRAND . "', '" . TXT_WPSC_EXAMPLEDETAILS . "', '1');");
    }
    $purchase_statuses_data = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . WPSC_TABLE_PURCHASE_STATUSES . "`", ARRAY_A);
    if ($purchase_statuses_data[0]['count'] == 0) {
        $wpdb->query("INSERT INTO `" . WPSC_TABLE_PURCHASE_STATUSES . "` (`name` , `active` , `colour` ) \n    VALUES\n    ('" . TXT_WPSC_RECEIVED . "', '1', ''),\n    ('" . TXT_WPSC_ACCEPTED_PAYMENT . "', '1', ''),\n    ('" . TXT_WPSC_JOB_DISPATCHED . "', '1', ''),\n    ('" . TXT_WPSC_PROCESSED . "', '1', '');");
    }
    $check_category_assoc = $wpdb->get_results("SELECT COUNT(*) AS `count` FROM `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "`;", ARRAY_A);
    if ($check_category_assoc[0]['count'] == 0) {
        $sql = "SELECT * FROM `" . WPSC_TABLE_PRODUCT_LIST . "` WHERE `active`=1";
        $product_list = $wpdb->get_results($sql, ARRAY_A);
        foreach ((array) $product_list as $product) {
            $results = $wpdb->query("INSERT INTO `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "` (`product_id` , `category_id` ) VALUES ('" . $product['id'] . "', '" . $product['category'] . "');");
        }
    }
    add_option('show_thumbnails', 1, TXT_WPSC_SHOWTHUMBNAILS, "yes");
    add_option('product_image_width', '', TXT_WPSC_PRODUCTIMAGEWIDTH, 'yes');
    add_option('product_image_height', '', TXT_WPSC_PRODUCTIMAGEHEIGHT, 'yes');
    add_option('category_image_width', '', TXT_WPSC_CATEGORYIMAGEWIDTH, 'yes');
    add_option('category_image_height', '', TXT_WPSC_CATEGORYIMAGEHEIGHT, 'yes');
    add_option('product_list_url', '', TXT_WPSC_PRODUCTLISTURL, 'yes');
    add_option('shopping_cart_url', '', TXT_WPSC_SHOPPINGCARTURL, 'yes');
    add_option('checkout_url', '', TXT_WPSC_CHECKOUTURL, 'yes');
    add_option('transact_url', '', TXT_WPSC_TRANSACTURL, 'yes');
    add_option('payment_gateway', '', TXT_WPSC_PAYMENTGATEWAY, 'yes');
    if (function_exists('register_sidebar')) {
        add_option('cart_location', '4', TXT_WPSC_CARTLOCATION, 'yes');
    } else {
        add_option('cart_location', '1', TXT_WPSC_CARTLOCATION, 'yes');
    }
    if (function_exists('register_sidebar')) {
        add_option('cart_location', '4', TXT_WPSC_CARTLOCATION, 'yes');
    } else {
        add_option('cart_location', '1', TXT_WPSC_CARTLOCATION, 'yes');
    }
    //add_option('show_categorybrands', '0', TXT_WPSC_SHOWCATEGORYBRANDS, 'yes');
    add_option('currency_type', '156', TXT_WPSC_CURRENCYTYPE, 'yes');
    add_option('currency_sign_location', '3', TXT_WPSC_CURRENCYSIGNLOCATION, 'yes');
    add_option('gst_rate', '1', TXT_WPSC_GSTRATE, 'yes');
    add_option('max_downloads', '1', TXT_WPSC_MAXDOWNLOADS, 'yes');
    add_option('display_pnp', '1', TXT_WPSC_DISPLAYPNP, 'yes');
    add_option('display_specials', '1', TXT_WPSC_DISPLAYSPECIALS, 'yes');
    add_option('do_not_use_shipping', '0', 'do_not_use_shipping', 'yes');
    add_option('postage_and_packaging', '0', TXT_WPSC_POSTAGEAND_PACKAGING, 'yes');
    add_option('purch_log_email', '', TXT_WPSC_PURCHLOGEMAIL, 'yes');
    add_option('return_email', '', TXT_WPSC_RETURNEMAIL, 'yes');
    add_option('terms_and_conditions', '', TXT_WPSC_TERMSANDCONDITIONS, 'yes');
    add_option('google_key', 'none', TXT_WPSC_GOOGLEMECHANTKEY, 'yes');
    add_option('google_id', 'none', TXT_WPSC_GOOGLEMECHANTID, 'yes');
    add_option('default_brand', 'none', TXT_WPSC_DEFAULTBRAND, 'yes');
    add_option('wpsc_default_category', 'all', TXT_WPSC_DEFAULTCATEGORY, 'yes');
    add_option('product_view', 'default', "", 'yes');
    add_option('add_plustax', 'default', "", '1');
    add_option('nzshpcrt_first_load', '0', "", 'yes');
    if (!(get_option('show_categorybrands') > 0 && get_option('show_categorybrands') < 3)) {
        update_option('show_categorybrands', 2);
    }
    //add_option('show_categorybrands', '0', TXT_WPSC_SHOWCATEGORYBRANDS, 'yes');
    /* PayPal options */
    add_option('paypal_business', '', TXT_WPSC_PAYPALBUSINESS, 'yes');
    add_option('paypal_url', '', TXT_WPSC_PAYPALURL, 'yes');
    add_option('paypal_ipn', '1', TXT_WPSC_PAYPALURL, 'yes');
    //update_option('paypal_url', "https://www.sandbox.paypal.com/xclick");
    add_option('paypal_multiple_business', '', TXT_WPSC_PAYPALBUSINESS, 'yes');
    if (get_option('paypal_multiple_url') == null) {
        add_option('paypal_multiple_url', TXT_WPSC_PAYPALURL, 'yes');
        update_option('paypal_multiple_url', "https://www.paypal.com/cgi-bin/webscr");
    }
    add_option('product_ratings', '0', TXT_WPSC_SHOWPRODUCTRATINGS, 'yes');
    add_option('wpsc_email_receipt', TXT_WPSC_DEFAULT_PURCHASE_RECEIPT, 'yes');
    add_option('wpsc_email_admin', TXT_WPSC_DEFAULT_PURCHASE_REPORT, 'yes');
    if (get_option('wpsc_selected_theme') == '') {
        add_option('wpsc_selected_theme', 'default', 'Selected Theme', 'yes');
        update_option('wpsc_selected_theme', "default");
    }
    if (!get_option('product_image_height')) {
        update_option('product_image_height', '96');
        update_option('product_image_width', '96');
    }
    if (!get_option('category_image_height')) {
        update_option('category_image_height', '96');
        update_option('category_image_width', '96');
    }
    if (!get_option('single_view_image_height')) {
        update_option('single_view_image_height', '128');
        update_option('single_view_image_width', '128');
    }
    if (!get_option('wpsc_gallery_image_height')) {
        update_option('wpsc_gallery_image_height', '96');
        update_option('wpsc_gallery_image_width', '96');
    }
    if (!is_array(get_option('custom_gateway_options'))) {
        update_option('custom_gateway_options', array('testmode'));
    }
    add_option("wpsc_category_url_cache", array(), '', 'yes');
    wpsc_product_files_htaccess();
    /*
     * This part creates the pages and automatically puts their URLs into the options page.
     * As you can probably see, it is very easily extendable, just pop in your page and the deafult content in the array and you are good to go.
     */
    $post_date = date("Y-m-d H:i:s");
    $post_date_gmt = gmdate("Y-m-d H:i:s");
    $num = 0;
    $pages[$num]['name'] = 'products-page';
    $pages[$num]['title'] = TXT_WPSC_PRODUCTSPAGE;
    $pages[$num]['tag'] = '[productspage]';
    $pages[$num]['option'] = 'product_list_url';
    $num++;
    $pages[$num]['name'] = 'checkout';
    $pages[$num]['title'] = TXT_WPSC_CHECKOUT;
    $pages[$num]['tag'] = '[shoppingcart]';
    $pages[$num]['option'] = 'shopping_cart_url';
    //   $num++;
    //   $pages[$num]['name'] = 'enter-details';
    //   $pages[$num]['title'] = TXT_WPSC_ENTERDETAILS;
    //   $pages[$num]['tag'] = '[checkout]';
    //   $pages[2$num]['option'] = 'checkout_url';
    $num++;
    $pages[$num]['name'] = 'transaction-results';
    $pages[$num]['title'] = TXT_WPSC_TRANSACTIONRESULTS;
    $pages[$num]['tag'] = '[transactionresults]';
    $pages[$num]['option'] = 'transact_url';
    $num++;
    $pages[$num]['name'] = 'your-account';
    $pages[$num]['title'] = TXT_WPSC_YOUR_ACCOUNT;
    $pages[$num]['tag'] = '[userlog]';
    $pages[$num]['option'] = 'user_account_url';
    $newpages = false;
    $i = 0;
    $post_parent = 0;
    foreach ($pages as $page) {
        $check_page = $wpdb->get_row("SELECT * FROM `" . $wpdb->posts . "` WHERE `post_content` LIKE '%" . $page['tag'] . "%'  AND `post_type` NOT IN('revision') LIMIT 1", ARRAY_A);
        if ($check_page == null) {
            if ($i == 0) {
                $post_parent = 0;
            } else {
                $post_parent = $first_id;
            }
            if ($wp_version >= 2.1) {
                $sql = "INSERT INTO " . $wpdb->posts . "\n        (post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order, post_type)\n        VALUES\n        ('1', '{$post_date}', '{$post_date_gmt}', '" . $page['tag'] . "', '', '" . $page['title'] . "', '', 'publish', 'closed', 'closed', '', '" . $page['name'] . "', '', '', '{$post_date}', '{$post_date_gmt}', '{$post_parent}', '0', 'page')";
            } else {
                $sql = "INSERT INTO " . $wpdb->posts . "\n        (post_author, post_date, post_date_gmt, post_content, post_content_filtered, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, pinged, post_modified, post_modified_gmt, post_parent, menu_order)\n        VALUES\n        ('1', '{$post_date}', '{$post_date_gmt}', '" . $page['tag'] . "', '', '" . $page['title'] . "', '', 'static', 'closed', 'closed', '', '" . $page['name'] . "', '', '', '{$post_date}', '{$post_date_gmt}', '{$post_parent}', '0')";
            }
            $wpdb->query($sql);
            $post_id = $wpdb->insert_id;
            if ($i == 0) {
                $first_id = $post_id;
            }
            $wpdb->query("UPDATE {$wpdb->posts} SET guid = '" . get_permalink($post_id) . "' WHERE ID = '{$post_id}'");
            update_option($page['option'], get_permalink($post_id));
            if ($page['option'] == 'shopping_cart_url') {
                update_option('checkout_url', get_permalink($post_id));
            }
            $newpages = true;
            $i++;
        }
    }
    if ($newpages == true) {
        wp_cache_delete('all_page_ids', 'pages');
        $wp_rewrite->flush_rules();
    }
    /* adds nice names for permalinks for products */
    $check_product_names = $wpdb->get_results("SELECT `" . WPSC_TABLE_PRODUCT_LIST . "`.`id`, `" . WPSC_TABLE_PRODUCT_LIST . "`.`name`, `" . WPSC_TABLE_PRODUCTMETA . "`.`meta_key` FROM `" . WPSC_TABLE_PRODUCT_LIST . "` LEFT JOIN `" . WPSC_TABLE_PRODUCTMETA . "` ON `" . WPSC_TABLE_PRODUCT_LIST . "`.`id` = `" . WPSC_TABLE_PRODUCTMETA . "`.`product_id` WHERE (`" . WPSC_TABLE_PRODUCTMETA . "`.`meta_key` IN ('url_name') AND  `" . WPSC_TABLE_PRODUCTMETA . "`.`meta_value` IN (''))  OR ISNULL(`" . WPSC_TABLE_PRODUCTMETA . "`.`meta_key`)", ARRAY_A);
    if ($check_product_names != null) {
        foreach ((array) $check_product_names as $datarow) {
            $tidied_name = trim($datarow['name']);
            $tidied_name = strtolower($tidied_name);
            $url_name = sanitize_title($tidied_name);
            $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`meta_value`, '{$url_name}', '')) AS `max_number` FROM `" . WPSC_TABLE_PRODUCTMETA . "` WHERE `meta_key` LIKE 'url_name' AND `meta_value` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
            $extension_number = '';
            if ($similar_names['count'] > 0) {
                $extension_number = (int) $similar_names['max_number'] + 1;
            }
            if (get_product_meta($datarow['id'], 'url_name') != false) {
                $current_url_name = get_product_meta($datarow['id'], 'url_name');
                if ($current_url_name != $url_name) {
                    $url_name .= $extension_number;
                    update_product_meta($datarow['id'], 'url_name', $url_name);
                }
            } else {
                $url_name .= $extension_number;
                add_product_meta($datarow['id'], 'url_name', $url_name, true);
            }
        }
    }
    /* adds nice names for permalinks for categories */
    $check_category_names = $wpdb->get_results("SELECT DISTINCT `nice-name` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `nice-name` IN ('') AND `active` IN ('1')");
    if ($check_category_names != null) {
        $sql_query = "SELECT `id`, `name` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `active` IN('1')";
        $sql_data = $wpdb->get_results($sql_query, ARRAY_A);
        foreach ((array) $sql_data as $datarow) {
            $tidied_name = trim($datarow['name']);
            $tidied_name = strtolower($tidied_name);
            $url_name = sanitize_title($tidied_name);
            $similar_names = $wpdb->get_row("SELECT COUNT(*) AS `count`, MAX(REPLACE(`nice-name`, '{$url_name}', '')) AS `max_number` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `nice-name` REGEXP '^({$url_name}){1}(\\d)*\$' ", ARRAY_A);
            $extension_number = '';
            if ($similar_names['count'] > 0) {
                $extension_number = (int) $similar_names['max_number'] + 1;
            }
            $url_name .= $extension_number;
            $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` SET `nice-name` = '{$url_name}' WHERE `id` = '" . $datarow['id'] . "' LIMIT 1 ;");
        }
        $wp_rewrite->flush_rules();
    }
    /* Moves images to thumbnails directory */
    // this code should no longer be needed, as most people will be using a sufficiently new version
    $image_dir = WPSC_FILE_PATH . "/images/";
    $product_images = WPSC_IMAGE_DIR;
    $product_thumbnails = WPSC_THUMBNAIL_DIR;
    if (!is_dir($product_thumbnails)) {
        @mkdir($product_thumbnails, 0775);
    }
    $product_list = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_PRODUCT_LIST . "` WHERE `image` != ''", ARRAY_A);
    foreach ((array) $product_list as $product) {
        if (!glob($product_thumbnails . $product['image'])) {
            $new_filename = $product['id'] . "_" . $product['image'];
            if (file_exists($image_dir . $product['image'])) {
                copy($image_dir . $product['image'], $product_thumbnails . $new_filename);
                if (file_exists($product_images . $product['image'])) {
                    copy($product_images . $product['image'], $product_images . $new_filename);
                }
                $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `image` = '" . $new_filename . "' WHERE `id`='" . $product['id'] . "' LIMIT 1");
            } else {
                $imagedir = $product_thumbnails;
                $name = $new_filename;
                $new_image_path = $product_images . $product['image'];
                $imagepath = $product['image'];
                $height = get_option('product_image_height');
                $width = get_option('product_image_width');
                if (file_exists($product_images . $product['image'])) {
                    include "extra_image_processing.php";
                    copy($product_images . $product['image'], $product_images . $new_filename);
                    $wpdb->query("UPDATE `" . WPSC_TABLE_PRODUCT_LIST . "` SET `image` = '" . $new_filename . "' WHERE `id`='" . $product['id'] . "' LIMIT 1");
                }
            }
        }
    }
    // */
}
示例#19
0
文件: admin.php 项目: hornet9/Morato
/**
 * wpsc_ajax_ie_save save changes made using inline edit
 *
 * @public
 *
 * @3.8
 * @returns nothing
 */
function wpsc_ajax_ie_save()
{
    $product_post_type = get_post_type_object('wpsc-product');
    if (!current_user_can($product_post_type->cap->edit_posts)) {
        echo '({"error":"' . __('Error: you don\'t have required permissions to edit this product', 'wpsc') . '", "id": "' . $_POST['id'] . '"})';
        die;
    }
    $product = array('ID' => $_POST['id'], 'post_title' => $_POST['title']);
    $id = wp_update_post($product);
    if ($id > 0) {
        //need parent meta to know which weight unit we are using
        $post = get_post($id);
        $parent_meta = get_product_meta($post->post_parent, 'product_metadata', true);
        $product_meta = get_product_meta($product['ID'], 'product_metadata', true);
        if (is_numeric($_POST['weight']) || empty($_POST['weight'])) {
            $product_meta['weight'] = wpsc_convert_weight($_POST['weight'], $parent_meta['weight_unit'], 'pound', true);
            $product_meta['weight_unit'] = $parent_meta['weight_unit'];
        }
        update_product_meta($product['ID'], 'product_metadata', $product_meta);
        update_product_meta($product['ID'], 'price', (double) $_POST['price']);
        update_product_meta($product['ID'], 'special_price', (double) $_POST['special_price']);
        update_product_meta($product['ID'], 'sku', $_POST['sku']);
        if (!is_numeric($_POST['stock'])) {
            update_product_meta($product['ID'], 'stock', '');
        } else {
            update_product_meta($product['ID'], 'stock', absint($_POST['stock']));
        }
        $post = get_post($id);
        $meta = get_product_meta($id, 'product_metadata', true);
        $price = get_product_meta($id, 'price', true);
        $special_price = get_product_meta($id, 'special_price', true);
        $sku = get_product_meta($id, 'sku', true);
        $sku = $sku ? $sku : __('N/A', 'wpsc');
        $stock = get_product_meta($id, 'stock', true);
        $stock = $stock === '' ? __('N/A', 'wpsc') : $stock;
        $results = array('id' => $id, 'title' => $post->post_title, 'weight' => wpsc_convert_weight($meta['weight'], 'pound', $parent_meta['weight_unit']), 'price' => wpsc_currency_display($price), 'special_price' => wpsc_currency_display($special_price), 'sku' => $sku, 'stock' => $stock);
        echo '(' . json_encode($results) . ')';
        die;
    } else {
        echo '({"error":"' . __('Error updating product', 'wpsc') . '", "id": "' . $_POST['id'] . '"})';
    }
    die;
}
示例#20
0
function wpsc_options_import()
{
    global $wpdb;
    ?>
	<form name='cart_options' enctype='multipart/form-data' id='cart_options' method='post' action='<?php 
    echo 'admin.php?page=wpsc-settings&tab=import';
    ?>
'>
	<div class="wrap">
		<h2><?php 
    echo TXT_WPSC_IMPORT_CSV;
    ?>
</h2>
		<?php 
    echo TXT_WPSC_IMPORT_CSV_DESCRIPTION;
    ?>
		
		<?php 
    wp_nonce_field('update-options', 'wpsc-update-options');
    ?>
		<input type='hidden' name='MAX_FILE_SIZE' value='5000000' />
		<input type='file' name='csv_file' />
		<input type='submit' value='Import' class='button-primary'>
<?php 
    //exit('<pre>'.print_r($_FILES, true).'</pre>');
    if ($_FILES['csv_file']['name'] != '') {
        $file = $_FILES['csv_file'];
        //exit('<pre>'.print_r($file,true).'</pre>');
        if (move_uploaded_file($file['tmp_name'], WPSC_FILE_DIR . $file['name'])) {
            $content = file_get_contents(WPSC_FILE_DIR . $file['name']);
            //exit('<pre>'.print_r(WPSC_FILE_DIR.$file['name'], true).'</pre>');
            $handle = @fopen(WPSC_FILE_DIR . $file['name'], 'r');
            while (($csv_data = @fgetcsv($handle, filesize($handle), ",")) !== false) {
                $fields = count($csv_data);
                for ($i = 0; $i < $fields; $i++) {
                    if (!is_array($data1[$i])) {
                        $data1[$i] = array();
                    }
                    array_push($data1[$i], $csv_data[$i]);
                }
            }
            //exit("<pre>".print_r($data1, 1)."</pre>");
            $_SESSION['cvs_data'] = $data1;
            $categories_sql = "SELECT `id`,`name` FROM `" . WPSC_TABLE_PRODUCT_CATEGORIES . "` WHERE `active`='1'";
            $categories = $wpdb->get_results($categories_sql, ARRAY_A);
            ?>
		
		<p>For each column, select the field it corresponds to in 'Belongs to'. You can upload as many products as you like.</p>
		<div class='metabox-holder' style='width:90%'>
		<input type='hidden' name='csv_action' value='import'>
		<?php 
            //	exit('<pre>'.print_r($_SESSION['cvs_data'], true).'</pre>');
            foreach ((array) $data1 as $key => $datum) {
                ?>
			<div style='width:100%;' class='postbox'>
			<h3 class='hndle'>Column (<?php 
                echo $key + 1;
                ?>
)</h3>
			<div class='inside'>
			<table>
			<tr><td style='width:80%;'>
			<input type='hidden' name='column[]' value='<?php 
                echo $key + 1;
                ?>
'>
			<?php 
                foreach ($datum as $column) {
                    echo $column;
                    break;
                }
                ?>
				<br />
			</td><td>
			<select  name='value_name[]'>
	<!-- /* 		These are the current fields that can be imported with products, to add additional fields add more <option> to this dorpdown list */ -->
			<option value='name'>Product Name</option>
			<option value='description'>Description</option>
			<option value='additional_description'>Additional Description</option>
			<option value='price'>Price</option>
			<option value='sku'>SKU</option>
			<option value='weight'>Weight</option>
			<option value='weight_unit'>Weight Unit</option>
			<option value='quantity'>Stock Quantity</option>
			<option value='quantity_limited'>Stock Quantity Limit</option>
			</select>
			</td></tr>
			</table>
			</div>
			</div>
			<?php 
            }
            ?>
		<label for='category'>Please select a category you would like to place all products from this CSV into:</label>
		<select id='category' name='category'>
		<?php 
            foreach ($categories as $category) {
                echo '<option value="' . $category['id'] . '">' . $category['name'] . '</option>';
            }
            ?>
		</select>
		<input type='submit' value='Import' class='button-primary'>
		</div>
	<?php 
        } else {
            echo "<br /><br />There was an error while uploading your csv file.";
        }
    }
    if ($_POST['csv_action'] == 'import') {
        global $wpdb;
        $cvs_data = $_SESSION['cvs_data'];
        //exit('<pre>'.print_r($_SESSION['cvs_data'], true).'</pre>');
        $column_data = $_POST['column'];
        $value_data = $_POST['value_name'];
        $name = array();
        /*
        	foreach ($value_data as $key => $value) {
        		$value_data[$key] = $cvs_data[$key];
        	}
        */
        //echo('<pre>'.print_r($value_data, true).'</pre><pre>'.print_r($column_data, true).'</pre>');
        foreach ($value_data as $key => $value) {
            $cvs_data2[$value] = $cvs_data[$key];
        }
        //exit('<pre>'.print_r($cvs_data2, true).'</pre>');
        $num = count($cvs_data2['name']);
        for ($i = 0; $i < $num; $i++) {
            $cvs_data2['price'][$i] = str_replace('$', '', $cvs_data2['price'][$i]);
            //exit( $cvs_data2['price'][$i]);
            //	exit($key. ' ' . print_r($data));
            $query = "('" . $cvs_data2['name'][$i] . "', '" . $cvs_data2['description'][$i] . "', '" . $cvs_data2['additional_description'][$i] . "','" . $cvs_data2['price'][$i] . "','" . $cvs_data2['weight'][$i] . "','" . $cvs_data2['weight_unit'][$i] . "','" . $cvs_data2['quantity'][$i] . "','" . $cvs_data2['quantity_limited'][$i] . "')";
            $query = "INSERT INTO `" . WPSC_TABLE_PRODUCT_LIST . "` (name, description, additional_description, price, weight, weight_unit, quantity, quantity_limited) VALUES " . $query;
            //	echo($query);
            $wpdb->query($query);
            $id = $wpdb->get_var("SELECT LAST_INSERT_ID() as id FROM `" . WPSC_TABLE_PRODUCT_LIST . "`");
            $meta_query = "INSERT INTO `" . WPSC_TABLE_PRODUCTMETA . "` VALUES ('', '{$id}', 'sku', '" . $cvs_data2['sku'][$i] . "', '0')";
            $wpdb->query($meta_query);
            $category_query = "INSERT INTO `" . WPSC_TABLE_ITEM_CATEGORY_ASSOC . "` VALUES ('','{$id}','" . $wpdb->escape($_POST['category']) . "')";
            $wpdb->query($category_query);
            $existing_name = get_product_meta($id, 'url_name');
            // strip slashes, trim whitespace, convert to lowercase
            $tidied_name = strtolower(trim(stripslashes($cvs_data2['name'][$i])));
            // convert " - " to "-", all other spaces to dashes, and remove all foward slashes.
            //$url_name = preg_replace(array("/(\s-\s)+/","/(\s)+/", "/(\/)+/"), array("-","-", ""), $tidied_name);
            $url_name = sanitize_title($tidied_name);
            //exit('NAMES >>'.$url_name.' '.$existing_name);
            // Select all similar names, using an escaped version of the URL name
            $similar_names = (array) $wpdb->get_col("SELECT `meta_value` FROM `" . WPSC_TABLE_PRODUCTMETA . "` WHERE `product_id` NOT IN('{$id}}') AND `meta_key` IN ('url_name') AND `meta_value` REGEXP '^(" . $wpdb->escape(preg_quote($url_name)) . "){1}[[:digit:]]*\$' ");
            // Check desired name is not taken
            if (array_search($url_name, $similar_names) !== false) {
                // If it is, try to add a number to the end, if that is taken, try the next highest number...
                $j = 0;
                do {
                    $j++;
                } while (array_search($url_name . $j, $similar_names) !== false);
                // Concatenate the first number found that wasn't taken
                $url_name .= $j;
            }
            // If our URL name is the same as the existing name, do othing more.
            if ($existing_name != $url_name) {
                update_product_meta($id, 'url_name', $url_name);
            }
        }
        /* 	$query = "INSERT INTO {$wpdb->prefix}product_list (name, description, addictional_description, price) VALUES ".$query; */
        echo "<br /><br />Success, your <a href='?page=wpsc-edit-products'>products</a> have been upload.";
    }
    ?>
	</div>
</form>
<?php 
}