/** * Принимает заявку в Арбитраж. * * @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; }