/**
  * 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;
 }
Exemple #3
0
 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;
 }