/** * 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; }