/** * Prepare resource and return results * * @param Mage_Payment_Model_Method_Abstract $method * @param Mage_Api2_Model_Acl_Filter $filter * * @return array */ public function prepareMethod(Mage_Payment_Model_Method_Abstract $method, Mage_Api2_Model_Acl_Filter $filter) { // Get raw outbound data $data = []; $attributes = $filter->getAttributesToInclude(); $attributes = array_combine($attributes, $attributes); $attributes = array_merge($attributes, array_intersect_key($this->attributeMap, $attributes)); foreach ($attributes as $externalKey => $internalKey) { if ($externalKey === 'cc_types') { $data[$externalKey] = $this->_getPaymentMethodAvailableCcTypes($method); } else { $data[$externalKey] = $method->getDataUsingMethod($internalKey); } } // Fire event $data = new Varien_Object($data); Mage::dispatchEvent('aoe_cartapi_payment_method_prepare', ['data' => $data, 'filter' => $filter, 'resource' => $method]); $data = $data->getData(); // Filter outbound data $data = $filter->out($data); // Fix data types $data = $this->fixTypes($data); // Add null values for missing data foreach ($filter->getAttributesToInclude() as $code) { if (!array_key_exists($code, $data)) { $data[$code] = null; } } // Sort the result by key ksort($data); return $data; }
protected function prepareRate(Mage_Sales_Model_Quote_Address_Rate $rate, Mage_Api2_Model_Acl_Filter $filter) { // Get raw outbound data $data = []; $attributes = $filter->getAttributesToInclude(); $attributes = array_combine($attributes, $attributes); $attributes = array_merge($attributes, array_intersect_key($this->attributeMap, $attributes)); foreach ($attributes as $externalKey => $internalKey) { $data[$externalKey] = $rate->getDataUsingMethod($internalKey); } // Fire event $data = new Varien_Object($data); Mage::dispatchEvent('aoe_cartapi_shipping_method_prepare', ['data' => $data, 'filter' => $filter, 'resource' => $rate]); $data = $data->getData(); // Filter outbound data $data = $filter->out($data); // Fix data types $data = $this->fixTypes($data); // Add null values for missing data foreach ($filter->getAttributesToInclude() as $code) { if (!array_key_exists($code, $data)) { $data[$code] = null; } } // Sort the result by key ksort($data); return $data; }
protected function prepareProduct(Mage_Catalog_Model_Product $product, Mage_Api2_Model_Acl_Filter $filter) { // Get raw outbound data $data = $this->loadResourceAttributes($product, $filter->getAttributesToInclude()); // ========================= // BEGIN - Manual attributes // ========================= // Add stock data if (in_array('is_saleable', $filter->getAttributesToInclude())) { $data['is_saleable'] = $product->isSaleable(); } $stockItem = $product->getStockItem(); if ($stockItem instanceof Mage_CatalogInventory_Model_Stock_Item) { if (in_array('is_in_stock', $filter->getAttributesToInclude())) { $data['is_in_stock'] = $stockItem->getIsInStock(); } if (in_array('qty', $filter->getAttributesToInclude())) { $data['qty'] = $stockItem->getQty(); } if (in_array('min_sale_qty', $filter->getAttributesToInclude())) { $data['min_sale_qty'] = $stockItem->getMinSaleQty(); } if (in_array('max_sale_qty', $filter->getAttributesToInclude())) { $data['max_sale_qty'] = $stockItem->getMaxSaleQty(); } } // Add images if (in_array('images', $filter->getAttributesToInclude())) { $data['images'] = $this->getImageUrls($product); } // ========================= // END - Manual attributes // ========================= // Fire event $data = new Varien_Object($data); Mage::dispatchEvent('aoe_cartapi_crosssell_prepare', ['data' => $data, 'filter' => $filter, 'resource' => $product]); $data = $data->getData(); // Filter outbound data $data = $filter->out($data); // Fix data types $data = $this->fixTypes($data); // Add null values for missing data foreach ($filter->getAttributesToInclude() as $code) { if (!array_key_exists($code, $data)) { $data[$code] = null; } } // Sort the result by key ksort($data); return $data; }
protected function prepareItem(Mage_Sales_Model_Quote_Item $item, Mage_Api2_Model_Acl_Filter $filter) { // Get raw outbound data $data = $this->loadResourceAttributes($item, $filter->getAttributesToInclude()); // ========================= // BEGIN - Manual attributes // ========================= /** @var Mage_Tax_Model_Config $taxConfig */ $taxConfig = Mage::getModel('tax/config'); // row_total - including tax if (in_array('row_total', $filter->getAttributesToInclude()) && $taxConfig->displayCartPricesInclTax($item->getStore())) { $data['row_total'] = $item->getRowTotalInclTax(); } // original_price if (in_array('original_price', $filter->getAttributesToInclude())) { $product = $item->getProduct(); $data['original_price'] = $product->getPriceModel()->getPrice($product); } // Product URL if (in_array('url', $filter->getAttributesToInclude())) { $data['url'] = $this->getProductUrl($item); } // image URLs if (in_array('images', $filter->getAttributesToInclude())) { $data['images'] = $this->getImageUrls($item->getProduct()); } // child items if (!$item->getParentItemId() && in_array('children', $filter->getAttributesToInclude())) { $data['children'] = []; foreach ($item->getQuote()->getItemsCollection() as $quoteItem) { /** @var Mage_Sales_Model_Quote_Item $quoteItem */ if (!$quoteItem->isDeleted() && $quoteItem->getParentItemId() == $item->getId()) { $quoteItemData = $this->prepareItem($quoteItem, $filter); // Remove the children entry from a child as that kind of nesting is not allowed anyway unset($quoteItemData['children']); $data['children'][] = $quoteItemData; } } } // messages if (in_array('messages', $filter->getAttributesToInclude())) { $data['messages'] = $item->getMessage(false); } // is_saleable flag if (in_array('is_saleable', $filter->getAttributesToInclude())) { $data['is_saleable'] = (bool) $item->getProduct()->getIsSalable(); } // ========================= // END - Manual attributes // ========================= // Fire event $data = new Varien_Object($data); Mage::dispatchEvent('aoe_cartapi_item_prepare', ['data' => $data, 'filter' => $filter, 'resource' => $item]); $data = $data->getData(); // Filter outbound data $data = $filter->out($data); // Fix data types $data = $this->fixTypes($data); // Add null values for missing data foreach ($filter->getAttributesToInclude() as $code) { if (!array_key_exists($code, $data)) { $data[$code] = null; } } // Sort the result by key ksort($data); // Fire event $data = new Varien_Object($data); Mage::dispatchEvent('aoe_cartapi_item_prepare_after', ['data' => $data, 'filter' => $filter, 'resource' => $item]); $data = $data->getData(); return $data; }