Exemple #1
0
 /**
  * Принимает заявку в Арбитраж.
  *
  * @param string $descr   причина обращения.
  * @param array $files   массив файлов ($_FILES).
  * @return boolean   успешно?
  */
 function arbitrage($descr, $files)
 {
     // проверим не послал ли паралельно ктото в арбитраж
     $this->getArbitrage();
     if ($this->arbitrage['id'] != null) {
         $this->error['arbitrage']['descr'] = 'Сделка уже находится в арбитраже';
         return false;
     }
     if (!($descr = pg_escape_string(change_q_x($descr, true, false)))) {
         $this->error['arbitrage']['descr'] = 'Поле не должно быть пустым';
         return false;
     }
     $fcnt = sbr::MAX_FILES;
     if ($files) {
         foreach ($files as $file) {
             $cfile = new CFile($file['id']);
             $cfile->table = 'file_sbr';
             $cfile->_remoteCopy($this->sbr->getUploadDir() . $cfile->name);
             $this->uploaded_files[] = $cfile;
         }
         /*$this->sbr->getUploadDir(); // !!! если админ редактирует, то нужно в папку автора коммента загружать.
           foreach($files['name'] as $idx=>$aname) {
               foreach($files as $prop=>$a)
                   $att[$idx][$prop] = $a[$idx];
               if(--$fcnt < 0) break;
               $file = new CFile($att[$idx]);
               // проверка файла
               if($file->size > self::ARB_FILE_MAX_SIZE) {
                   $this->error['arbitrage']['err_attach'] = "Максимальный объем файлов: ".ConvertBtoMB(self::ARB_FILE_MAX_SIZE);
                   return false;
               }
               if( in_array($file->getext(), $GLOBALS['disallowed_array'])) {
                   $this->error['arbitrage']['err_attach'] = "Недопустимый формат файла";
                   return false;
               }
               if($err = $this->sbr->uploadFile($file, self::ARB_FILE_MAX_SIZE)) {
                   if($err == -1) continue;
                   else {
                       $this->error['arbitrage']['err_attach'] = $err;
                       break;
                   }
               }
               $this->uploaded_files[] = $file;
           }*/
     }
     if ($this->error) {
         return false;
     }
     if (!$this->_openXact(TRUE)) {
         return false;
     }
     $sql = "INSERT INTO sbr_stages_arbitrage (stage_id, user_id, descr) VALUES ({$this->id}, {$this->sbr->uid}, '{$descr}') RETURNING id";
     if (!($res = pg_query(self::connect(false), $sql)) || !pg_num_rows($res)) {
         $this->_abortXact();
         return false;
     }
     $id = pg_fetch_result($res, 0, 0);
     $sql_attach = '';
     if ($this->uploaded_files) {
         foreach ($this->uploaded_files as $file) {
             if (!$file->id) {
                 continue;
             }
             $file->orig_name = pg_escape_string($file->original_name);
             $file->orig_name = $file->shortenName($file->orig_name, 128);
             if (!$file->orig_name) {
                 continue;
             }
             $sql_attach .= "INSERT INTO sbr_stages_arbitrage_attach(arbitrage_id, file_id, orig_name) VALUES({$id}, {$file->id}, '{$file->orig_name}');";
         }
     }
     if ($sql_attach && !pg_query(self::connect(false), $sql_attach)) {
         $this->_abortXact();
         return false;
     }
     $this->_commitXact();
     return true;
 }