/**
  * Upload store csv file and import data from it
  *
  * @throws Mage_Core_Exception
  * @param Varien_Object $object
  * @return Bluehorse_Storelocator_Model_Storelocator
  */
 public function uploadAndImport($object)
 {
     $this->_behavior = $object->getRequest()->getPost('behavior');
     $importFile = $_FILES['import_file'];
     if (empty($importFile['tmp_name'])) {
         return;
     }
     $csvFile = $importFile['tmp_name'];
     $this->_importErrors = array();
     $this->_importedRows = 0;
     $io = new Varien_Io_File();
     $info = pathinfo($csvFile);
     $io->open(array('path' => $info['dirname']));
     $io->streamOpen($info['basename'], 'r');
     // check and skip headers
     $headers = $io->streamReadCsv();
     if ($headers === false || count($headers) < 19) {
         $io->streamClose();
         Mage::throwException(Mage::helper('bluehorse_storelocator')->__('Invalid Stores File Format'));
     }
     $adapter = $this->_getWriteAdapter();
     $adapter->beginTransaction();
     try {
         $rowNumber = 1;
         $importData = array();
         while (false !== ($csvLine = $io->streamReadCsv())) {
             $rowNumber++;
             if (empty($csvLine)) {
                 continue;
             }
             $row = $this->_getImportRow($csvLine, $rowNumber);
             if ($row !== false) {
                 $importData[] = $row;
             }
             if (count($importData) == 5000) {
                 $this->_saveImportData($importData);
                 $importData = array();
             }
         }
         if ($this->_importErrors) {
             $error = Mage::helper('bluehorse_storelocator')->__('File has not been imported. See the following list of errors: <br>%s', implode(" <br>", $this->_importErrors));
             Mage::throwException($error);
         }
         if (empty($this->_importErrors)) {
             $this->_saveImportData($importData);
         }
         $io->streamClose();
     } catch (Mage_Core_Exception $e) {
         $adapter->rollback();
         $io->streamClose();
         Mage::throwException($e->getMessage());
     } catch (Exception $e) {
         $adapter->rollback();
         $io->streamClose();
         Mage::logException($e);
         Mage::throwException(Mage::helper('bluehorse_storelocator')->__('An error occurred while import stores csv.'));
     }
     $adapter->commit();
     //add success message
     Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('bluehorse_storelocator')->__($this->_importedRows . ' - Rows imported successfully.'));
     return $this;
 }
Example #2
0
 /**
  * add DHL account number to Intraship request
  *
  * @param Varien_Object $event
  * @return void
  */
 public function dhlIntrashipSendShipmentBefore($event)
 {
     $request = $event->getRequest();
     $parcel = $request->offsetGet('shipment');
     $dhlaccount = $parcel->getShipment()->getBillingAddress()->getDhlaccount();
     if (!is_null($parcel->getShipment()->getShippingAddress()->getDhlaccount())) {
         $dhlaccount = $parcel->getShipment()->getShippingAddress()->getDhlaccount();
     }
     if ($parcel->hasCustomizedAddress()) {
         $dhlaccount = $parcel->getCustomizedAddress()->offsetGet('dhlaccount');
     }
     if (0 < strlen($dhlaccount)) {
         $params = $request->offsetGet('params');
         $data = $params->offsetGet('ShipmentOrder');
         if (array_key_exists('Company', $data['Shipment']['Receiver']['Company']) && (false == array_key_exists('name2', $data['Shipment']['Receiver']['Company']['Company']) || 0 == strlen(trim($data['Shipment']['Receiver']['Company']['Company']['name2'])))) {
             $data['Shipment']['Receiver']['Company']['Company']['name2'] = $dhlaccount;
         } elseif (false == array_key_exists('Communication', $data['Shipment']['Receiver']) || false == array_key_exists('contactPerson', $data['Shipment']['Receiver']['Communication']) || 0 == strlen(trim($data['Shipment']['Receiver']['Communication']['contactPerson']))) {
             if (false == array_key_exists('Communication', $data['Shipment']['Receiver'])) {
                 $data['Shipment']['Receiver']['Communication'] = array();
             }
             $data['Shipment']['Receiver']['Communication']['contactPerson'] = $dhlaccount;
         } elseif (false == array_key_exists('careOfName', $data['Shipment']['Receiver']['Address']) || 0 == strlen(trim($data['Shipment']['Receiver']['Address']['careOfName']))) {
             $data['Shipment']['Receiver']['Address']['careOfName'] = $dhlaccount;
         }
         $request->offsetGet('params')->offsetSet('ShipmentOrder', $data);
     }
 }