Esempio n. 1
0
 /**
  * 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;
 }
Esempio n. 2
0
 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;
 }
Esempio n. 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;
 }
Esempio n. 4
0
 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;
 }