コード例 #1
0
 /**
  * Распарсить email и получить массив данных
  *
  * @param  mixed     $forced_operation_id если установлен - id операции устанавливаемый в ручную
  * @return array|int в случае ошибки
  */
 public function getData($forced_operation_id = false)
 {
     // Последние 4 цифры карты
     preg_match('/' . $this->_parser->getAccountRegexp() . '/im', $this->_mail, $matches);
     $lastFourDigits = isset($matches[1]) ? $matches[1] : false;
     // Сумма платежа
     preg_match('/' . $this->_parser->getTotalRegexp() . '/im', $this->_mail, $matches);
     $amount = isset($matches[1]) ? $matches[1] : false;
     // Вычищаем левые символы в сумме
     $amount = preg_replace("/[^\\d\\.]+/", "", $amount);
     // Детали операции
     preg_match('/' . $this->_parser->getDescriptionRegexp() . '/im', $this->_mail, $matches);
     if (isset($matches[0])) {
         unset($matches[0]);
     }
     $description = count($matches) ? implode(" ", $matches) : "";
     // Направление движения средств (тип)
     $type = $this->_parser->getType() ? Operation::TYPE_PROFIT : Operation::TYPE_EXPENSE;
     $operationData = array('email' => $this->_to, 'amount' => (string) $amount, 'description' => trim($description), 'type' => (string) $type, 'account' => (string) $lastFourDigits, 'source' => substr($this->_parser->getEmailSource()->getName(), 0, 4) . $lastFourDigits, 'id' => $forced_operation_id ? $forced_operation_id : uniqid());
     return $operationData;
 }