Exemple #1
0
 /**
  * Пишет отзыв от одного участника к другому. При необходимости в этой же транзакции пишет отзыв сервису.
  *
  * @param array $request   данные по отзыву участнику.
  * @param array $sbr_request   данные по отзыву сервису СБР.
  * @return array   отзыв (пропущенный через базу) или false, если ошибка.
  */
 function feedback($request, $sbr_request = NULL)
 {
     if ($request['id'] && $request['id'] != $this->data[$this->sbr->upfx . 'feedback_id']) {
         return false;
     }
     $inxact = !!sbr_meta::$XACT_ID;
     if ($inxact || $this->_openXact(TRUE)) {
         if ($_POST['sbr_sms_code'] != $_SESSION['close_sbr_smscode']) {
             $this->error['feedback']['sms'] = 1;
         } else {
             $ok = true;
             if ($sbr_request) {
                 $ok = $this->sbr->feedback($sbr_request);
             }
             if (!$ok) {
                 $this->error['sbr_feedback'] = true;
             }
             if (($feedback = parent::addFeedback($request, $this->feedback, $err)) && $ok) {
                 $sql = "UPDATE sbr_stages SET {$this->sbr->upfx}feedback_id = ?i WHERE id = ?i";
                 $sql = $this->db()->parse($sql, $feedback['id'], $this->id);
                 if (pg_query(self::connect(false), $sql)) {
                     if (!$inxact) {
                         $this->_commitXact();
                     }
                     return $feedback;
                 }
             }
             $this->error['feedback'] = $err;
         }
         $this->_abortXact();
     }
     return false;
 }