function wpsc_clean_categories_action() { global $wpdb, $wp_rewrite; $updated = wpsc_clean_categories(); $sendback = wp_get_referer(); if (isset($updated)) { $sendback = add_query_arg('updated', $updated, $sendback); } if (isset($_SESSION['wpsc_settings_curr_page'])) { $sendback = add_query_arg('tab', $_SESSION['wpsc_settings_curr_page'], $sendback); } wp_redirect($sendback); exit; }
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(); } wpsc_clean_categories(); /* 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"); } } } } // */ }