Esempio n. 1
0
 /**
  * Perform an export according to the given request.
  *
  * @param Mage_Core_Controller_Request_Http $request
  * @param Mage_Core_Controller_Response_Http $response
  * @throws Exception
  */
 public function process(Mage_Core_Controller_Request_Http $request, Mage_Core_Controller_Response_Http $response)
 {
     // In case store is part of URL path use it to choose config.
     $store = $request->get('store');
     if ($store) {
         $store = Mage::app()->getStore($store);
     }
     $apiConfigCharset = Mage::getStoreConfig("api/config/charset", $store);
     $start_date = strtotime($request->getParam('start_date'));
     $end_date = strtotime($request->getParam('end_date'));
     if (!$start_date || !$end_date) {
         throw new Exception('Start and end dates are required', 400);
     }
     $page = (int) $request->getParam('page');
     /* @var $orders Mage_Sales_Model_Mysql4_Order_Collection */
     $orders = Mage::getResourceModel('sales/order_collection');
     // might use 'created_at' attribute instead
     $orders->addAttributeToFilter('updated_at', array('from' => date('Y-m-d H:i:s', $start_date), 'to' => date('Y-m-d H:i:s', $end_date)));
     if ($store) {
         $orders->addAttributeToFilter('store_id', $store->getId());
     }
     if ($page > 0) {
         $orders->setPage($page, $this->_getExportPageSize());
     }
     $xml = new XMLWriter();
     $xml->openMemory();
     $xml->startDocument('1.0', $apiConfigCharset);
     $this->_writeOrders($orders, $xml, $store ? $store->getId() : 0);
     $xml->endDocument();
     $response->clearHeaders()->setHeader('Content-Type', 'text/xml; charset=' . $apiConfigCharset)->setBody($xml->outputMemory(true));
 }