$product_id)); list($wpsc_query, $temp_wpsc_query) = array($temp_wpsc_query, $wpsc_query); // swap the wpsc_query objects // exit('
'.print_r($temp_wpsc_query, true).'
'); $selected_gateways = get_option('custom_gateway_options'); if (in_array('google', (array)$selected_gateways)) { $output .= google_buynow($product['id']); } else if (in_array('paypal_multiple', (array)$selected_gateways)) { if ($product_id > 0){ //$output .= "
".print_r($wpsc_query,true)."
"; while (wpsc_have_products()) : wpsc_the_product(); $price = calculate_product_price($wpsc_query->product['id'], $wpsc_query->first_variations); $shipping = $wpsc_query->product['pnp']; if(wpsc_uses_shipping()){$handling = get_option('base_local_shipping');}else{$handling = $shipping;} $output .= "
"; if(get_option('multi_add') == 1){ $output .=""; $output .="
"; }else{ $output .=""; } $output .="
\n\r"; endwhile; } } list($temp_wpsc_query, $wpsc_query) = array($wpsc_query, $temp_wpsc_query); // swap the wpsc_query objects back if($replaced_shortcode == true) { return $output; } else { echo $output; } } function wpsc_also_bought($product_id) { /* * Displays products that were bought aling with the product defined by $product_id * most of it scarcely needs describing */ global $wpdb; $siteurl = get_option('siteurl'); if(get_option('wpsc_also_bought') == 0) { //returns nothing if this is off return ''; } // to be made customiseable in a future release $also_bought_limit = 3; $element_widths = 96; $image_display_height = 96; $image_display_width = 96; $also_bought = $wpdb->get_results("SELECT `".WPSC_TABLE_PRODUCT_LIST."`.* FROM `".WPSC_TABLE_ALSO_BOUGHT."`, `".WPSC_TABLE_PRODUCT_LIST."` WHERE `selected_product`='".$product_id."' AND `".WPSC_TABLE_ALSO_BOUGHT."`.`associated_product` = `".WPSC_TABLE_PRODUCT_LIST."`.`id` AND `".WPSC_TABLE_PRODUCT_LIST."`.`active` IN('1') AND `".WPSC_TABLE_PRODUCT_LIST."`.`publish` IN ('1')ORDER BY `".WPSC_TABLE_ALSO_BOUGHT."`.`quantity` DESC LIMIT $also_bought_limit",ARRAY_A); if(count($also_bought) > 0) { $output = "

".__('People who bought this item also bought', 'wpsc')."

