/phpshop1/WEB-INF/modules/product/lib/ps_product.inc

http://phpshop.googlecode.com/ · PHP · 783 lines · 491 code · 96 blank · 196 comment · 68 complexity · 29d77a7fafbdf89f59dd1fa5e4df3191 MD5 · raw file

  1. <?php
  2. /*
  3. * The ps_product class
  4. *
  5. * Copyright (c) Edikon Corporation. All rights reserved.
  6. * Distributed under the phpShop Public License (pSPL) Version 1.0.
  7. *
  8. * $Id: ps_product.inc,v 1.1.1.1 2004/07/27 14:58:56 pablo Exp $
  9. *
  10. ****************************************************************************
  11. *
  12. * CLASS DESCRIPTION
  13. *
  14. * ps_product
  15. *
  16. * The class is is used to manage the function register.
  17. *
  18. * propeties:
  19. *
  20. * methods:
  21. *
  22. *
  23. *************************************************************************/
  24. class ps_product {
  25. var $classname = "ps_product";
  26. /**************************************************************************
  27. ** name: validate()
  28. ** created by:
  29. ** description: Validates fields and uploaded image files.
  30. ** parameters:
  31. ** returns:
  32. ***************************************************************************/
  33. function validate(&$d) {
  34. $valid = true;
  35. $db = new ps_DB;
  36. /** Validate Fields **/
  37. $q = "SELECT * FROM product WHERE product_sku='";
  38. $q .= $d["product_sku"] . "'";
  39. $db->query($q);
  40. if ($db->next_record()&&($db->f("product_id") != $d["product_id"])) {
  41. $d["error"] .= "ERROR: A Product with that SKU already exists.<br />";
  42. $valid = false;
  43. }
  44. if (!$d["product_sku"]) {
  45. $d["error"] .= "ERROR: A Product Sku must be entered.<br />";
  46. $valid = false;
  47. }
  48. if (!$d["product_name"]) {
  49. $d["error"] .= "ERROR: A name must be entered.<br />";
  50. $valid = false;
  51. }
  52. if ($d["product_available_date"]) {
  53. $date = explode("/",$d["product_available_date"]);
  54. if (checkdate($date[0],$date[1],$date[2])) {
  55. $d["product_available_date_timestamp"] =
  56. mktime("","","",$date[0],$date[1],$date[2]);
  57. } else {
  58. $d["error"] .= "ERROR: Availability date is invalid.<br />";
  59. $valid = false;
  60. }
  61. }
  62. /** Validate Product Specific Fields **/
  63. if (!$d["product_parent_id"]) {
  64. if (!$d["category_id"]) {
  65. $d["error"] .= "ERROR: A category must be selected.<br />";
  66. $valid = false;
  67. }
  68. }
  69. /** Validate Images **/
  70. if (!validate_image($d,"product_thumb_image","product")) {
  71. $valid = false;
  72. }
  73. if (!validate_image($d,"product_full_image","product")) {
  74. $valid = false;
  75. }
  76. return $valid;
  77. }
  78. /**************************************************************************
  79. ** name: validate_delete()
  80. ** created by:
  81. ** description:
  82. ** parameters:
  83. ** returns:
  84. ***************************************************************************/
  85. function validate_delete(&$d) {
  86. /* Check that ps_vendor_id and product_id match */
  87. if (!$this->check_vendor($d)) {
  88. $d["error"] = "ERROR: Cannot delete product. Wrong product or vendor." ;
  89. return false;
  90. }
  91. /* Get the image filenames from the database */
  92. $db = new ps_DB;
  93. $q = "SELECT product_thumb_image,product_full_image ";
  94. $q .= "FROM product ";
  95. $q .= "WHERE product_id='" . $d["product_id"] . "'";
  96. $db->query($q);
  97. $db->next_record();
  98. /* Validate product_thumb_image */
  99. $d["product_thumb_image_curr"] = $db->f("product_thumb_image");
  100. $d["product_thumb_image_name"] = "none";
  101. if (!validate_image($d,"product_thumb_image","product")) {
  102. return false;
  103. }
  104. /* Validate product_full_image */
  105. $d["product_full_image_curr"] = $db->f("product_full_image");
  106. $d["product_full_image_name"] = "none";
  107. if (!validate_image($d,"product_full_image","product")) {
  108. return false;
  109. }
  110. return true;
  111. }
  112. /**************************************************************************
  113. ** name: add()
  114. ** created by: jep
  115. ** description:
  116. ** parameters:
  117. ** returns:
  118. ***************************************************************************/
  119. function add(&$d) {
  120. global $ps_vendor_id;
  121. if (!$this->validate($d)) {
  122. return false;
  123. }
  124. if (!process_images($d)) {
  125. return false;
  126. }
  127. $timestamp = time();
  128. $db = new ps_DB;
  129. if ($d["product_publish"] == "") {
  130. $d["product_publish"] = "N";
  131. }
  132. if ($d["product_special"] == "") {
  133. $d["product_special"] = "N";
  134. }
  135. $q = "INSERT INTO product (vendor_id,product_parent_id,product_sku,";
  136. $q .= "product_name,product_desc,product_s_desc,";
  137. $q .= "product_thumb_image,product_full_image,";
  138. $q .= "product_publish,product_weight,product_weight_uom,";
  139. $q .= "product_length,product_width,product_height,product_lwh_uom,";
  140. $q .= "product_url,product_in_stock,";
  141. $q .= "product_available_date,product_special,product_discount_id,";
  142. $q .= "cdate,mdate) ";
  143. $q .= "VALUES ('";
  144. $q .= $ps_vendor_id . "','" . $d["product_parent_id"] . "','";
  145. $q .= $d["product_sku"] . "','" . $d["product_name"] . "','";
  146. $q .= $d["product_desc"] . "','" . $d["product_s_desc"] . "','";
  147. $q .= $d["product_thumb_image"] . "','";
  148. $q .= $d["product_full_image"] . "','" . $d["product_publish"] . "','";
  149. $q .= $d["product_weight"] . "','" . $d["product_weight_uom"] . "','";
  150. $q .= $d["product_length"] . "','" . $d["product_width"] . "','";
  151. $q .= $d["product_height"] . "','" . $d["product_lwh_uom"] . "','";
  152. $q .= $d["product_url"] . "','" . $d["product_in_stock"] . "','";
  153. $q .= $d["product_available_date_timestamp"] . "','";
  154. $q .= $d["product_special"] . "','";
  155. $q .= $d["product_discount_id"] . "','$timestamp','$timestamp')";
  156. $db->query($q);
  157. // Get the assigned product_id //
  158. $q = "SELECT product_id FROM product ";
  159. $q .= "WHERE product_sku = '" . $d["product_sku"] . "' ";
  160. $q .= "AND vendor_id = '" . $ps_vendor_id . "' ";
  161. $q .= "AND cdate = $timestamp";
  162. $db->query($q);
  163. $db->next_record();
  164. $d["product_id"] = $db->f("product_id");
  165. // If is Item, add attributes from parent //
  166. if ($d["product_parent_id"]) {
  167. $q = "SELECT attribute_name FROM product_attribute_sku ";
  168. $q .= "WHERE product_id='" . $d["product_parent_id"] . "' ";
  169. $q .= "ORDER BY attribute_list,attribute_name";
  170. $db->query($q);
  171. $db2 = new ps_DB;
  172. $i = 0;
  173. while($db->next_record()) {
  174. $i++;
  175. $q2 = "INSERT INTO product_attribute ";
  176. $q2 .= "(product_id,attribute_name,attribute_value) ";
  177. $q2 .= "VALUES ('" . $d["product_id"] . "','";
  178. $q2 .= $db->f("attribute_name") . "','" . $d["attribute_$i"] . "')";
  179. $db2->query($q2);
  180. }
  181. }
  182. /* If is Product, Insert category ids */
  183. elseif ($d["category_id"]) {
  184. $q = "INSERT INTO product_category_xref ";
  185. $q .= "(category_id,product_id) ";
  186. $q .= "VALUES ('" . $d["category_id"] . "','";
  187. $q .= $d["product_id"] . "')";
  188. $db->query($q);
  189. }
  190. return true;
  191. }
  192. /**************************************************************************
  193. ** name: update()
  194. ** created by:
  195. ** description:
  196. ** parameters:
  197. ** returns:
  198. ***************************************************************************/
  199. function update(&$d) {
  200. global $ps_vendor_id;
  201. if (!$this->validate($d)) {
  202. return false;
  203. }
  204. if (!process_images($d)) {
  205. return false;
  206. }
  207. $timestamp = time();
  208. $db = new ps_DB;
  209. if ($d["product_publish"] == "") {
  210. $d["product_publish"] = "N";
  211. }
  212. if ($d["product_special"] == "") {
  213. $d["product_special"] = "N";
  214. }
  215. $q = "UPDATE product SET ";
  216. $q .= "product_sku='" . $d["product_sku"] . "',";
  217. $q .= "product_name='" . $d["product_name"] . "',";
  218. $q .= "product_s_desc='" . $d["product_s_desc"] . "',";
  219. $q .= "product_desc='" . $d["product_desc"] . "',";
  220. $q .= "product_publish='" . $d["product_publish"] . "',";
  221. $q .= "product_weight='" . $d["product_weight"] . "',";
  222. $q .= "product_weight_uom='" . $d["product_weight_uom"] . "',";
  223. $q .= "product_length='" . $d["product_length"] . "',";
  224. $q .= "product_width='" . $d["product_width"] . "',";
  225. $q .= "product_height='" . $d["product_height"] . "',";
  226. $q .= "product_lwh_uom='" . $d["product_lwh_uom"] . "',";
  227. $q .= "product_url='" . $d["product_url"] . "',";
  228. $q .= "product_in_stock='" . $d["product_in_stock"] . "',";
  229. $q .= "product_available_date='";
  230. $q .= $d["product_available_date_timestamp"] . "',";
  231. $q .= "product_special='" . $d["product_special"] . "',";
  232. $q .= "product_discount_id='" . $d["product_discount_id"] . "',";
  233. $q .= "product_thumb_image='" . $d["product_thumb_image"] . "',";
  234. $q .= "product_full_image='" . $d["product_full_image"] . "',";
  235. $q .= "mdate='$timestamp' ";
  236. $q .= "WHERE product_id='" . $d["product_id"] . "'";
  237. $q .= "AND vendor_id='" . $ps_vendor_id . "'";
  238. $db->query($q);
  239. /* If is Item, update attributes */
  240. if ($d["product_parent_id"]) {
  241. $q = "SELECT attribute_name FROM product_attribute_sku ";
  242. $q .= "WHERE product_id='" . $d["product_parent_id"] . "' ";
  243. $q .= "ORDER BY attribute_list,attribute_name";
  244. $db->query($q);
  245. $db2 = new ps_DB;
  246. $i = 0;
  247. while($db->next_record()) {
  248. $i++;
  249. $q2 = "UPDATE product_attribute SET ";
  250. $q2 .= "attribute_value='" . $d["attribute_$i"] . "' ";
  251. $q2 .= "WHERE product_id = '" . $d["product_id"] . "' ";
  252. $q2 .= "AND attribute_name = '" . $db->f("attribute_name") . "' ";
  253. $db2->query($q2);
  254. }
  255. /* If it is a Product, update Category */
  256. } elseif ($d["category_id"]) {
  257. $q = "UPDATE product_category_xref ";
  258. $q .= "SET category_id = '" . $d["category_id"] . "' ";
  259. $q .= "WHERE product_id = '" . $d["product_id"] . "' ";
  260. $db->query($q);
  261. }
  262. return true;
  263. }
  264. /**************************************************************************
  265. ** name: delete()
  266. ** created by: jep
  267. ** description:
  268. ** parameters:
  269. ** returns:
  270. ***************************************************************************/
  271. function delete(&$d) {
  272. if (!$this->validate_delete($d)) {
  273. return false;
  274. }
  275. $db = new ps_DB;
  276. $product_id = $d["product_id"];
  277. /* If is Product */
  278. if ($this->is_product($product_id)) {
  279. /* Delete all items first */
  280. $q = "SELECT product_id FROM product ";
  281. $q .= "WHERE product_parent_id='$product_id'";
  282. $db->query($q);
  283. while($db->next_record()) {
  284. $d2["product_id"] = $db->f("product_id");
  285. if (!$this->delete($d2)) {
  286. $d["error"] = $d2["error"];
  287. return false;
  288. }
  289. }
  290. /* Delete attributes */
  291. $q = "DELETE FROM product_attribute_sku ";
  292. $q .= "WHERE product_id='$product_id' ";
  293. $db->query($q);
  294. /* Delete categories xref */
  295. $q = "DELETE FROM product_category_xref ";
  296. $q .= "WHERE product_id = '$product_id' ";
  297. $db->query($q);
  298. }
  299. /* If is Item */
  300. else {
  301. /* Delete attribute values */
  302. $q = "DELETE FROM product_attribute WHERE product_id='$product_id'";
  303. $db->query($q);
  304. }
  305. /* For both Product and Item */
  306. /* Delete Image files */
  307. if (!process_images($d)) {
  308. return false;
  309. }
  310. /* Delete Prices */
  311. $q = "DELETE FROM product_price WHERE product_id = '$product_id'";
  312. $db->query($q);
  313. /* Delete entry from product table */
  314. $q = "DELETE FROM product WHERE product_id = '$product_id'";
  315. $db->query($q);
  316. /* If only deleting an item, go to the parent product page after
  317. ** the deletion. This had to be done here because the product id
  318. ** of the item to be deleted had to be passed as product_id */
  319. if ($d["product_parent_id"]) {
  320. $d["product_id"] = $d["product_parent_id"];
  321. $d["product_parent_id"] = "";
  322. }
  323. return true;
  324. }
  325. /**************************************************************************
  326. ** name: check_vendor()
  327. ** created by:
  328. ** description:
  329. ** parameters:
  330. ** returns:
  331. ***************************************************************************/
  332. function check_vendor($d) {
  333. global $ps_vendor_id;
  334. $db = new ps_DB;
  335. $q = "SELECT vendor_id FROM product ";
  336. $q .= "WHERE vendor_id = '$ps_vendor_id' ";
  337. $q .= "AND product_id = '" . $d["product_id"] . "' ";
  338. $db->query($q);
  339. if ($db->next_record()) {
  340. return true;
  341. } else {
  342. return false;
  343. }
  344. }
  345. /**************************************************************************
  346. ** name: sql()
  347. ** created by: jep
  348. ** description:
  349. ** parameters:
  350. ** returns:
  351. ***************************************************************************/
  352. function sql($product_id) {
  353. $db = new ps_DB;
  354. $q = "SELECT * FROM product WHERE product_id='$product_id' ";
  355. $db->query($q);
  356. return $db;
  357. }
  358. /**************************************************************************
  359. ** name: items_sql()
  360. ** created by: jep
  361. ** description:
  362. ** parameters:
  363. ** returns:
  364. ***************************************************************************/
  365. function items_sql($product_id) {
  366. $db = new ps_DB;
  367. $q = "SELECT * FROM product ";
  368. $q .= "WHERE product_parent_id='$product_id' ";
  369. $q .= "ORDER BY product_name";
  370. $db->query($q);
  371. return $db;
  372. }
  373. /**************************************************************************
  374. ** name: is_product()
  375. ** created by: jep
  376. ** description:
  377. ** parameters:
  378. ** returns:
  379. ***************************************************************************/
  380. function is_product($product_id) {
  381. $db = new ps_DB;
  382. $q = "SELECT product_parent_id FROM product ";
  383. $q .= "WHERE product_id='$product_id' ";
  384. $db->query($q);
  385. $db->next_record();
  386. if ($db->f("product_parent_id") == 0) {
  387. return true;
  388. }
  389. else {
  390. return false;
  391. }
  392. }
  393. /**************************************************************************
  394. ** name: attribute_sql()
  395. ** created by: jep
  396. ** description:
  397. ** parameters:
  398. ** returns:
  399. ***************************************************************************/
  400. function attribute_sql($item_id="",$product_id="",$attribute_name="") {
  401. $db = new ps_DB;
  402. if ($item_id and $product_id) {
  403. $q = "SELECT * FROM product_attribute,product_attribute_sku ";
  404. $q .= "WHERE product_attribute.product_id = '$item_id' ";
  405. $q .= "AND product_attribute_sku.product_id ='$product_id' ";
  406. if ($attribute_name) {
  407. $q .= "AND product_attribute.attribute_name = $attribute_name ";
  408. }
  409. $q .= "AND product_attribute.attribute_name = ";
  410. $q .= "product_attribute_sku.attribute_name ";
  411. $q .= "ORDER BY attribute_list,product_attribute.attribute_name";
  412. } elseif ($item_id) {
  413. $q = "SELECT * FROM product_attribute ";
  414. $q .= "WHERE product_id = '$item_id' ";
  415. if ($attribute_name) {
  416. $q .= "AND attribute_name = $attribute_name ";
  417. }
  418. } elseif ($product_id) {
  419. $q = "SELECT * FROM product_attribute_sku ";
  420. $q .= "WHERE product_id ='$product_id' ";
  421. if ($attribute_name) {
  422. $q .= "AND product_attribute.attribute_name = $attribute_name ";
  423. }
  424. $q .= "ORDER BY attribute_list,attribute_name";
  425. } else {
  426. /* Error: no arguments were provided. */
  427. return 0;
  428. }
  429. $db->query($q);
  430. return $db;
  431. }
  432. /**************************************************************************
  433. ** name: get_child_product_ids()
  434. ** created by: jep
  435. ** description:
  436. ** parameters:
  437. ** returns:
  438. ***************************************************************************/
  439. function get_child_product_ids($pid) {
  440. $db = new ps_DB;
  441. $q = "SELECT product_id FROM product ";
  442. $q .= "WHERE product_parent_id='$pid' ";
  443. $db->query($q);
  444. $i = 0;
  445. while($db->next_record()) {
  446. $list[$i] = $db->f("product_id");
  447. $i++;
  448. }
  449. return $list;
  450. }
  451. /**************************************************************************
  452. ** name: parent_has_children()
  453. ** created by: jep
  454. ** description:
  455. ** parameters:
  456. ** returns:
  457. ***************************************************************************/
  458. function parent_has_children($pid) {
  459. $db = new ps_DB;
  460. $q = "SELECT * FROM product WHERE product_parent_id='$pid' ";
  461. $db->query($q);
  462. if ($db->next_record()) {
  463. return True;
  464. }
  465. else {
  466. return False;
  467. }
  468. }
  469. /**************************************************************************
  470. ** name: product_has_attributes()
  471. ** created by: jep
  472. ** description:
  473. ** parameters:
  474. ** returns:
  475. ***************************************************************************/
  476. function product_has_attributes($pid) {
  477. $db = new ps_DB;
  478. $q = "SELECT * FROM product_attribute_sku WHERE product_id='$pid' ";
  479. $db->query($q);
  480. if ($db->next_record()) {
  481. return True;
  482. }
  483. else {
  484. return False;
  485. }
  486. }
  487. /**************************************************************************
  488. ** name: get_field()
  489. ** created by: pablo
  490. ** description:
  491. ** parameters:
  492. ** returns:
  493. ***************************************************************************/
  494. function get_field($product_id, $field_name) {
  495. $db = new ps_DB;
  496. $q = "SELECT $field_name FROM product WHERE product_id='$product_id'";
  497. $db->query($q);
  498. if ($db->next_record()) {
  499. return $db->f($field_name);
  500. }
  501. else {
  502. return False;
  503. }
  504. }
  505. /**************************************************************************
  506. ** name: get_flypage()
  507. ** created by: pablo
  508. ** description: Determines flypage for given product_id by looking at
  509. ** the product category. If no flypage is specified for this
  510. ** category, then the default FLYPAGE (in phpshop.cfg) is
  511. ** returned.
  512. ** parameters:
  513. ** returns:
  514. ***************************************************************************/
  515. function get_flypage($product_id) {
  516. $db = new ps_DB;
  517. $q = "SELECT category.category_flypage FROM category, product_category_xref, product ";
  518. $q .= "WHERE product.product_id='$product_id' ";
  519. $q .= "AND product_category_xref.product_id=product.product_id ";
  520. $q .= "AND product_category_xref.category_id=category.category_id";
  521. $db->query($q);
  522. $db->next_record();
  523. if ($db->f("category_flypage")) {
  524. return $db->f("category_flypage");
  525. }
  526. else {
  527. return FLYPAGE;
  528. }
  529. }
  530. /**************************************************************************
  531. ** name: show_image()
  532. ** created by: pablo
  533. ** description: Shows the image send in the $image field.
  534. ** $args are appended to the IMG tag.
  535. ** parameters:
  536. ** returns:
  537. ***************************************************************************/
  538. function show_image($image, $args="") {
  539. require_once("vendor/lib/ps_vendor.inc");
  540. $ps_vendor = new ps_vendor;
  541. global $ps_vendor_id;
  542. global $SERVER_PORT;
  543. if ($SERVER_PORT == "443")
  544. $url = SECUREURL;
  545. else
  546. $url = URL;
  547. $url .= $ps_vendor->get_field($ps_vendor_id,"vendor_image_path");
  548. $url .= "product/";
  549. if (!isset($image) || ($image == "")) {
  550. $url .= "noimage.gif";
  551. } else {
  552. $url .= $image;
  553. }
  554. echo "<img border=\"0\" src=\"$url\" $args />";
  555. return True;
  556. }
  557. /**************************************************************************
  558. ** name: get_price($product_id)
  559. ** created by:
  560. ** description: gets price for a given product Id based on
  561. ** the shopper group a user belongs to and whether
  562. ** and item has a price or it must grab it from the
  563. ** parent.
  564. ** parameters:
  565. ** returns:
  566. ***************************************************************************/
  567. function get_price($product_id) {
  568. global $auth;
  569. $db = new ps_DB;
  570. // Get the discount value
  571. $q = "SELECT * from product WHERE product_id='$product_id'";
  572. $db->query($q);
  573. if ($db->next_record()) {
  574. $discount=$db->f("product_discount_id");
  575. }
  576. // Get the vendor id for this product.
  577. $q = "SELECT vendor_id FROM product WHERE product_id='$product_id'";
  578. $db->query($q);
  579. $db->next_record();
  580. $vendor_id = $db->f("vendor_id");
  581. // Get the shopper group id for this product and user
  582. $q = "SELECT shopper_group_id FROM shopper_vendor_xref WHERE ";
  583. $q .= "user_id='";
  584. $q .= $auth["user_id"] . "' AND vendor_id='$vendor_id'";
  585. $db->query($q);
  586. $db->next_record();
  587. $shopper_group_id = $db->f("shopper_group_id");
  588. // Get the default shopper group id for this product and user
  589. $q = "SELECT * FROM shopper_group WHERE ";
  590. $q .= "vendor_id='$vendor_id' AND ";
  591. $q .= "shopper_group_name='-default-'";
  592. $db->query($q);
  593. $db->next_record();
  594. $default_shopper_group_id = $db->f("shopper_group_id");
  595. // Get the product_parent_id for this product/item
  596. $product_parent_id = $this->get_field($product_id, "product_parent_id");
  597. // Getting prices
  598. //
  599. // If the shopper group has a price then show it, otherwise
  600. // show the default price.
  601. $q = "SELECT * from product_price WHERE product_id='$product_id' AND ";
  602. $q .= "shopper_group_id='$shopper_group_id'";
  603. $db->query($q);
  604. if ($db->next_record()) {
  605. $price_info["product_price"]=sprintf("%.2f",$db->f("product_price")*(100-$discount)/100);
  606. $price_info["product_currency"]=$db->f("product_currency");
  607. $price_info["item"]=True;
  608. return $price_info;
  609. }
  610. // Get default price
  611. $q = "SELECT * from product_price WHERE product_id='$product_id' AND ";
  612. $q .= "shopper_group_id='$default_shopper_group_id'";
  613. $db->query($q);
  614. if ($db->next_record()) {
  615. $price_info["product_price"]=sprintf("%.2f",$db->f("product_price")*(100-$discount)/100);
  616. $price_info["product_currency"]=$db->f("product_currency");
  617. $price_info["item"]=True;
  618. return $price_info;
  619. }
  620. // Maybe its an item with no price, check again with product_parent_id
  621. $q = "SELECT * from product_price WHERE product_id='$product_parent_id' AND ";
  622. $q .= "shopper_group_id='$shopper_group_id'";
  623. $db->query($q);
  624. if ($db->next_record()) {
  625. $price_info["product_price"]=sprintf("%.2f",$db->f("product_price")*(100-$discount)/100);
  626. $price_info["product_currency"]=$db->f("product_currency");
  627. return $price_info;
  628. }
  629. $q = "SELECT * from product_price WHERE product_id='$product_parent_id' AND ";
  630. $q .= "shopper_group_id='$default_shopper_group_id'";
  631. $db->query($q);
  632. if ($db->next_record()) {
  633. $price_info["product_price"]=sprintf("%.2f",$db->f("product_price")*(100-$discount)/100);
  634. $price_info["product_currency"]=$db->f("product_currency");
  635. return $price_info;
  636. }
  637. // No price found
  638. return False;
  639. }
  640. /**************************************************************************
  641. ** name: show_snapshot($product_sku)
  642. ** created by:
  643. ** description: display a snapshot of a product based on the product sku.
  644. ** This was written to privde a quick way to display a product on
  645. ** a side navigation bar.
  646. ** parameters:
  647. ** returns:
  648. ***************************************************************************/
  649. function show_snapshot($product_sku) {
  650. global $ps_vendor_id, $sess;
  651. $db = new ps_DB;
  652. $q = "SELECT * from product WHERE product_sku='$product_sku'";
  653. $db->query($q);
  654. if ($db->next_record()) {
  655. $price = $this->get_price($db->f("product_id"));
  656. echo "<b>".$db->f("product_name")."</b>\n";
  657. echo "<br />\n";
  658. $url = "?page=".$this->get_flypage($db->f("product_id"));
  659. if ($db->f("product_parent_id")) {
  660. $url = "?page=".$this->get_flypage($db->f("product_parent_id"));
  661. $url .= "&amp;product_id=" . $db->f("product_parent_id");
  662. } else {
  663. $url = "?page=".$this->get_flypage($db->f("product_id"));
  664. $url .= "&amp;product_id=" . $db->f("product_id");
  665. }
  666. echo "<a href=\"". $sess->url(URL . $url)."\">";
  667. $this->show_image($db->f("product_thumb_image"),
  668. "width=\"80\" alt=\"".$db->f("product_name")."\"");
  669. echo "</a>";
  670. echo "<br />\n";
  671. if($db->f("product_discount_id")>"0"){
  672. echo "<font color=\"red\"><strike><b>Was:</b> $";
  673. printf("%.2f", $price["product_price"]/(100-$db->f("product_discount_id"))*100);
  674. echo "</strike></font><br />";
  675. }
  676. echo "Price:" . $price["product_price"] . " " . $price["product_currency"];
  677. echo "<br />\n";
  678. $url = "?page=shop/cart&amp;func=cartAdd&amp;product_id=" . $db->f("product_id");
  679. echo "<a href=\"". $sess->url(URL . $url)."\">Add to Cart</a><br />\n";
  680. }
  681. else {
  682. // Product SKU not found
  683. return False;
  684. }
  685. }
  686. }
  687. ?>