Пример #1
0
 /**
  * Get specific data from an asn.1 structure  based on configuration
  * @param type $data the ASN.1 data struture
  * @param type $config the configuration of the data to retrive.
  * @return Array an array containing flatten asn.1 data keyed by the configuration.
  */
 protected function getASNDataByConfig($data, $config, $fields)
 {
     $dataArr = Asn_Base::getDataArray($data, true);
     $valueArr = array();
     foreach ($config as $key => $val) {
         $tmpVal = $this->parseASNData(explode(',', $val), $dataArr, $fields);
         if ($tmpVal !== FALSE) {
             $valueArr[$key] = $tmpVal;
         }
     }
     return count($valueArr) ? $valueArr : false;
 }
Пример #2
0
 /**
  * @see Billrun_Plugin_Interface_IProcessor::processData
  */
 public function processData($type, $fileHandle, \Billrun_Processor &$processor)
 {
     if ($this->getName() != $type) {
         return FALSE;
     }
     $processorData =& $processor->getData();
     $bytes = '';
     do {
         $bytes .= fread($fileHandle, self::FILE_READ_AHEAD_LENGTH);
     } while (!feof($fileHandle));
     $parsedData = Asn_Base::parseASNString($bytes);
     $processorData['header'] = $processor->buildHeader($parsedData);
     //$bytes = substr($bytes, $processor->getParser()->getLastParseLength());
     if (!isset($this->tap3Config[$this->fileVersion])) {
         Billrun_Factory::log("Processing tap3 file {$processor->filename} with non supported version : {$this->fileVersion}", Zend_log::NOTICE);
         throw new Exception("Processing tap3 file {$processor->filename} with non supported version : {$this->fileVersion}");
     }
     $trailer = $processor->buildTrailer($parsedData);
     $this->initExchangeRates($trailer);
     if (empty($this->currentFileHeader['notification']) || !empty($this->currentFileHeader['header'])) {
         foreach ($parsedData->getData() as $record) {
             if (in_array($record->getType(), $this->tap3Config['config']['data_records'])) {
                 foreach ($record->getData() as $key => $data) {
                     $row = $processor->buildDataRow($data);
                     if ($row) {
                         $row['file_rec_num'] = $key + 1;
                         $processorData['data'][] = $row;
                     }
                 }
             } else {
                 if (!isset($this->tap3Config['header'][$record->getType()]) && !isset($this->tap3Config['trailer'][$record->getType()])) {
                     Billrun_Factory::log()->log('No config for type : ' . $record->getType(), Zend_Log::DEBUG);
                 }
             }
         }
     } else {
         Billrun_Factory::log()->log('Got notification/empty file : ' . $processor->filename . ' , moving on...', Zend_Log::INFO);
     }
     $processorData['trailer'] = $trailer;
     return true;
 }
Пример #3
0
 /**
  * @see Billrun_Plugin_Interface_IProcessor::processData
  */
 public function processData($type, $fileHandle, \Billrun_Processor &$processor)
 {
     if ($this->getName() != $type) {
         return FALSE;
     }
     $processorData =& $processor->getData();
     $bytes = '';
     do {
         $bytes .= fread($fileHandle, self::FILE_READ_AHEAD_LENGTH);
     } while (!feof($fileHandle));
     $parsedData = Asn_Base::parseASNString($bytes);
     $processorData['header'] = $processor->buildHeader($parsedData);
     //$bytes = substr($bytes, $processor->getParser()->getLastParseLength());
     foreach ($parsedData->getData() as $record) {
         if (in_array($record->getType(), $this->nsnConfig['config']['data_records'])) {
             foreach ($record->getData() as $key => $data) {
                 $row = $processor->buildDataRow($data);
                 if ($row) {
                     $row['file_rec_num'] = $key;
                     $processorData['data'][] = $row;
                 }
             }
         } else {
             //Billrun_Factory::log()->log(print_r($record,1) ,  Zend_Log::DEBUG);
         }
     }
     $processorData['trailer'] = $processor->buildTrailer($parsedData);
     return true;
 }