/** * Добавить документ * * @param array $doc массив данных с необходимыми полями. * @param boolean $system Проверяем документ создан автоматически или нет (true-автоматически, false - нет) * @return boolean успешно? */ function addDoc($doc, $system) { $doc['file_id'] = intval($doc['file_id']); if (!$doc['file_id']) { $this->error['docs']['attach'] = 'Необходимо загрузить файл'; return false; } $inxact = !!sbr_meta::$XACT_ID; if ($inxact || $this->_openXact(TRUE)) { $sql_data = $doc; $sql_data['name'] = pg_escape_string(change_q_x($sql_data['name'])); $sql_data['stage_id'] = $sql_data['stage_id'] ? (int) $sql_data['stage_id'] : 'NULL'; if (!isset($sql_data['owner_role'])) { $sql_data['owner_role'] = sbr::DOCS_ACCESS_EMP * $this->isEmp() | sbr::DOCS_ACCESS_FRL * $this->isFrl(); } $sql_data['num'] = $sql_data['num'] ? (int) $sql_data['num'] : 'NULL'; $sql = "\n INSERT INTO sbr_docs (sbr_id, stage_id, file_id, name, status, access_role, " . self::$docs_ss[$sql_data['status']][1] . ", type, owner_role, num)\n VALUES ({$this->id}, {$sql_data['stage_id']}, {$sql_data['file_id']}, '{$sql_data['name']}', {$sql_data['status']}, {$sql_data['access_role']}, now(),\n {$sql_data['type']}, {$sql_data['owner_role']}, {$sql_data['num']})\n RETURNING id\n "; if ($res = pg_query(self::connect(false), $sql)) { if (!$inxact) { $this->_commitXact(); } if ($sql_data['type'] == 1 || $sql_data['type'] == 8) { // Акты, Отчеты по арбитражу switch ($sql_data['access_role']) { case 1: // фрилансеру if (!sbr_meta::$save_reqv_frl) { $this->setUserReqvHistory($this->data['frl_id'], $sql_data['stage_id'], 1); sbr_meta::$save_reqv_frl = true; } break; case 2: // работодателю if (!sbr_meta::$save_reqv_emp) { $this->setUserReqvHistory($this->data['emp_id'], $sql_data['stage_id'], 1); sbr_meta::$save_reqv_emp = true; } break; case 3: // Всем if (!sbr_meta::$save_reqv_frl) { $this->setUserReqvHistory($this->data['frl_id'], $sql_data['stage_id'], 1); sbr_meta::$save_reqv_frl = true; } if (!sbr_meta::$save_reqv_emp) { $this->setUserReqvHistory($this->data['emp_id'], $sql_data['stage_id'], 1); sbr_meta::$save_reqv_emp = true; } break; } } return pg_fetch_result($res, 0, 0); } $this->_abortXact(); } return false; }