public static function load($thing) { $product = new Product(); $product->thing = $thing; //members $fields_raw = $product->thing->getData(); $tmpFields = array(); foreach ($fields_raw as $field) { $tmpFields[$field->getKey()] = $field; } $product->fields = $tmpFields; //variants $thingVariants = $product->thing->getChildThings("variant"); $variants = array(); foreach ($thingVariants as $thingVariant) { $variants[] = Variant::load($thingVariant); } $product->variants = $variants; //options $thingOptions = $product->thing->getChildThings("option"); $options = array(); foreach ($thingOptions as $thingOptions) { $options[] = Option::load($thingOptions); } $product->options = $options; return $product; }
public static function getVariants($product_id, $variant_id = null) { $obj = new Thing(); $obj->db->select('thing.id'); $obj->db->from('thing'); $obj->db->where('name = "product"'); $obj->db->where('altid', $product_id); $query = $obj->db->get(); $prodId = -1; if (count($query->result()) == 1) { foreach ($query->result() as $row) { $prodId = $row->id; } } else { throw new InvalidParameterException($product_id . " is not a valid product id"); } //get all variants now that we have right prod id $obj->db->select('thing.id'); $obj->db->from('thing'); $obj->db->where('name = "variant"'); $obj->db->where('thing_id', $prodId); if (!is_null($variant_id)) { $obj->db->where('altid', $variant_id); } $query = $obj->db->get(); //get things for products $thingVariants = array(); foreach ($query->result() as $row) { array_push($thingVariants, Thing::load($row->id)); } //get products $variants = array(); foreach ($thingVariants as $thingVariants) { $variants[] = Variant::load($thingVariants); } return $variants; //encode json //$json = array(); //foreach($variants as $variant) //$json[] = $variant->toJson(); //$json = json_encode($json, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT); //echo "<pre>"; //print_r($json); //echo "</pre>"; //return $products; }