PageRenderTime 56ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/wp-shopping-cart/product_display_functions.php

https://github.com/alx/barceloneta
PHP | 1082 lines | 870 code | 168 blank | 44 comment | 358 complexity | 5294e732b45f187e436fba0545763441 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. function wpsc_get_product_listing($product_list, $group_type, $group_sql = '', $search_sql = '') {
  3. global $wpdb, $wp_query;
  4. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('wpsc_get_product_listing','start');}
  5. $siteurl = get_option('siteurl');
  6. $activated_widgets = get_option('sidebars_widgets');
  7. // echo("<pre>".print_r($wp_query->query_vars,true)."</pre>");
  8. if(get_option('permalink_structure') != '') {
  9. $seperator ="?";
  10. } else {
  11. $seperator ="&amp;";
  12. }
  13. if (isset($_GET['action']) && ($_GET['action']=='bfg') && isset($_GET['session']) && ($_GET['session']==$_SESSION['google_session'])) {
  14. $_SESSION['nzshpcrt_cart'] = '';
  15. $_SESSION['nzshpcrt_cart'] = Array();
  16. unset($_SESSION['coupon_num'], $_SESSION['google_session']);
  17. }
  18. if((isset($_GET['items_per_page'])) && ($_GET['items_per_page']!=0)){
  19. update_option('use_pagination',1);
  20. }
  21. if((get_option('use_pagination') == 1)) {
  22. $products_per_page = get_option('wpsc_products_per_page');
  23. if (isset($_REQUEST['items_per_page'])){
  24. $products_per_page = $_REQUEST['items_per_page'];
  25. }
  26. if(($_GET['page_number'] > 0)) {
  27. $startnum = ($_GET['page_number']-1)*$products_per_page;
  28. } else {
  29. $startnum = 0;
  30. }
  31. } else {
  32. $startnum = 0;
  33. }
  34. if(is_numeric($wp_query->query_vars['product_category'])) {
  35. $category_id = $wp_query->query_vars['product_category'];
  36. } else if(is_numeric($_GET['category'])) {
  37. $category_id = $_GET['category'];
  38. } else if(is_numeric($GLOBALS['wpsc_category_id'])) {
  39. $category_id = $GLOBALS['wpsc_category_id'];
  40. }
  41. //echo("<pre>".print_r($category_id,true)."</pre>");
  42. if (is_numeric($_GET['range'])) {
  43. $ranges = $_SESSION['price_range'];
  44. // exit("<pre>".print_r($ranges,1)."</pre>");
  45. switch($_GET['range']) {
  46. case 1:
  47. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` < ".$ranges[1]." AND `active` IN ('1')";
  48. break;
  49. case 2: {
  50. if (array_key_exists(2,$ranges)) {
  51. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[1]."' AND `price` < '".$ranges[2]."' AND `active` IN ('1')";
  52. } else {
  53. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[1]."' AND `active` IN ('1')";
  54. }
  55. break;
  56. }
  57. case 3: {
  58. if (array_key_exists(3,$ranges)) {
  59. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[2]."' AND `price` < '".$ranges[3]."' AND `active` IN ('1')";
  60. } else {
  61. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[2]."' AND `active` IN ('1')";
  62. }
  63. break;
  64. }
  65. case 4: {
  66. if (array_key_exists(4,$ranges)) {
  67. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[3]."' AND `price` < '".$ranges[4]."' AND `active` IN ('1')";
  68. } else {
  69. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[3]."' AND `active` IN ('1')";
  70. }
  71. break;
  72. }
  73. case 5: {
  74. if (array_key_exists(5,$ranges)) {
  75. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[4]."' AND `price` < '".$ranges[5]."' AND `active` IN ('1')";
  76. } else {
  77. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[4]."' AND `active` IN ('1')";
  78. }
  79. break;
  80. }
  81. case 6:
  82. $range_sql="SELECT * FROM ".$wpdb->prefix."product_list WHERE `price` >= '".$ranges[5]."' AND `active` IN ('1')";
  83. break;
  84. }
  85. //exit($range_sql);
  86. $product_list = $wpdb->get_results($range_sql,ARRAY_A);
  87. return array("product_list" => $product_list,"page_listing"=>'');
  88. }
  89. foreach((array)$activated_widgets as $widget_container) {
  90. if(is_array($widget_container) && array_search(TXT_WPSC_DONATIONS, $widget_container)) {
  91. $no_donations_sql = "AND `".$wpdb->prefix."product_list`.`donation` != '1'";
  92. break;
  93. }
  94. }
  95. if(function_exists('gold_shpcrt_search_sql') && ($_GET['product_search'] != '')) {
  96. $search_sql = gold_shpcrt_search_sql();
  97. if($search_sql != '') {
  98. // this cannot currently list products that are associated with no categories
  99. $rowcount = $wpdb->get_var("SELECT DISTINCT COUNT(`".$wpdb->prefix."product_list`.`id`) AS `count` FROM `".$wpdb->prefix."product_list`,`".$wpdb->prefix."item_category_associations` WHERE `".$wpdb->prefix."product_list`.`active`='1' AND `".$wpdb->prefix."product_list`.`id` = `".$wpdb->prefix."item_category_associations`.`product_id` $no_donations_sql $search_sql");
  100. if (isset($_SESSION['item_per_page']))
  101. $products_per_page = $_SESSION['item_per_page'];
  102. //exit($products_per_page);
  103. if(!is_numeric($products_per_page) || ($products_per_page < 1)) { $products_per_page = $rowcount; }
  104. if(($startnum >= $rowcount) && (($rowcount - $products_per_page) >= 0)) {
  105. $startnum = $rowcount - $products_per_page;
  106. }
  107. $sql = "SELECT DISTINCT `".$wpdb->prefix."product_list`.* FROM `".$wpdb->prefix."product_list`,`".$wpdb->prefix."item_category_associations` WHERE `".$wpdb->prefix."product_list`.`active`='1' AND `".$wpdb->prefix."product_list`.`id` = `".$wpdb->prefix."item_category_associations`.`product_id` $no_donations_sql $search_sql ORDER BY `".$wpdb->prefix."product_list`.`special` DESC LIMIT $startnum, $products_per_page";
  108. }
  109. } else if (($wp_query->query_vars['ptag'] != null) || ( $_GET['ptag']!=null)) {
  110. if($wp_query->query_vars['ptag'] != null) {
  111. $tag = $wp_query->query_vars['ptag'];
  112. } else {
  113. $tag = $_GET['ptag'];
  114. }
  115. $results = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."terms WHERE slug='$tag'");
  116. $term_id = $results[0]->term_id;
  117. $results = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."term_taxonomy WHERE term_id = '".$term_id."' AND taxonomy='product_tag'");
  118. $taxonomy_id = $results[0]->term_taxonomy_id;
  119. $results = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."term_relationships WHERE term_taxonomy_id = '".$taxonomy_id."'");
  120. foreach ($results as $result) {
  121. $product_ids[] = $result->object_id;
  122. }
  123. $product_id = implode(",",$product_ids);
  124. $sql = "SELECT * FROM ".$wpdb->prefix."product_list WHERE id IN (".$product_id.")";
  125. } else {
  126. if(is_numeric($_GET['category']) || is_numeric($wp_query->query_vars['product_category']) || is_numeric(get_option('wpsc_default_category'))) {
  127. if($wp_query->query_vars['product_category'] != null) {
  128. $catid = $wp_query->query_vars['product_category'];
  129. } else if(is_numeric($_GET['category'])) {
  130. $catid = $_GET['category'];
  131. } else if(is_numeric($GLOBALS['wpsc_category_id'])) {
  132. $catid = $GLOBALS['wpsc_category_id'];
  133. } else {
  134. $catid = get_option('wpsc_default_category');
  135. }
  136. /*
  137. * The reason this is so complicated is because of the product ordering, it is done by category/product association
  138. * If you can see a way of simplifying it and speeding it up, then go for it.
  139. */
  140. $rowcount = $wpdb->get_var("SELECT DISTINCT COUNT(`".$wpdb->prefix."product_list`.`id`) AS `count` FROM `".$wpdb->prefix."product_list` LEFT JOIN `".$wpdb->prefix."item_category_associations` ON `".$wpdb->prefix."product_list`.`id` = `".$wpdb->prefix."item_category_associations`.`product_id` WHERE `".$wpdb->prefix."product_list`.`active` = '1' AND `".$wpdb->prefix."item_category_associations`.`category_id` IN ('".$catid."') $no_donations_sql");
  141. if(!is_numeric($products_per_page) || ($products_per_page < 1)) { $products_per_page = $rowcount; }
  142. if(($startnum >= $rowcount) && (($rowcount - $products_per_page) >= 0)) {
  143. $startnum = $rowcount - $products_per_page;
  144. }
  145. if ($_REQUEST['order']==null) {
  146. $order = 'ASC';
  147. } elseif ($_REQUEST['order']=='DESC') {
  148. $order = 'DESC';
  149. }
  150. $sql = "SELECT DISTINCT `".$wpdb->prefix."product_list`.*, `".$wpdb->prefix."item_category_associations`.`category_id`,`".$wpdb->prefix."product_order`.`order`, IF(ISNULL(`".$wpdb->prefix."product_order`.`order`), 0, 1) AS `order_state` FROM `".$wpdb->prefix."product_list` LEFT JOIN `".$wpdb->prefix."item_category_associations` ON `".$wpdb->prefix."product_list`.`id` = `".$wpdb->prefix."item_category_associations`.`product_id` LEFT JOIN `".$wpdb->prefix."product_order` ON ( ( `".$wpdb->prefix."product_list`.`id` = `".$wpdb->prefix."product_order`.`product_id` ) AND ( `".$wpdb->prefix."item_category_associations`.`category_id` = `".$wpdb->prefix."product_order`.`category_id` ) ) WHERE `".$wpdb->prefix."product_list`.`active` = '1' AND `".$wpdb->prefix."item_category_associations`.`category_id` IN ('".$catid."') $no_donations_sql ORDER BY `order_state` DESC,`".$wpdb->prefix."product_order`.`order` $order, `".$wpdb->prefix."product_list`.`id` DESC LIMIT $startnum, $products_per_page";
  151. //exit($sql);
  152. } else {
  153. $rowcount = $wpdb->get_var("SELECT DISTINCT COUNT(`".$wpdb->prefix."product_list`.`id`) AS `count` FROM `".$wpdb->prefix."product_list`,`".$wpdb->prefix."item_category_associations` WHERE `".$wpdb->prefix."product_list`.`active`='1' AND `".$wpdb->prefix."product_list`.`id` = `".$wpdb->prefix."item_category_associations`.`product_id` $no_donations_sql $group_sql");
  154. if(!is_numeric($products_per_page) || ($products_per_page < 1)) { $products_per_page = $rowcount; }
  155. if(($startnum >= $rowcount) && (($rowcount - $products_per_page) >= 0)) {
  156. $startnum = $rowcount - $products_per_page;
  157. }
  158. $sql = "SELECT DISTINCT `".$wpdb->prefix."product_list`.* FROM `".$wpdb->prefix."product_list`,`".$wpdb->prefix."item_category_associations` WHERE `".$wpdb->prefix."product_list`.`active`='1' AND `".$wpdb->prefix."product_list`.`id` = `".$wpdb->prefix."item_category_associations`.`product_id` $no_donations_sql $group_sql ORDER BY `".$wpdb->prefix."product_list`.`special`, `".$wpdb->prefix."product_list`.`id` DESC LIMIT $startnum, $products_per_page";
  159. }
  160. }
  161. // shows page numbers, probably fairly obviously
  162. // exit($sql);
  163. $return_array['product_list'] = $wpdb->get_results($sql,ARRAY_A);
  164. $return_array['page_listing'] = "";
  165. if($rowcount > $products_per_page)
  166. {
  167. if($products_per_page > 0) {
  168. $pages = ceil($rowcount/$products_per_page);
  169. } else {
  170. $pages = 1;
  171. }
  172. //$product_view_url = get_option('product_list_url').$seperator;
  173. $product_view_url = wpsc_category_url($category_id).$seperator;
  174. if(is_numeric($_GET['category'])) {
  175. } else if(is_numeric($_GET['brand'])) {
  176. $product_view_url .= "brand=".$_GET['brand']."&amp;";
  177. } else if($_GET['product_search'] != '') {
  178. $product_view_url .= "product_search=".$_GET['product_search']."&amp;"."view_type=".$_GET['view_type']."&amp;"."item_per_page=".$_GET['item_per_page']."&amp;";
  179. }
  180. if(isset($_GET['order']) && ($_GET['order'] == 'ASC') || ($_GET['order'] == 'DESC') ) {
  181. $product_view_url .= "order={$_GET['order']}&amp;";
  182. }
  183. if(isset($_GET['view_type']) && ($_GET['view_type'] == 'default') || ($_GET['view_type'] == 'grid') ) {
  184. $product_view_url .= "view_type={$_GET['view_type']}&amp;";
  185. }
  186. $return_array['page_listing'] .= "<div class='wpsc_page_numbers'>\n\r";
  187. $return_array['page_listing'] .= "Pages: ";
  188. for($i=1;$i<=$pages;++$i) {
  189. if(($_GET['page_number'] == $i) || (!is_numeric($_GET['page_number']) && ($i == 0))) {
  190. if($_GET['view_all'] != 'true') {
  191. $selected = "class='selected'";
  192. }
  193. } else {
  194. $selected = "class='notselected'";
  195. }
  196. $return_array['page_listing'] .= " <a href='".$product_view_url."page_number=$i' $selected >$i</a>\n\r";
  197. }
  198. $return_array['page_listing'] .= "</div>\n\r";
  199. }
  200. $return_array['category_id'] = $catid;
  201. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('wpsc_get_product_listing','stop');}
  202. return $return_array;
  203. }
  204. function product_display_default($product_list, $group_type, $group_sql = '', $search_sql = '') {
  205. global $wpdb, $wp_rewrite;
  206. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('product_display_default','start');}
  207. $siteurl = get_option('siteurl');
  208. if($wp_rewrite->permalink_structure != '') {
  209. $seperator ="?";
  210. } else {
  211. $seperator ="&amp;";
  212. }
  213. $product_listing_data = wpsc_get_product_listing($product_list, $group_type, $group_sql, $search_sql);
  214. if ($product_list == '')
  215. $product_list = $product_listing_data['product_list'];
  216. if((get_option('wpsc_page_number_position') == 1) || (get_option('wpsc_page_number_position') == 3)) {
  217. $output .= $product_listing_data['page_listing'];
  218. }
  219. if($product_listing_data['category_id']) {
  220. $category_nice_name = $wpdb->get_var("SELECT `nice-name` FROM `".$wpdb->prefix."product_categories` WHERE `id` ='".(int)$product_listing_data['category_id']."' LIMIT 1");
  221. } else {
  222. $category_nice_name = '';
  223. }
  224. if($product_list != null) {
  225. // breadcrumbs start here
  226. if ((get_option("show_breadcrumbs") == '1') && is_numeric($product_listing_data['category_id'])) {
  227. $output .= "<div class='breadcrumb'>";
  228. $output .= "<a href='".get_option('siteurl')."'>".get_option('blogname')."</a> &raquo; ";
  229. $category = $product_listing_data['category_id'];
  230. $category_info = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}product_categories WHERE id='".$category."'",ARRAY_A);
  231. $category_name= $wpdb->get_var("SELECT name FROM {$wpdb->prefix}product_categories WHERE id='".$category."'");
  232. while ($category_info[0]['category_parent']!=0) {
  233. $category_info = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}product_categories WHERE id='".$category_info[0]['category_parent']."'",ARRAY_A);
  234. $output .= "<a href='".wpsc_category_url($category_info[0]['id'])."'>".$category_info[0]['name']."</a> &raquo; ";
  235. }
  236. $output .= "".$category_name."";
  237. // $output .= $product_list[0]['name'];
  238. $output .= "</div>";
  239. }
  240. // breadcrumbs end here
  241. foreach($product_list as $product) {
  242. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('product_start_loop','start', true);}
  243. $num++;
  244. if(function_exists('wpsc_theme_html')) {
  245. $wpsc_theme = wpsc_theme_html($product);
  246. }
  247. $output .= "<div class='productdisplay default_product_display product_view_{$product['id']} {$category_nice_name}'>";
  248. $output .= " <div class='textcol'>";
  249. if($category_data[0]['fee'] == 0) {
  250. $output .= " <div class='imagecol'>";
  251. if(get_option('show_thumbnails') == 1) {
  252. if($product['image'] !=null) {
  253. $image_size = @getimagesize(WPSC_IMAGE_DIR.$product['image']);
  254. $output .= "<a href='".WPSC_IMAGE_URL.$product['image']."' class='thickbox preview_link' rel='".str_replace(" ", "_",$product['name'])."'>";
  255. if($product['thumbnail_image'] != null) {
  256. $image_file_name = $product['thumbnail_image'];
  257. } else {
  258. $image_file_name = $product['image'];
  259. }
  260. $output .= "<img src='".WPSC_THUMBNAIL_URL.$image_file_name."' title='".htmlentities($product['name'], ENT_QUOTES)."' alt='".htmlentities($product['name'], ENT_QUOTES)."' id='product_image_".$product['id']."' class='product_image'/>";
  261. $output .= "</a>";
  262. if(function_exists("gold_shpcrt_display_extra_images")) {
  263. $output .= gold_shpcrt_display_extra_images($product['id'],$product['name']);
  264. }
  265. } else {
  266. if(get_option('product_image_width') != '') {
  267. $output .= "<img src='".WPSC_URL."/no-image-uploaded.gif' title='".$product['name']."' alt='".$product['name']."' width='".get_option('product_image_width')."' height='".get_option('product_image_height')."' id='product_image_".$product['id']."' class='product_image' />";
  268. } else {
  269. $output .= "<img src='".WPSC_URL."/no-image-uploaded.gif' title='".$product['name']."' alt='".$product['name']."' id='product_image_".$product['id']."' class='product_image' />";
  270. }
  271. }
  272. if(function_exists('drag_and_drop_items')) {
  273. $output .= drag_and_drop_items("product_image_".$product['id']);
  274. }
  275. }
  276. $output .= "</div>";
  277. }
  278. if($product['special'] == 1) {
  279. $special = "<span class='special'>".TXT_WPSC_SPECIAL." - </span>";
  280. } else {
  281. $special = "";
  282. }
  283. $output .= "<form id='product_".$product['id']."' name='product_".$product['id']."' method='post' action='".get_option('product_list_url').$seperator."category=".$_GET['category']."' onsubmit='submitform(this);return false;' >";
  284. $output .= "<input type='hidden' name='prodid' value='".$product['id']."' />";
  285. $output .= "<div class='producttext'><h2 class='prodtitles'>";
  286. if (get_option('hide_name_link')!=1) {
  287. $output .= "<a href='".wpsc_product_url($product['id'])."' class='wpsc_product_title' >$special" . stripslashes($product['name']) . "</a>";
  288. } else {
  289. $output .= "<a class='wpsc_product_title' >$special<strong>" . stripslashes($product['name']) . "</strong></a>";
  290. }
  291. $output .= "</h2>";
  292. ob_start();
  293. do_action('wpsc_product_addons', $product['id']);
  294. $output .= ob_get_contents();
  295. ob_end_clean();
  296. if(is_numeric($product['file']) && ($product['file'] > 0)) {
  297. $file_data = $wpdb->get_row("SELECT * FROM `".$wpdb->prefix."product_files` WHERE `id`='".$product['file']."' LIMIT 1",ARRAY_A);
  298. if(($file_data != null) && (function_exists('listen_button'))) {
  299. $output .= listen_button($file_data['idhash'], $file_data['id']);
  300. }
  301. }
  302. if($product['description'] != '') {
  303. $output .= "<p class='wpsc_description'>".nl2br(stripslashes($product['description'])) . "</p>";
  304. }
  305. if($product['additional_description'] != '') {
  306. $output .= "<a href='#' class='additional_description_link' onclick='return show_additional_description(\"additionaldescription".$product['id']."\",\"link_icon".$product['id']."\");'>";
  307. $output .= "<img id='link_icon".$product['id']."' class='additional_description_button' src='".WPSC_URL."/images/icon_window_expand.gif' title='".$product['name']."' alt='".$product['name']."' />";
  308. $output .= TXT_WPSC_MOREDETAILS."</a>";
  309. $output .= "<span class='additional_description' id='additionaldescription".$product['id']."'><br />";
  310. $output .= nl2br(stripslashes($product['additional_description'])) . "";
  311. $output .= "</span><br />";
  312. }
  313. // print the custom fields here, if there are any
  314. $custom_fields = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}wpsc_productmeta` WHERE `product_id` IN('{$product['id']}') AND `custom` IN('1') ",ARRAY_A);
  315. if(count($custom_fields) > 0) {
  316. $output .= "<div class='custom_meta'>";
  317. foreach((array)$custom_fields as $custom_field) {
  318. $output .= "<strong>{$custom_field['meta_key']}:</strong> {$custom_field['meta_value']} <br />";
  319. }
  320. $output .= "</div>";
  321. }
  322. ob_start();
  323. do_action('wpsc_product_addon_after_descr', $product['id']);
  324. $output .= ob_get_contents();
  325. ob_end_clean();
  326. $variations_procesor = new nzshpcrt_variations;
  327. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('display_product_variations','start', true);}
  328. $variations_output = $variations_procesor->display_product_variations($product['id'],false, false, true);
  329. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('display_product_variations','stop', true);}
  330. if($variations_output[0] != '') { //will always be set, may sometimes be an empty string
  331. $output .= "<p class='wpsc_variation_forms'>".$variations_output[0]."</p>";
  332. }
  333. if($variations_output[1] !== null) {
  334. $product['price'] = $variations_output[1];
  335. }
  336. $extras_processor = new extras();
  337. $extras_output = $extras_processor->display_product_extras($product['id'],false,false,true);
  338. $output.="<p class='wpsc_extras_forms'>".$extras_output."</p>";
  339. $output .= "<p class='wpsc_product_price'>";
  340. if($product['donation'] == 1) {
  341. $currency_sign_location = get_option('currency_sign_location');
  342. $currency_type = get_option('currency_type');
  343. $currency_symbol = $wpdb->get_var("SELECT `symbol_html` FROM `".$wpdb->prefix."currency_list` WHERE `id`='".$currency_type."' LIMIT 1") ;
  344. $output .= "<label for='donation_price_".$product['id']."'>".TXT_WPSC_DONATION.":</label> $currency_symbol<input type='text' id='donation_price_".$product['id']."' name='donation_price' value='".number_format($product['price'],2)."' size='6' /><br />";
  345. } else {
  346. if(($product['special']==1) && ($variations_output[1] === null)) {
  347. $output .= "<span class='oldprice'>".TXT_WPSC_PRICE.": " . nzshpcrt_currency_display($product['price'], $product['notax']) . "</span><br />";
  348. $output .= TXT_WPSC_PRICE.": " . nzshpcrt_currency_display(($product['price'] - $product['special_price']), $product['notax'],false,$product['id']) . "<br />";
  349. } else {
  350. $output .= TXT_WPSC_PRICE.": <span id='product_price_".$product['id']."'>" . nzshpcrt_currency_display($product['price'], $product['notax']) . "</span><br />";
  351. }
  352. // if(get_option('display_pnp') == 1) {
  353. // $output .= TXT_WPSC_PNP.": " . nzshpcrt_currency_display($product['pnp'], 1) . "<br />";
  354. // }
  355. }
  356. $output .= "</p>";
  357. $output .= "<input type='hidden' name='item' value='".$product['id']."' />";
  358. $updatelink_sql = "SELECT * FROM ".$wpdb->prefix."wpsc_productmeta WHERE product_id =". $product['id']." AND meta_key='external_link'";
  359. $updatelink_data = $wpdb->get_results($updatelink_sql, ARRAY_A);
  360. $updatelink = get_product_meta($product['id'], 'external_link', true);
  361. if(function_exists('wpsc_theme_html')) {
  362. $wpsc_theme = wpsc_theme_html($product);
  363. }
  364. if(($product['quantity_limited'] == 1) && ($product['quantity'] < 1) && $variations_output[1] === null) {
  365. $output .= "<p class='soldout'>".TXT_WPSC_PRODUCTSOLDOUT."</p>";
  366. } else {
  367. if((get_option('hide_addtocart_button') != 1) && (get_option('payment_gateway') !='google')) {
  368. if ((get_option('addtocart_or_buynow') == 0)) {
  369. if(isset($wpsc_theme) && is_array($wpsc_theme) && ($wpsc_theme['html'] !='')) {
  370. $output .= $wpsc_theme['html'];
  371. } else {
  372. $output .= "<input type='submit' id='product_".$product['id']."_submit_button' class='wpsc_buy_button' name='Buy' value='".TXT_WPSC_ADDTOCART."' />";
  373. }
  374. }
  375. }
  376. }
  377. if(get_option('product_ratings') == 1) {
  378. $output .= "<div class='product_footer'>";
  379. $output .= "<div class='product_average_vote'>";
  380. $output .= "<strong>".TXT_WPSC_AVGCUSTREVIEW.":</strong>";
  381. $output .= nzshpcrt_product_rating($product['id']);
  382. $output .= "</div>";
  383. $output .= "<div class='product_user_vote'>";
  384. $vote_output = nzshpcrt_product_vote($product['id'],"onmouseover='hide_save_indicator(\"saved_".$product['id']."_text\");'");
  385. if($vote_output[1] == 'voted') {
  386. $output .= "<strong><span id='rating_".$product['id']."_text'>".TXT_WPSC_YOURRATING.":</span>";
  387. $output .= "<span class='rating_saved' id='saved_".$product['id']."_text'> ".TXT_WPSC_RATING_SAVED."</span>";
  388. $output .= "</strong>";
  389. } else if($vote_output[1] == 'voting') {
  390. $output .= "<strong><span id='rating_".$product['id']."_text'>".TXT_WPSC_RATETHISITEM.":</span>";
  391. $output .= "<span class='rating_saved' id='saved_".$product['id']."_text'> ".TXT_WPSC_RATING_SAVED."</span>";
  392. $output .= "</strong>";
  393. }
  394. $output .= $vote_output[0];
  395. $output .= "</div>";
  396. $output .= "</div>";
  397. }
  398. $output .= "</div>";
  399. $output .= "</form>";
  400. //exit("<pre>".print_r($updatelink_data,1)."</pre>");
  401. if ((count($updatelink_data)>0)&&($updatelink_data[0]['meta_value'] != '')) {
  402. $output .= external_link($product['id']);
  403. } else {
  404. if (get_option('addtocart_or_buynow')=='1')
  405. if (get_option('payment_gateway')=='google') {
  406. $output .= google_buynow($product['id']);
  407. } else if (get_option('payment_gateway') == 'paypal_multiple') {
  408. $output .= "<form onsubmit='log_paypal_buynow(this)' target='paypal' action='".get_option('paypal_multiple_url')."' method='post'>
  409. <input type='hidden' name='business' value='".get_option('paypal_multiple_business')."'>
  410. <input type='hidden' name='cmd' value='_xclick'>
  411. <input type='hidden' name='item_name' value='".$product['name']."'>
  412. <input type='hidden' id='item_number' name='item_number' value='".$product['id']."'>
  413. <input type='hidden' id='amount' name='amount' value='".$product['price']."'>
  414. <input type='hidden' id='unit' name='unit' value='".$product['price']."'>
  415. <input type='hidden' id='shipping' name='ship11' value='".$shipping."'>
  416. <input type='hidden' name='handling' value='".get_option('base_local_shipping')."'>
  417. <input type='hidden' name='currency_code' value='".get_option('paypal_curcode')."'>
  418. <input type='hidden' name='undefined_quantity' value='0'>
  419. <input type='image' name='submit' border='0' src='https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif' alt='PayPal - The safer, easier way to pay online'>
  420. <img alt='' border='0' width='1' height='1' src='https://www.paypal.com/en_US/i/scr/pixel.gif' >
  421. </form>
  422. ";
  423. }
  424. }
  425. $output .= " </div>\n\r";
  426. $output .= " <div class='clear'></div>\n\r";
  427. $output .= "</div>";
  428. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('product_start_loop','stop', true);}
  429. }
  430. } else {
  431. if($_GET['product_search'] != null) {
  432. $output .= "<br /><strong class='cattitles'>".TXT_WPSC_YOUR_SEARCH_FOR." \"".$_GET['product_search']."\" ".TXT_WPSC_RETURNED_NO_RESULTS."</strong>";
  433. } else {
  434. $output .= "<p>".TXT_WPSC_NOITEMSINTHIS." ".$group_type.".</p>";
  435. if(get_option('wpsc_default_category') == $product_listing_data['category_id']) {
  436. $output .= wpsc_odd_category_setup();
  437. }
  438. }
  439. }
  440. if((get_option('wpsc_page_number_position') == 2) || (get_option('wpsc_page_number_position') == 3)) {
  441. $output .= $product_listing_data['page_listing'];
  442. }
  443. $output = str_replace('$', '&#036;', $output);
  444. if(WPSC_DEBUG === true) {wpsc_debug_start_subtimer('product_display_default','stop');}
  445. return $output;
  446. }
  447. function single_product_display($product_id) {
  448. global $wpdb;
  449. $siteurl = get_option('siteurl');
  450. if(get_option('permalink_structure') != '') {
  451. $seperator ="?";
  452. } else {
  453. $seperator ="&amp;";
  454. }
  455. // what is our product?
  456. if(is_numeric($product_id)) {
  457. $product_list = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."product_list` WHERE `id`='".(int)$product_id."' LIMIT 1",ARRAY_A);
  458. }
  459. // if we have a product
  460. if($product_list != null) {
  461. // show the breadcrumbs
  462. if (get_option("show_breadcrumbs") == '1') {
  463. $output .= "<div class='breadcrumb'>\n\r";
  464. $output .= " <a href='".get_option('siteurl')."'>".get_option('blogname')."</a> &raquo; ";
  465. $category = $wpdb->get_var("SELECT category_id FROM {$wpdb->prefix}item_category_associations WHERE product_id='".$product_id."' ORDER BY id ASC LIMIT 1");
  466. $category_info = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}product_categories WHERE id='".$category."'",ARRAY_A);
  467. $category_name= $wpdb->get_var("SELECT name FROM {$wpdb->prefix}product_categories WHERE id='".$category."'");
  468. while ($category_info[0]['category_parent']!=0) {
  469. $category_info = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}product_categories WHERE id='".$category_info[0]['category_parent']."'",ARRAY_A);
  470. $output .= "<a href='".wpsc_category_url($category_info[0]['id'])."'>".$category_info[0]['name']."</a> &raquo; ";
  471. }
  472. $output .= "<a href='".wpsc_category_url($category)."'>".$category_name."</a> &raquo; ";
  473. $output .= $product_list[0]['name']."\n\r";
  474. $output .= "</div>\n\r";
  475. }
  476. $output .= " <div class='productdisplay'>\n\r";
  477. foreach((array)$product_list as $product) {
  478. $num++;
  479. $output .= " <div class='single_product_display product_view_{$product['id']} '>\n\r";
  480. $output .= " <div class='textcol'>\n\r";
  481. // display the image
  482. $output .= " <div class='imagecol'>\n\r";
  483. if(get_option('show_thumbnails') == 1) {
  484. if($product['image'] !=null) {
  485. if($product['thumbnail_image'] != null) {
  486. $image_file_name = $product['thumbnail_image'];
  487. } else {
  488. $image_file_name = $product['image'];
  489. }
  490. $output .= "<a href='".WPSC_IMAGE_URL.$product['image']."' class='thickbox preview_link' rel='".str_replace(" ", "_",$product['name'])."'>\n\r";
  491. $src = WPSC_IMAGE_URL.$product['image'];
  492. if((get_option('single_view_image_width') >= 1) && (get_option('single_view_image_height') >= 1)) {
  493. $output .= "<img src='index.php?productid=".$product['id']."&amp;width=".get_option('single_view_image_width')."&amp;height=".get_option('single_view_image_height')."' title='".$product['name']."' alt='".$product['name']."' id='product_image_".$product['id']."' class='product_image'/>\n\r";
  494. } else {
  495. $output .= "<img src='".WPSC_THUMBNAIL_URL.$image_file_name."' title='".$product['name']."' alt='".$product['name']."' id='product_image_".$product['id']."' class='product_image'/>\n\r";
  496. }
  497. $output .= "</a>\n\r";
  498. if(function_exists("gold_shpcrt_display_extra_images")) {
  499. $output .= gold_shpcrt_display_extra_images($product['id'],$product['name']);
  500. }
  501. } else {
  502. if(get_option('product_image_width') != '') {
  503. $output .= "<img src='".WPSC_URL."/no-image-uploaded.gif' title='".$product['name']."' alt='".$product['name']."' width='".get_option('product_image_width')."' height='".get_option('product_image_height')."' />\n\r";
  504. } else {
  505. $output .= "<img src='".WPSC_URL."/no-image-uploaded.gif' title='".$product['name']."' alt='".$product['name']."' />\n\r";
  506. }
  507. }
  508. }
  509. $output .= " </div>\n\r";
  510. // if the product is special, say so
  511. if($product['special'] == 1) {
  512. $special = " <span class='special'>".TXT_WPSC_SPECIAL." - </span>\n\r";
  513. }
  514. $output .= " <form id='product_".$product['id']."' name='$num' method='post' action='".get_option('product_list_url').$seperator."category=".$_GET['category']."' onsubmit='submitform(this);return false;' >\n\r";
  515. $output .= "<input type='hidden' name='prodid' value='".$product['id']."' />\n\r";
  516. $output .= " <div class='producttext'>\n\r";
  517. $output .= " <h2 class='prodtitles'>$special" . stripslashes($product['name'])."</h2>\n\r";
  518. if (get_option('wpsc_selected_theme') == 'market3') {
  519. $soldout=0;
  520. if (($product['quantity_limited']) && ($product['quantity']<1)) {
  521. $soldout=1;
  522. }
  523. if ($soldout) {
  524. $output .=" <span class='soldout'>Sold out</span>\n\r";
  525. } else {
  526. $output .=" <span class='price'>".nzshpcrt_currency_display($product['price'], $product['notax'])."</span>\n\r";
  527. }
  528. }
  529. ob_start();
  530. do_action('wpsc_product_addons', $product['id']);
  531. $output .= ob_get_contents();
  532. ob_end_clean();
  533. if(is_numeric($product['file']) && ($product['file'] > 0)) {
  534. $file_data = $wpdb->get_row("SELECT * FROM `".$wpdb->prefix."product_files` WHERE `id`='".$product['file']."' LIMIT 1",ARRAY_A);
  535. if(($file_data != null) && (function_exists('listen_button'))) {
  536. $output .= listen_button($file_data['idhash'], $file_data['id']);
  537. }
  538. }
  539. if($product['description'] != '') {
  540. $output .= " <p class='description'>".nl2br(stripslashes($product['description'])) . "</p>\n\r";
  541. }
  542. if (get_option('wpsc_selected_theme') == 'market3') {
  543. $output .= " <br />";
  544. }
  545. if($product['additional_description'] != '') {
  546. $output .= " <p class='single_additional_description' >\n\r";
  547. if (get_option('wpsc_selected_theme') == 'market3') {
  548. $output .= " <span class='additional'>Additional Details: </span>\n\r";
  549. }
  550. $output .= nl2br(stripslashes($product['additional_description'])) . "";
  551. $output .= " </p>\n\r";
  552. }
  553. // print the custom fields here, if there are any
  554. $custom_fields = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}wpsc_productmeta` WHERE `product_id` IN('{$product['id']}') AND `custom` IN('1') ",ARRAY_A);
  555. if(count($custom_fields) > 0) {
  556. $output .= " <div class='custom_meta'>\n\r";
  557. foreach((array)$custom_fields as $custom_field) {
  558. $output .= " <strong>{$custom_field['meta_key']}:</strong> {$custom_field['meta_value']} <br />\n\r";
  559. }
  560. $output .= " </div>\n\r";
  561. }
  562. ob_start();
  563. do_action('wpsc_product_addon_after_descr', $product['id']);
  564. $output .= ob_get_contents();
  565. ob_end_clean();
  566. if(function_exists('wpsc_akst_share_link') && (get_option('wpsc_share_this') == 1)) {
  567. $output .= wpsc_akst_share_link('return');
  568. }
  569. $variations_procesor = new nzshpcrt_variations;
  570. $variations_output = $variations_procesor->display_product_variations($product['id'],false, false, true);
  571. if($variations_output[0] != '') { //will always be set, may sometimes be an empty string
  572. $output .= " <p class='wpsc_variation_forms'>".$variations_output[0]."</p>";
  573. }
  574. if($variations_output[1] !== null) {
  575. $product['price'] = $variations_output[1];
  576. }
  577. if (get_option('wpsc_selected_theme') != 'market3') {
  578. $output .= " <p class='wpsc_product_price'>";
  579. if($product['donation'] == 1) {
  580. $currency_sign_location = get_option('currency_sign_location');
  581. $currency_type = get_option('currency_type');
  582. $currency_symbol = $wpdb->get_var("SELECT `symbol_html` FROM `".$wpdb->prefix."currency_list` WHERE `id`='".$currency_type."' LIMIT 1") ;
  583. $output .= " <label for='donation_price_".$product['id']."'>".TXT_WPSC_DONATION.":</label> $currency_symbol<input type='text' id='donation_price_".$product['id']."' name='donation_price' value='".number_format($product['price'],2)."' size='6' /><br />";
  584. } else {
  585. if (get_option('wpsc_selected_theme') != 'market3') {
  586. if(($product['special']==1) && ($variations_output[1] === null)) {
  587. $output .= "<span class='oldprice'>".TXT_WPSC_PRICE.": " . nzshpcrt_currency_display($product['price'], $product['notax']) . "</span><br />";
  588. $output .= TXT_WPSC_PRICE.": " . nzshpcrt_currency_display(($product['price'] - $product['special_price']), $product['notax'],false,$product['id']) . "<br />";
  589. } else {
  590. $output .= TXT_WPSC_PRICE.": <span id='product_price_".$product['id']."'>" . nzshpcrt_currency_display($product['price'], $product['notax']) . "</span><br />";
  591. }
  592. // if(get_option('display_pnp') == 1) {
  593. // $output .= TXT_WPSC_PNP.": " . nzshpcrt_currency_display($product['pnp'], 1) . "<br />";
  594. // }
  595. }
  596. }
  597. $output .= "</p>\n\r";
  598. }
  599. if(function_exists('wpsc_theme_html')) {
  600. $wpsc_theme = wpsc_theme_html($product);
  601. }
  602. $output .= "<input type='hidden' name='item' value='".$product['id']."' />";
  603. //AND (`quantity_limited` = '1' AND `quantity` > '0' OR `quantity_limited` = '0' )
  604. if(($product['quantity_limited'] == 1) && ($product['quantity'] < 1) && ($variations_output[1] === null)) {
  605. if (get_option("wpsc_selected_theme")!='market3') {
  606. $output .= "<p class='soldout'>".TXT_WPSC_PRODUCTSOLDOUT."</p>";
  607. }
  608. } else {
  609. if ((get_option('hide_addtocart_button') != 1) && (get_option('addtocart_or_buynow') == 0)) {
  610. if(isset($wpsc_theme) && is_array($wpsc_theme) && ($wpsc_theme['html'] !='')) {
  611. $output .= $wpsc_theme['html'];
  612. } else {
  613. $output .= "<input type='submit' id='product_".$product['id']."_submit_button' class='wpsc_buy_button' name='Buy' value='".TXT_WPSC_ADDTOCART."' />";
  614. }
  615. }
  616. }
  617. if(function_exists('gold_shpcrt_display_gallery')) {
  618. $output .= gold_shpcrt_display_gallery($product['id']);
  619. }
  620. if(get_option('product_ratings') == 1) {
  621. $output .= "<div class='product_footer'>";
  622. $output .= "<div class='product_average_vote'>";
  623. $output .= "<strong>".TXT_WPSC_AVGCUSTREVIEW.":</strong>";
  624. $output .= nzshpcrt_product_rating($product['id']);
  625. $output .= "</div>";
  626. $output .= "<div class='product_user_vote'>";
  627. $vote_output = nzshpcrt_product_vote($product['id'],"onmouseover='hide_save_indicator(\"saved_".$product['id']."_text\");'");
  628. if($vote_output[1] == 'voted') {
  629. $output .= "<strong><span id='rating_".$product['id']."_text'>".TXT_WPSC_YOURRATING.":</span>";
  630. $output .= "<span class='rating_saved' id='saved_".$product['id']."_text'> ".TXT_WPSC_RATING_SAVED."</span>";
  631. $output .= "</strong>";
  632. } else if($vote_output[1] == 'voting') {
  633. $output .= "<strong><span id='rating_".$product['id']."_text'>".TXT_WPSC_RATETHISITEM.":</span>";
  634. $output .= "<span class='rating_saved' id='saved_".$product['id']."_text'> ".TXT_WPSC_RATING_SAVED."</span>";
  635. $output .= "</strong>";
  636. }
  637. $output .= $vote_output[0];
  638. $output .= "</div>";
  639. $output .= "</div>";
  640. }
  641. $output .= " </div>\n\r";
  642. $output .= " </form>\n\r";
  643. if ((count($updatelink_data)>0)&&($updatelink_data[0]['meta_value'] != '')) {
  644. $output .= external_link($product['id']);
  645. } else {
  646. if (get_option('addtocart_or_buynow')=='1')
  647. if (get_option('payment_gateway')=='google') {
  648. $output .= google_buynow($product['id']);
  649. } else if (get_option('payment_gateway') == 'paypal_multiple') {
  650. $output .= "<form onsubmit='log_paypal_buynow(this)' target='paypal' action='".get_option('paypal_multiple_url')."' method='post'>
  651. <input type='hidden' name='business' value='".get_option('paypal_multiple_business')."'>
  652. <input type='hidden' name='cmd' value='_xclick'>
  653. <input type='hidden' name='item_name' value='".$product['name']."'>
  654. <input type='hidden' id='item_number' name='item_number' value='".$product['id']."'>
  655. <input type='hidden' id='amount' name='amount' value='".$product['price']."'>
  656. <input type='hidden' id='unit' name='unit' value='".$product['price']."'>
  657. <input type='hidden' id='shipping' name='ship11' value='".$shipping."'>
  658. <input type='hidden' name='handling' value='".get_option('base_local_shipping')."'>
  659. <input type='hidden' name='currency_code' value='".get_option('paypal_curcode')."'>
  660. <input type='hidden' name='undefined_quantity' value='0'>
  661. <input type='image' name='submit' border='0' src='https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif' alt='PayPal - The safer, easier way to pay online'>
  662. <img alt='' border='0' width='1' height='1' src='https://www.paypal.com/en_US/i/scr/pixel.gif' >
  663. </form>
  664. ";
  665. }
  666. }
  667. $output .= " <form id='product_extra_".$product['id']."' name='product_".$product['id']."' method='post' action='".get_option('product_list_url').$seperator."category=".$_GET['category']."' onsubmit='submitform(this);return false;' >\n\r";
  668. $output .= " <input type='hidden' name='prodid' value='".$product['id']."' />\n\r";
  669. $output .= " <input type='hidden' name='item' value='".$product['id']."' />\n\r";
  670. $output .= " </form>\n\r";
  671. $output .= " </div>\n\r";
  672. $output .= " </div>\n\r";
  673. $output .= " <div class='clear'></div>\n\r";
  674. }
  675. $output .= wpsc_also_bought($product_id);
  676. $output .= " </div>";
  677. } else { // otherwise, we have no product
  678. $output .= "<p>".TXT_WPSC_NOITEMSINTHIS." ".$group_type.".</p>";
  679. }
  680. // replace dollar signs with the HTML code so that PHP doesn't try to interpret them as variables.
  681. $output = str_replace('$', '&#036;', $output);
  682. return $output;
  683. }
  684. function wpsc_post_title_seo($title) {
  685. global $wpdb, $page_id, $wp_query;
  686. if($wp_query->query_vars['product_name'] != '') {
  687. $product_id = $wpdb->get_var("SELECT `product_id` FROM `".$wpdb->prefix."wpsc_productmeta` WHERE `meta_key` IN ( 'url_name' ) AND `meta_value` IN ( '".$wpdb->escape($wp_query->query_vars['product_name'])."' ) LIMIT 1");
  688. $title = $wpdb->get_var("SELECT `name` FROM `".$wpdb->prefix."product_list` WHERE `id` IN('".(int)$product_id."') LIMIT 1");
  689. } else if(is_numeric($_GET['product_id'])) {
  690. $title=$wpdb->get_var("SELECT `name` FROM ".$wpdb->prefix."product_list WHERE id IN ('".(int)$_GET['product_id']."') LIMIT 1" );
  691. }
  692. return stripslashes($title);
  693. }
  694. function wpsc_also_bought($product_id) {
  695. /*
  696. * Displays products that were bought aling with the product defined by $product_id
  697. * most of it scarcely needs describing
  698. */
  699. global $wpdb;
  700. $siteurl = get_option('siteurl');
  701. if(get_option('wpsc_also_bought') == 0) {
  702. //returns nothing if this is off
  703. return '';
  704. }
  705. // to be made customiseable in a future release
  706. $also_bought_limit = 3;
  707. $element_widths = 96;
  708. $image_display_height = 96;
  709. $image_display_width = 96;
  710. $also_bought = $wpdb->get_results("SELECT `".$wpdb->prefix."product_list`.* FROM `".$wpdb->prefix."also_bought_product`, `".$wpdb->prefix."product_list` WHERE `selected_product`='".$product_id."' AND `".$wpdb->prefix."also_bought_product`.`associated_product` = `".$wpdb->prefix."product_list`.`id` AND `".$wpdb->prefix."product_list`.`active` IN('1') ORDER BY `wp_also_bought_product`.`quantity` DESC LIMIT $also_bought_limit",ARRAY_A);
  711. if(count($also_bought) > 0) {
  712. $output = "<p class='wpsc_also_bought_header'>".TXT_WPSC_ALSO_BOUGHT."</p>";
  713. $output .= "<div class='wpsc_also_bought'>";
  714. foreach((array)$also_bought as $also_bought_data) {
  715. $output .= "<p class='wpsc_also_bought' style='width: ".$element_widths."px;'>";
  716. if(get_option('show_thumbnails') == 1) {
  717. if($also_bought_data['image'] !=null) {
  718. $image_size = @getimagesize(WPSC_THUMBNAIL_DIR.$also_bought_data['image']);
  719. $largest_dimension = ($image_size[1] >= $image_size[0]) ? $image_size[1] : $image_size[0];
  720. $size_multiplier = ($image_display_height / $largest_dimension);
  721. // to only make images smaller, scaling up is ugly, also, if one is scaled, so must the other be scaled
  722. if(($image_size[0] >= $image_display_width) || ($image_size[1] >= $image_display_height)) {
  723. $resized_width = $image_size[0]*$size_multiplier;
  724. $resized_height =$image_size[1]*$size_multiplier;
  725. } else {
  726. $resized_width = $image_size[0];
  727. $resized_height =$image_size[1];
  728. }
  729. $margin_top = floor((96 - $resized_height) / 2);
  730. $margin_top = 0;
  731. $image_link = WPSC_IMAGE_URL.$also_bought_data['image'];
  732. if($also_bought_data['thumbnail_image'] != null) {
  733. $image_file_name = $also_bought_data['thumbnail_image'];
  734. } else {
  735. $image_file_name = $also_bought_data['image'];
  736. }
  737. $output .= "<a href='".wpsc_product_url($also_bought_data['id'])."' class='preview_link' rel='".str_replace(" ", "_",$also_bought_data['name'])."'>";
  738. $image_url = "index.php?productid=".$also_bought_data['id']."&amp;thumbnail=true&amp;width=".$resized_width."&amp;height=".$resized_height."";
  739. $output .= "<img src='$siteurl/$image_url' id='product_image_".$also_bought_data['id']."' class='product_image' style='margin-top: ".$margin_top."px'/>";
  740. $output .= "</a>";
  741. } else {
  742. if(get_option('product_image_width') != '') {
  743. $output .= "<img src='".WPSC_URL."/no-image-uploaded.gif' title='".$also_bought_data['name']."' alt='".$also_bought_data['name']."' width='$image_display_height' height='$image_display_height' id='product_image_".$also_bought_data['id']."' class='product_image' />";
  744. } else {
  745. $output .= "<img src='".WPSC_URL."/no-image-uploaded.gif' title='".$also_bought_data['name']."' alt='".$product['name']."' id='product_image_".$also_bought_data['id']."' class='product_image' />";
  746. }
  747. }
  748. }
  749. $output .= "<a class='wpsc_product_name' href='".wpsc_product_url($also_bought_data['id'])."'>".$also_bought_data['name']."</a>";
  750. //$output .= "<a href='".wpsc_product_url($also_bought_data['id'])."'>".$also_bought_data['name']."</a>";
  751. $output .= "</p>";
  752. }
  753. $output .= "</div>";
  754. $output .= "<br clear='all' />";
  755. }
  756. return $output;
  757. }
  758. function fancy_notifications() {
  759. global $wpdb;
  760. if(get_option('fancy_notifications') == 1) {
  761. $output = "";
  762. $output .= "<div id='fancy_notification'>\n\r";
  763. $output .= " <div id='loading_animation'>\n\r";
  764. $output .= '<img id="fancy_notificationimage" title="Loading" alt="Loading" src="'.WPSC_URL.'/images/indicator.gif" />'.TXT_WPSC_UPDATING."...\n\r";
  765. $output .= " </div>\n\r";
  766. $output .= " <div id='fancy_notification_content'>\n\r";
  767. $output .= " </div>\n\r";
  768. $output .= "</div>\n\r";
  769. }
  770. return $output;
  771. }
  772. function fancy_notification_content($product_id, $quantity_limit = false) {
  773. global $wpdb;
  774. $siteurl = get_option('siteurl');
  775. $instock = true;
  776. if(is_numeric($product_id)) {
  777. $sql = "SELECT * FROM `".$wpdb->prefix."product_list` WHERE `id`='".$product_id."' LIMIT 1";
  778. $product = $wpdb->get_row($sql,ARRAY_A);
  779. //if($product['quantity_limited'] == 1) { }
  780. $output = "";
  781. if($quantity_limit == false) {
  782. $output .= "<span>".str_replace("[product_name]", stripslashes($product['name']), TXT_WPSC_YOU_JUST_ADDED)."</span>";
  783. } else {
  784. $output .= "<span>".str_replace("[product_name]", $product['name'], TXT_WPSC_SORRY_NONE_LEFT)."</span>";
  785. }
  786. $output .= "<a href='".get_option('shopping_cart_url')."' class='go_to_checkout'>".TXT_WPSC_GOTOCHECKOUT."</a>";
  787. $output .= "<a href='#' onclick='jQuery(\"#fancy_notification\").css(\"display\", \"none\"); return false;' class='continue_shopping'>".TXT_WPSC_CONTINUE_SHOPPING."</a>";
  788. }
  789. return $output;
  790. }
  791. function wpsc_product_url($product_id, $category_id = null) {
  792. global $wpdb, $wp_rewrite, $wp_query;
  793. if(!is_numeric($category_id) || ($category_id < 1)) {
  794. if(is_numeric($wp_query->query_vars['product_category'])) {
  795. $category_id = $wp_query->query_vars['product_category'];
  796. } else {
  797. $category_list = $wpdb->get_row("SELECT `".$wpdb->prefix."product_categories`.`id`, IF((`".$wpdb->prefix."product_categories`.`id` = '".get_option('wpsc_default_category')."'), 0, 1) AS `order_state` FROM `".$wpdb->prefix."item_category_associations` , `".$wpdb->prefix."product_categories` WHERE `".$wpdb->prefix."item_category_associations`.`product_id` IN ('".$product_id."') AND `".$wpdb->prefix."item_category_associations`.`category_id` = `".$wpdb->prefix."product_categories`.`id` AND `".$wpdb->prefix."product_categories`.`active` IN('1') LIMIT 1",ARRAY_A);
  798. $category_id = $category_list['id'];
  799. }
  800. }
  801. if((($wp_rewrite->rules != null) && ($wp_rewrite != null)) || (get_option('rewrite_rules') != null)) {
  802. $url_name = get_product_meta($product_id, 'url_name', true);
  803. $product_url =wpsc_category_url($category_id).$url_name[0]."/";
  804. } else {
  805. if(!stristr(get_option('product_list_url'), "?")) {
  806. $initial_seperator = "?";
  807. } else {
  808. $initial_seperator = "&amp;";
  809. }
  810. if(is_numeric($category_id) && ($category_id > 0)) {
  811. $product_url = get_option('product_list_url').$initial_seperator."category=".$category_id."&amp;product_id=".$product_id;
  812. } else {
  813. $product_url = get_option('product_list_url').$initial_seperator."product_id=".$product_id;
  814. }
  815. }
  816. return $product_url;
  817. }
  818. function google_buynow($product_id) {
  819. global $wpdb;
  820. $output = "";
  821. if ($product_id > 0){
  822. $product_sql = "SELECT * FROM ".$wpdb->prefix."product_list WHERE id = ".$product_id." LIMIT 1";
  823. $product_info = $wpdb->get_results($product_sql, ARRAY_A);
  824. $variation_sql = "SELECT * FROM ".$wpdb->prefix."variation_priceandstock WHERE product_id = ".$product_id;
  825. $variation_info = $wpdb->get_results($variation_sql, ARRAY_A);
  826. if (count($variation_info) > 0) {
  827. $variation = 1;
  828. $price = $variation_info[0]['price'];
  829. }
  830. if (get_option('google_server_type')=='production') {
  831. $action_target = "https://checkout.google.com/cws/v2/Merchant/".get_option('google_id')."/checkoutForm";
  832. } else {
  833. $action_target = "https://sandbox.google.com/checkout/cws/v2/Merchant/".get_option('google_id')."/checkoutForm";
  834. }
  835. $product_info = $product_info[0];
  836. $output .= "<form id='BB_BuyButtonForm".$product_id."' onsubmit='log_buynow(this);return true;' action= 'https://sandbox.google.com/checkout/cws/v2/Merchant/".get_option('google_id')."/checkoutForm'c method='post' name='BB_BuyButtonForm".$product_id."'>";
  837. $output .= "<input name='product_id' type='hidden' value='".$product_id."'>";
  838. $output .= "<input name='item_name_1' type='hidden' value='".$product_info['name']."'>";
  839. $output .= "<input name='item_description_1' type='hidden' value='".$product_info['description']."'>";
  840. $output .= "<input name='item_quantity_1' type='hidden' value='1'>";
  841. if ($variation == 1) {
  842. $output .= "<input id='item_price' name='item_price_1' type='hidden' value='".$price."'>";
  843. } else {
  844. if ($product_info['special']=='0') {
  845. $output .= "<input id='item_price' name='item_price_1' type='hidden' value='".$product_info['price']."'>";
  846. } else {
  847. $output .= "<input name='item_price_1' type='hidden' value='".$product_info['special_price']."'>";
  848. }
  849. }
  850. $outp

Large files files are truncated, but you can click here to view the full file