/** * Get categories * @return array */ public function getCategories() { $result = array(); if (!empty($this->response->CategoryArray->Category)) { foreach ($this->response->CategoryArray->Category as $category) { $category_id = XmlHelper::getAsString($category, 'CategoryID'); $result[$category_id] = array('CategoryID' => $category_id, 'CategoryLevel' => XmlHelper::getAsString($category, 'CategoryLevel'), 'CategoryName' => XmlHelper::getAsString($category, 'CategoryName'), 'CategoryParentID' => XmlHelper::getAsString($category, 'CategoryParentID'), 'Expired' => XmlHelper::getAsBoolean($category, 'Expired'), 'IntlAutosFixedCat' => XmlHelper::getAsBoolean($category, 'IntlAutosFixedCat'), 'LeafCategory' => XmlHelper::getAsBoolean($category, 'LeafCategory'), 'LSD' => XmlHelper::getAsBoolean($category, 'LSD'), 'ORPA' => XmlHelper::getAsBoolean($category, 'ORPA'), 'Virtual' => XmlHelper::getAsBoolean($category, 'Virtual'), 'BestOfferEnabled' => XmlHelper::getAsBoolean($category, 'BestOfferEnabled'), 'B2BVATEnabled' => XmlHelper::getAsBoolean($category, 'B2BVATEnabled'), 'AutoPayEnabled' => XmlHelper::getAsBoolean($category, 'AutoPayEnabled')); if ($result[$category_id]['CategoryParentID'] == $category_id) { $result[$category_id]['CategoryParentID'] = 0; } } foreach ($result as &$item) { $parent_category_id = $item['CategoryParentID']; $parent_ids = array(); $names = array($item['CategoryName']); while ($parent_category_id) { $category = $result[$parent_category_id]; $parent_ids[] = $parent_category_id; $names[] = $category['CategoryName']; $parent_category_id = $category['CategoryParentID']; } $item['CategoryParentIds'] = array_reverse($parent_ids); $item['CategoryNames'] = array_reverse($names); } unset($item); } return $result; }
/** * @return ProductVariation[] */ public function getProductVariations() { $result = array(); $options = array(); if (!empty($this->item->Variations->Variation)) { foreach ($this->item->Variations->Variation as $item) { $variants = array(); $price = XmlHelper::getAsDouble($item, 'StartPrice'); $quantity = XmlHelper::getAsDouble($item, 'Quantity'); foreach ($item->VariationSpecifics->NameValueList as $option_item) { $option_name = XmlHelper::getAsString($option_item, 'Name'); $variant_name = XmlHelper::getAsString($option_item, 'Value'); if (!isset($options[$option_name])) { $option = new ProductOption($option_name); $options[$option_name] = $option; } else { $option = $options[$option_name]; } $variant = new ProductOptionVariant($option, $variant_name); $option->setVariant($variant); $variants[] = $variant; } $result[] = new ProductVariation($price, $quantity, $variants); } } return $result; }
/** * Constructor * @param \SimpleXMLElement $response */ public function __construct(\SimpleXMLElement $response) { $this->code_service = XmlHelper::getAsBoolean($response, 'CODService'); $this->dimensions_required = XmlHelper::getAsBoolean($response, 'DimensionsRequired'); $this->expedited_service = XmlHelper::getAsBoolean($response, 'ExpeditedService'); $this->international_service = XmlHelper::getAsBoolean($response, 'InternationalService'); $this->surcharge_applicable = XmlHelper::getAsBoolean($response, 'SurchargeApplicable'); $this->valid_for_selling_flow = XmlHelper::getAsBoolean($response, 'ValidForSellingFlow'); $this->weight_required = XmlHelper::getAsBoolean($response, 'WeightRequired'); $this->service_type = XmlHelper::getArrayAsStrings($response, 'ServiceType'); $this->shipping_carrier = XmlHelper::getArrayAsStrings($response, 'ShippingCarrier'); $this->shipping_package = XmlHelper::getArrayAsStrings($response, 'ShippingPackage'); if (isset($response->ShippingServicePackageDetails)) { $this->shipping_service_package_details = array(); foreach ($response->ShippingServicePackageDetails as $item) { $this->shipping_service_package_details[] = array('dimensions_required' => XmlHelper::normalizeBoolean($item->DimensionsRequired), 'name' => (string) $item->Name); } } if (isset($response->DeprecationDetails)) { $this->deprecation_details = array(); foreach ($response->DeprecationDetails as $item) { $this->deprecation_details[] = array('announcement_start_time' => isset($item->AnnouncementStartTime) ? $item->AnnouncementStartTime : null, 'event_time' => isset($item->EventTime) ? $item->EventTime : null, 'message_type' => isset($item->MessageType) ? $item->MessageType : null); } } if (isset($response->SiteID)) { $this->site_id = $response->SiteID; } $this->cost_group_flat = XmlHelper::getAsString($response, 'CostGroupFlat', ''); $this->description = XmlHelper::getAsString($response, 'Description', ''); $this->mapped_to_shipping_service_id = XmlHelper::getAsString($response, 'MappedToShippingServiceID', ''); $this->shipping_category = XmlHelper::getAsString($response, 'ShippingCategory', ''); $this->shipping_service = XmlHelper::getAsString($response, 'ShippingService', ''); $this->shipping_service_id = XmlHelper::getAsString($response, 'ShippingServiceID', ''); $this->shipping_time_max = XmlHelper::getAsString($response, 'ShippingTimeMax', ''); $this->shipping_time_min = XmlHelper::getAsString($response, 'ShippingTimeMin', ''); $this->detail_version = XmlHelper::getAsString($response, 'DetailVersion', ''); $this->update_time = XmlHelper::getAsString($response, 'UpdateTime', ''); }
/** * Get field value of key as boolean * * @param string $key * @return bool|null */ public function getFieldBoolean($key) { /** @var \SimpleXMLElement $category */ $category = $this->response->Category; /** @var \SimpleXMLElement $site */ $site = $this->response->SiteDefaults; if (!empty($category->{$key})) { return XmlHelper::getAsBoolean($category, $key); } return XmlHelper::getAsBoolean($site, $key); }