📄 ps_product.inc
字号:
<?phpclass ps_product { var $classname = "ps_product"; /************************************************************************** ** name: validate() ** created by: ** description: Validates fields and uploaded image files. ** parameters: ** returns: ***************************************************************************/ function validate(&$d) { $valid = true; $db = new ps_DB; /** Validate Fields **/ $q = "SELECT * FROM product WHERE product_sku='"; $q .= $d["product_sku"] . "'"; $db->query($q); if ($db->next_record()&&($db->f("product_id") != $d["product_id"])) { $d["error"] .= "ERROR: A Product with that SKU already exists.<BR>"; $valid = false; } if (!$d["product_sku"]) { $d["error"] .= "ERROR: A Product Sku must be entered.<BR>"; $valid = false; } if (!$d["product_name"]) { $d["error"] .= "ERROR: A name must be entered.<BR>"; $valid = false; } if ($d["product_available_date"]) { $date = explode("/",$d["product_available_date"]); if (checkdate($date[0],$date[1],$date[2])) { $d["product_available_date_timestamp"] = mktime("","","",$date[0],$date[1],$date[2]); } else { $d["error"] .= "ERROR: Availability date is invalid.<BR>"; $valid = false; } } /** Validate Product Specific Fields **/ if (!$d["product_parent_id"]) { if (!$d["category_id"]) { $d["error"] .= "ERROR: A category must be selected.<BR>"; $valid = false; } } /** Validate Images **/ if (!validate_image($d,"product_thumb_image","product")) { $valid = false; } if (!validate_image($d,"product_full_image","product")) { $valid = false; } return $valid; } /************************************************************************** ** name: validate_delete() ** created by: ** description: ** parameters: ** returns: ***************************************************************************/ function validate_delete(&$d) { /* Check that ps_vendor_id and product_id match */ if (!$this->check_vendor($d)) { $d["error"] = "ERROR: Cannot delete product. Wrong product or vendor." ; return false; } /* Get the image filenames from the database */ $db = new ps_DB; $q = "SELECT product_thumb_image,product_full_image "; $q .= "FROM product "; $q .= "WHERE product_id='" . $d["product_id"] . "'"; $db->query($q); $db->next_record(); /* Validate product_thumb_image */ $d["product_thumb_image_curr"] = $db->f("product_thumb_image"); $d["product_thumb_image_name"] = "none"; if (!validate_image($d,"product_thumb_image","product")) { return false; } /* Validate product_full_image */ $d["product_full_image_curr"] = $db->f("product_full_image"); $d["product_full_image_name"] = "none"; if (!validate_image($d,"product_full_image","product")) { return false; } return true; } /************************************************************************** ** name: add() ** created by: jep ** description: ** parameters: ** returns: ***************************************************************************/ function add(&$d) { global $ps_vendor_id; if (!$this->validate($d)) { return false; } if (!process_images($d)) { return false; } $timestamp = time(); $db = new ps_DB; if ($d["product_publish"] == "") { $d["product_publish"] = "N"; } $q = "INSERT INTO product (vendor_id,product_parent_id,product_sku,"; $q .= "product_name,product_desc,product_s_desc,"; $q .= "product_thumb_image,product_full_image,"; $q .= "product_publish,product_weight,product_weight_uom,"; $q .= "product_length,product_width,product_height,product_lwh_uom,"; $q .= "product_url,product_in_stock,"; $q .= "product_available_date,product_special,product_discount_id,"; $q .= "cdate,mdate) "; $q .= "VALUES ('"; $q .= $ps_vendor_id . "','" . $d["product_parent_id"] . "','"; $q .= $d["product_sku"] . "','" . $d["product_name"] . "','"; $q .= $d["product_desc"] . "','" . $d["product_s_desc"] . "','"; $q .= $d["product_thumb_image"] . "','"; $q .= $d["product_full_image"] . "','" . $d["product_publish"] . "','"; $q .= $d["product_weight"] . "','" . $d["product_weight_uom"] . "','"; $q .= $d["product_length"] . "','" . $d["product_width"] . "','"; $q .= $d["product_height"] . "','" . $d["product_lwh_uom"] . "','"; $q .= $d["product_url"] . "','" . $d["product_in_stock"] . "','"; $q .= $d["product_available_date_timestamp"] . "','"; $q .= $d["product_special"] . "','"; $q .= $d["product_discount_id"] . "','$timestamp','$timestamp')"; $db->query($q); // Get the assigned product_id // $q = "SELECT product_id FROM product "; $q .= "WHERE product_sku = '" . $d["product_sku"] . "' "; $q .= "AND vendor_id = '" . $ps_vendor_id . "' "; $q .= "AND cdate = $timestamp"; $db->query($q); $db->next_record(); $d["product_id"] = $db->f("product_id"); // If is Item, add attributes from parent // if ($d["product_parent_id"]) { $q = "SELECT attribute_name FROM product_attribute_sku "; $q .= "WHERE product_id='" . $d["product_parent_id"] . "' "; $q .= "ORDER BY attribute_list,attribute_name"; $db->query($q); $db2 = new ps_DB; $i = 0; while($db->next_record()) { $i++; $q2 = "INSERT INTO product_attribute "; $q2 .= "(product_id,attribute_name,attribute_value) "; $q2 .= "VALUES ('" . $d["product_id"] . "','"; $q2 .= $db->f("attribute_name") . "','" . $d["attribute_$i"] . "')"; $db2->query($q2); } } /* If is Product, Insert category ids */ elseif ($d["category_id"]) { $q = "INSERT INTO product_category_xref "; $q .= "(category_id,product_id) "; $q .= "VALUES ('" . $d["category_id"] . "','"; $q .= $d["product_id"] . "')"; $db->query($q); } return true; } /************************************************************************** ** name: update() ** created by: ** description: ** parameters: ** returns: ***************************************************************************/ function update(&$d) { global $ps_vendor_id; if (!$this->validate($d)) { return false; } if (!process_images($d)) { return false; } $timestamp = time(); $db = new ps_DB; if ($d["product_publish"] == "") { $d["product_publish"] = "N"; } $q = "UPDATE product SET "; $q .= "product_sku='" . $d["product_sku"] . "',"; $q .= "product_name='" . $d["product_name"] . "',"; $q .= "product_s_desc='" . $d["product_s_desc"] . "',"; $q .= "product_desc='" . $d["product_desc"] . "',"; $q .= "product_publish='" . $d["product_publish"] . "',"; $q .= "product_weight='" . $d["product_weight"] . "',"; $q .= "product_weight_uom='" . $d["product_weight_uom"] . "',"; $q .= "product_length='" . $d["product_length"] . "',"; $q .= "product_width='" . $d["product_width"] . "',"; $q .= "product_height='" . $d["product_height"] . "',"; $q .= "product_lwh_uom='" . $d["product_lwh_uom"] . "',"; $q .= "product_url='" . $d["product_url"] . "',"; $q .= "product_in_stock='" . $d["product_in_stock"] . "',"; $q .= "product_available_date='"; $q .= $d["product_available_date_timestamp"] . "',"; $q .= "product_special='" . $d["product_special"] . "',"; $q .= "product_discount_id='" . $d["product_discount_id"] . "',"; $q .= "product_thumb_image='" . $d["product_thumb_image"] . "',"; $q .= "product_full_image='" . $d["product_full_image"] . "',"; $q .= "mdate='$timestamp' "; $q .= "WHERE product_id='" . $d["product_id"] . "'"; $q .= "AND vendor_id='" . $ps_vendor_id . "'"; $db->query($q); /* If is Item, update attributes */ if ($d["product_parent_id"]) { $q = "SELECT attribute_name FROM product_attribute_sku "; $q .= "WHERE product_id='" . $d["product_parent_id"] . "' "; $q .= "ORDER BY attribute_list,attribute_name"; $db->query($q); $db2 = new ps_DB; $i = 0; while($db->next_record()) { $i++; $q2 = "UPDATE product_attribute SET "; $q2 .= "attribute_value='" . $d["attribute_$i"] . "' "; $q2 .= "WHERE product_id = '" . $d["product_id"] . "' "; $q2 .= "AND attribute_name = '" . $db->f("attribute_name") . "' "; $db2->query($q2); } /* If it is a Product, update Category */ } elseif ($d["category_id"]) { $q = "UPDATE product_category_xref "; $q .= "SET category_id = '" . $d["category_id"] . "' "; $q .= "WHERE product_id = '" . $d["product_id"] . "' "; $db->query($q); } return true; } /************************************************************************** ** name: delete() ** created by: jep ** description: ** parameters: ** returns: ***************************************************************************/ function delete(&$d) { if (!$this->validate_delete($d)) { return false; } $db = new ps_DB; $product_id = $d["product_id"]; /* If is Product */ if ($this->is_product($product_id)) { /* Delete all items first */ $q = "SELECT product_id FROM product "; $q .= "WHERE product_parent_id='$product_id'"; $db->query($q); while($db->next_record()) { $d2["product_id"] = $db->f("product_id"); if (!$this->delete($d2)) { $d["error"] = $d2["error"]; return false; } } /* Delete attributes */ $q = "DELETE FROM product_attribute_sku "; $q .= "WHERE product_id='$product_id' "; $db->query($q); /* Delete categories xref */ $q = "DELETE FROM product_category_xref "; $q .= "WHERE product_id = '$product_id' "; $db->query($q); } /* If is Item */ else { /* Delete attribute values */ $q = "DELETE FROM product_attribute WHERE product_id='$product_id'"; $db->query($q); } /* For both Product and Item */ /* Delete Image files */ if (!process_images($d)) { return false; } /* Delete Prices */ $q = "DELETE FROM product_price WHERE product_id = '$product_id'"; $db->query($q); /* Delete entry from product table */ $q = "DELETE FROM product WHERE product_id = '$product_id'"; $db->query($q); /* If only deleting an item, go to the parent product page after ** the deletion. This had to be done here because the product id ** of the item to be deleted had to be passed as product_id */ if ($d["product_parent_id"]) { $d["product_id"] = $d["product_parent_id"]; $d["product_parent_id"] = ""; } return true; } /************************************************************************** ** name: check_vendor() ** created by: ** description: ** parameters: ** returns: ***************************************************************************/ function check_vendor($d) { global $ps_vendor_id; $db = new ps_DB; $q = "SELECT vendor_id FROM product "; $q .= "WHERE vendor_id = '$ps_vendor_id' "; $q .= "AND product_id = '" . $d["product_id"] . "' "; $db->query($q); if ($db->next_record()) { return true; } else { return false; } } /************************************************************************** ** name: sql() ** created by: jep
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -