Exemplo n.º 1
0
 /**
  * Добавить документ
  * 
  * @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;
 }