"; $output .= "
"; foreach((array)$also_bought as $also_bought_data) { $output .= "
"; if(get_option('show_thumbnails') == 1) { if($also_bought_data['image'] !=null) { $output .= ""; $image_path = "index.php?productid=" . $also_bought_data['id'] . "&width=" . $image_display_width."&height=" . $image_display_height. ""; $output .= ""; $output .= ""; } else { if(get_option('product_image_width') != '') { $output .= "".$also_bought_data["; } else { $output .= "".htmlentities(stripslashes($product["; } } } $variations_processor = new nzshpcrt_variations; $variations_output = $variations_processor->display_product_variations($also_bought_data['id'],true, false, true); //$output .= $variations_output[0]; if($variations_output[1] !== null) { $also_bought_data['price'] = $variations_output[1]; $also_bought_data['special_price'] = 0; } $output .= "".$also_bought_data['name'].""; $output .= nzshpcrt_currency_display(($also_bought_data['price'] - $also_bought_data['special_price']), $also_bought_data['notax'],false,$also_bought_data['id']); //$output .= "".$also_bought_data['name'].""; $output .= "
"; } $output .= "
"; $output .= "
"; } return $output; } function fancy_notifications() { global $wpdb; if(get_option('fancy_notifications') == 1) { $output = ""; $output .= "
\n\r"; $output .= "
\n\r"; $output .= 'Loading'.__('Updating', 'wpsc')."...\n\r"; $output .= "
\n\r"; $output .= "
\n\r"; $output .= "
\n\r"; $output .= "
\n\r"; } return $output; } function fancy_notification_content($cart_messages) { global $wpdb; $siteurl = get_option('siteurl'); foreach((array)$cart_messages as $cart_message) { $output .= "".$cart_message.""; } $output .= "".__('Go to Checkout', 'wpsc').""; $output .= "".__('Continue Shopping', 'wpsc').""; return $output; } function wpsc_product_url($product_id, $category_id = null, $escape = true) { global $wpdb, $wp_rewrite, $wp_query; if(!is_numeric($category_id) || ($category_id < 1)) { if(is_numeric($wp_query->query_vars['product_category'])) { $category_id = $wp_query->query_vars['product_category']; } else { $category_list = $wpdb->get_row("SELECT `".WPSC_TABLE_PRODUCT_CATEGORIES."`.`id`, IF((`".WPSC_TABLE_PRODUCT_CATEGORIES."`.`id` = '".get_option('wpsc_default_category')."'), 0, 1) AS `order_state` FROM `".WPSC_TABLE_ITEM_CATEGORY_ASSOC."` , `".WPSC_TABLE_PRODUCT_CATEGORIES."` WHERE `".WPSC_TABLE_ITEM_CATEGORY_ASSOC."`.`product_id` IN ('".$product_id."') AND `".WPSC_TABLE_ITEM_CATEGORY_ASSOC."`.`category_id` = `".WPSC_TABLE_PRODUCT_CATEGORIES."`.`id` AND `".WPSC_TABLE_PRODUCT_CATEGORIES."`.`active` IN('1') LIMIT 1",ARRAY_A); $category_id = $category_list['id']; } } // exit('
'.print_r($wp_query, true).'
'); if((($wp_rewrite->rules != null) && ($wp_rewrite != null)) || (get_option('rewrite_rules') != null)) { $url_name = get_product_meta($product_id, 'url_name', true); $url_name = htmlentities(stripslashes($url_name), ENT_QUOTES, 'UTF-8'); $product_url =wpsc_category_url($category_id).$url_name."/"; } else { if(!stristr(get_option('product_list_url'), "?")) { $initial_seperator = "?"; } else { $initial_seperator = ($escape) ? "&" : "&"; } if(is_numeric($category_id) && ($category_id > 0)) { $product_url = get_option('product_list_url').$initial_seperator."category=".$category_id.(($escape) ? "&" : "&")."product_id=".$product_id; } else { $product_url = get_option('product_list_url').$initial_seperator."product_id=".$product_id; } } return $product_url; } function google_buynow($product_id) { global $wpdb; $output = ""; if ($product_id > 0){ $product_sql = "SELECT * FROM ".WPSC_TABLE_PRODUCT_LIST." WHERE id = ".$product_id." LIMIT 1"; $product_info = $wpdb->get_results($product_sql, ARRAY_A); $variation_sql = "SELECT * FROM ".WPSC_TABLE_VARIATION_PROPERTIES." WHERE product_id = ".$product_id; $variation_info = $wpdb->get_results($variation_sql, ARRAY_A); if (count($variation_info) > 0) { $variation = 1; $price = $variation_info[0]['price']; } if (get_option('google_server_type')=='production') { $action_target = "https://checkout.google.com/cws/v2/Merchant/".get_option('google_id')."/checkoutForm"; } else { $action_target = "https://sandbox.google.com/checkout/cws/v2/Merchant/".get_option('google_id')."/checkoutForm"; } $product_info = $product_info[0]; $output .= "
"; $output .= ""; $output .= ""; $output .= ""; $output .= ""; if ($variation == 1) { $output .= ""; } else { if ($product_info['special']=='0') { $output .= ""; } else { $output .= ""; } } $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .="
"; } return $output; } function external_link($product_id) { global $wpdb; $link = get_product_meta($product_id,'external_link',true); if (!stristr($link,'http://')) { $link = 'http://'.$link; } $output .= ""; return $output; } // displays error messages if the category setup is odd in some way // needs to be in a function because there are at least three places where this code must be used. function wpsc_odd_category_setup() { get_currentuserinfo(); global $userdata; $output = ''; if(($userdata->wp_capabilities['administrator'] ==1) || ($userdata->user_level >=9)) { if(get_option('wpsc_default_category') == 1) { $output = "

".__('You are using the example product group as your default group and it has no products in it, you should set the default group to something else, you can do so from your Shop Settings page.', 'wpsc')."

"; } else { $output = "

".__('This group is set as your default product group, you should either add some items to it or switch your default product group to one that does contain items.', 'wpsc')."

"; } } return $output; } function wpsc_product_image_html($image_name, $product_id) { global $wpdb, $wp_query; if(is_numeric($wp_query->query_vars['product_category'])) { $category_id = (int)$wp_query->query_vars['product_category']; } else if (is_numeric($_GET['category'])) { $category_id = (int)$_GET['category']; } else { $category_id = (int)get_option('wpsc_default_category'); } $product['height'] = get_product_meta($id, 'thumbnail_height'); $product['width'] = get_product_meta($id, 'thumbnail_width'); $use_thumbnail_image = 'false'; if(($product['height'] > $category['height']) || ($product['width'] > $category['width'])) { $use_thumbnail_image = 'true'; } //list($category['height'], $category['width']) = if($category_id > 0) { $category = $wpdb->get_row("SELECT `image_height` AS `height`, `image_width` AS `width` FROM `".WPSC_TABLE_PRODUCT_CATEGORIES."` WHERE `id` IN ('{$category_id}') LIMIT 1", ARRAY_A); } // if there is a height, width, and imagePNG function if(($category['height'] != null) && ($category['width'] != null) && (function_exists('ImagePNG'))) { $image_path = "index.php?productid=".$product_id."&thumbnail=".$use_thumbnail_image."&width=".$category['width']."&height=".$category['height'].""; } else { $image_path = WPSC_THUMBNAIL_URL.$image_name; if(is_ssl()) { $image_path = str_replace("http://", "https://", $image_path); } } return $image_path; } /* 19-02-09 * add cart button function used for php template tags and shortcodes */ function wpsc_add_to_cart_button($product_id, $replaced_shortcode = false) { global $wpdb; if ($product_id > 0){ if(function_exists('wpsc_theme_html')) { $product = $wpdb->get_row("SELECT * FROM ".WPSC_TABLE_PRODUCT_LIST." WHERE id = ".$product_id." LIMIT 1", ARRAY_A); //this needs the results from the product_list table passed to it, does not take just an ID $wpsc_theme = wpsc_theme_html($product); } // grab the variation form fields here $variations_processor = new nzshpcrt_variations; $variations_output = $variations_processor->display_product_variations($product_id,false, false, false); $output .= "
"; if($variations_output != '') { //will always be set, may sometimes be an empty string $output .= "

".$variations_output."

"; } $output .= ""; $output .= ""; $output .= ""; if(isset($wpsc_theme) && is_array($wpsc_theme) && ($wpsc_theme['html'] !='')) { $output .= $wpsc_theme['html']; } else { $output .= ""; } $output .= '
'; if($replaced_shortcode == true) { return $output; } else { echo $output; } } } function wpsc_refresh_page_urls($content) { global $wpdb; $wpsc_pageurl_option['product_list_url'] = '[productspage]'; $wpsc_pageurl_option['shopping_cart_url'] = '[shoppingcart]'; $check_chekout = $wpdb->get_var("SELECT `guid` FROM `{$wpdb->posts}` WHERE `post_content` LIKE '%[checkout]%' AND `post_type` NOT IN('revision','nav_menu_item') AND `post_type`='page' LIMIT 1"); if($check_chekout != null) { $wpsc_pageurl_option['checkout_url'] = '[checkout]'; } else { $wpsc_pageurl_option['checkout_url'] = '[checkout]'; } $wpsc_pageurl_option['transact_url'] = '[transactionresults]'; $wpsc_pageurl_option['user_account_url'] = '[userlog]'; $changes_made = false; foreach($wpsc_pageurl_option as $option_key => $page_string) { $post_id = $wpdb->get_var("SELECT `ID` FROM `{$wpdb->posts}` WHERE `post_type` IN('page','post') AND `post_content` LIKE '%$page_string%' AND `post_type` NOT IN('revision') LIMIT 1"); $the_new_link = get_permalink($post_id); if(stristr(get_option($option_key), "https://")) { $the_new_link = str_replace('http://', "https://",$the_new_link); } update_option($option_key, $the_new_link); } return $content; } function wpsc_product_permalinks($rewrite_rules) { global $wpdb, $wp_rewrite; $page_details = $wpdb->get_row("SELECT * FROM `".$wpdb->posts."` WHERE `post_content` LIKE '%[productspage]%' AND `post_type`= 'page' LIMIT 1", ARRAY_A); $is_index = false; if((get_option('page_on_front') == $page_details['ID']) && (get_option('show_on_front') == 'page')) { $is_index = true; } $first_post_name = $page_details['post_name']; $page_name_array[] = $page_details['post_name']; if($page_details['post_parent'] > 0) { $count = 0; while(($page_details['post_parent'] > 0) && ($count <= 20)) { $page_details = $wpdb->get_row("SELECT * FROM `".$wpdb->posts."` WHERE `ID` IN('{$page_details['post_parent']}') AND `post_type` NOT IN('revision') LIMIT 1", ARRAY_A); $page_name_array[] = $page_details['post_name']; $count ++; } } $page_name_array = array_reverse($page_name_array); $page_name = implode("/",$page_name_array); if(!function_exists('wpsc_rewrite_categories')) { // to stop this function from being declared multiple times /* * This is the function for making the e-commerce rewrite rules, it is recursive */ function wpsc_rewrite_categories($page_name, $id = null, $level = 0, $parent_categories = array(), $is_index = false) { global $wpdb,$category_data; if($is_index == true) { $rewrite_page_name = ''; } else { $rewrite_page_name = $page_name.'/'; } if(is_numeric($id)) { $category_sql = "SELECT * FROM `".WPSC_TABLE_PRODUCT_CATEGORIES."` WHERE `active`='1' AND `category_parent` = '".$id."' ORDER BY `id`"; $category_list = $wpdb->get_results($category_sql,ARRAY_A); } else { $category_sql = "SELECT * FROM `".WPSC_TABLE_PRODUCT_CATEGORIES."` WHERE `active`='1' AND `category_parent` = '0' ORDER BY `id`"; $category_list = $wpdb->get_results($category_sql,ARRAY_A); } if($category_list != null) { foreach($category_list as $category) { if($level === 0) { $parent_categories = array(); } $parent_categories[] = $category['nice-name']; $new_rules[($rewrite_page_name.implode($parent_categories,"/").'/?$')] = 'index.php?pagename='.$page_name.'&category_id='.$category['id']; $new_rules[($rewrite_page_name.implode($parent_categories,"/").'/(.+?)/?$')] = 'index.php?pagename='.$page_name.'&category_id='.$category['id'].'&product_url_name=$matches[1]'; $new_rules[($rewrite_page_name.implode($parent_categories,"/").'/page/([0-9]+)/?$')] = 'index.php?pagename='.$page_name.'&category_id='.$category['id'].'&wpsc_page=$matches[1]'; // recurses here $sub_rules = wpsc_rewrite_categories($page_name, $category['id'], ($level+1), $parent_categories, $is_index); array_pop($parent_categories); $new_rules = array_merge((array)$new_rules, (array)$sub_rules); } } return $new_rules; } } $new_rules = wpsc_rewrite_categories($page_name, null, 0, null, $is_index); $new_rules = array_reverse((array)$new_rules); $new_rules[($first_post_name.'/page/([0-9]+)/?$')] = 'index.php?pagename='.$page_name.'&wpsc_page=$matches[1]'; $new_rules[$page_name.'/tag/([A-Za-z0-9\-]+)?$'] = 'index.php?pagename='.$page_name.'&ptag=$matches[1]'; $new_rewrite_rules = array_merge((array)$new_rules,(array)$rewrite_rules); return $new_rewrite_rules; } function wpsc_query_vars($vars) { // $vars[] = "product_category"; // $vars[] = "product_name"; $vars[] = "category_id"; $vars[] = "product_url_name"; $vars[] = "wpsc_page"; return $vars; } add_filter('query_vars', 'wpsc_query_vars'); // using page_rewrite_rules makes it so that odd permalink structures like /%category%/%postname%.htm do not override the plugin permalinks. add_filter('page_rewrite_rules', 'wpsc_product_permalinks'); /** * wpsc_obtain_the_title function, for replaacing the page title with the category or product * @return string - the new page title */ function wpsc_obtain_the_title() { global $wpdb, $wp_query, $wpsc_title_data; $output = null; if(is_numeric($wp_query->query_vars['category_id'])) { $category_id = $wp_query->query_vars['category_id']; } else if($_GET['category']) { $category_id = absint($_GET['category']); } if($category_id > 0) { if(isset($wpsc_title_data['category'][$category_id])) { $output = $wpsc_title_data['category'][$category_id]; } else { $output = $wpdb->get_var("SELECT `name` FROM `".WPSC_TABLE_PRODUCT_CATEGORIES."` WHERE `id`='{$category_id}' LIMIT 1"); $wpsc_title_data['category'][$category_id] = $output; } } if(isset($wp_query->query_vars['product_url_name']) || is_numeric($_GET['product_id'])) { $product_name = $wp_query->query_vars['product_url_name']; if(isset($wpsc_title_data['product'][$product_name])) { $product_list = array(); $full_product_name = $wpsc_title_data['product'][$product_name]; } else if($product_name != '') { $product_id = $wpdb->get_var("SELECT `product_id` FROM `".WPSC_TABLE_PRODUCTMETA."` WHERE `meta_key` IN ( 'url_name' ) AND `meta_value` IN ( '{$wp_query->query_vars['product_url_name']}' ) ORDER BY `id` DESC LIMIT 1"); $full_product_name = $wpdb->get_var("SELECT `name` FROM `".WPSC_TABLE_PRODUCT_LIST."` WHERE `id`='{$product_id}' LIMIT 1"); $wpsc_title_data['product'][$product_name] = $full_product_name; } else { $product_id = absint($_GET['product_id']); $product_name = $wpdb->get_var("SELECT `meta_value` FROM `".WPSC_TABLE_PRODUCTMETA."` WHERE `meta_key` IN ( 'url_name' ) AND `product_id` IN ( '{$product_id}' ) LIMIT 1"); $full_product_name = $wpdb->get_var("SELECT `name` FROM `".WPSC_TABLE_PRODUCT_LIST."` WHERE `id`='{$product_id}' LIMIT 1"); $wpsc_title_data['product'][$product_name] = $full_product_name; } } //exit("
".print_r($wp_query,true)."
"); if(isset($full_product_name ) && ($full_product_name != null)) { $output = htmlentities(stripslashes($full_product_name), ENT_QUOTES, 'UTF-8'); } return $output; } function wpsc_obtain_the_description() { global $wpdb, $wp_query, $wpsc_title_data; $output = null; //exit("
".print_r($wp_query,true)."
"); if(is_numeric($wp_query->query_vars['category_id'])) { $category_id = $wp_query->query_vars['category_id']; } else if($_GET['category']) { $category_id = absint($_GET['category']); } if(is_numeric($category_id)) { $output = $wpdb->get_var("SELECT `description` FROM `".WPSC_TABLE_PRODUCT_CATEGORIES."` WHERE `id`='{$category_id}' LIMIT 1"); } if(isset($wp_query->query_vars['product_url_name'])) { $product_name = $wp_query->query_vars['product_url_name']; $product_id = $wpdb->get_var("SELECT `product_id` FROM `".WPSC_TABLE_PRODUCTMETA."` WHERE `meta_key` IN ( 'url_name' ) AND `meta_value` IN ( '{$wp_query->query_vars['product_url_name']}' ) ORDER BY `id` DESC LIMIT 1"); $output = $wpdb->get_var("SELECT `description` FROM `".WPSC_TABLE_PRODUCT_LIST."` WHERE `id`='{$product_id}' LIMIT 1"); } else if(is_numeric($_GET['product_id'])) { $product_id = absint($_GET['product_id']); $output = $wpdb->get_var("SELECT `description` FROM `".WPSC_TABLE_PRODUCT_LIST."` WHERE `id`='{$product_id}' LIMIT 1"); } return $output; } function wpsc_replace_the_title($input) { global $wpdb, $wp_query; $output = wpsc_obtain_the_title(); if($output != null) { $backtrace = debug_backtrace(); if($backtrace[3]['function'] == 'get_the_title') { return $output; } } return $input; } function wpsc_replace_wp_title($input) { global $wpdb, $wp_query; $output = wpsc_obtain_the_title(); if($output != null) { return $output; } return $input; } function wpsc_replace_bloginfo_title($input, $show) { global $wpdb, $wp_query; if($show == 'description') { $output = wpsc_obtain_the_title(); if($output != null) { return $output; } } return $input; } if(get_option('wpsc_replace_page_title') == 1) { add_filter('the_title', 'wpsc_replace_the_title', 10, 2); add_filter('wp_title', 'wpsc_replace_wp_title', 10, 2); //add_filter('bloginfo', 'wpsc_replace_bloginfo_title', 10, 2); } ?>