source: companies/serpro/workflow/inc/local/classes/class.wf_db.php @ 903

Revision 903, 5.8 KB checked in by niltonneto, 15 years ago (diff)

Importacao inicial do Expresso do Serpro

Line 
1<?php
2
3        /**
4        * Connection to workflow database
5        * @license http://www.gnu.org/copyleft/gpl.html GPL
6        * @package Workflow
7        * @subpackage local
8        **/
9        class wf_db extends db
10        {
11        /**
12         * Construtor da classe wf_db Inicializa os dados da classe
13         * @access public
14         * @return object
15         */
16                function wf_db()
17                {
18                        parent::db();
19
20                        $dbconf = array(
21                                                'database_name' => '',
22                                                'database_host' => '',
23                                                'database_port' => '',
24                                                'database_user' => '',
25                                                'database_password' => '',
26                                                'database_type' => '',
27                                                'execute_activities_in_debug_mode' => 0
28                        );
29
30                        $conf_db_values = $GLOBALS['workflow']['wf_runtime']->getConfigValues($dbconf);
31
32                        $this->Database = $conf_db_values['database_name'];
33                        $this->Host     = $conf_db_values['database_host'];
34                        $this->Port             = $conf_db_values['database_port'];
35                        $this->User             = $conf_db_values['database_user'];
36                        $this->Password = $conf_db_values['database_password'];
37                        $this->Type             = $conf_db_values['database_type'];
38
39                        if ($conf_db_values['execute_activities_in_debug_mode'])
40                        {
41                                $this->Halt_On_Error = 'yes';
42                        }
43                        else
44                        {
45                                $this->Halt_On_Error = 'no';
46                        }
47
48                        /* Global to control workflow database */
49                        $GLOBALS['workflow_db'][count($GLOBALS['workflow_db'])+1] =& $this;
50                }
51        /**
52         * Conecta com o banco de dados
53         * @param string $Database Nome do banco de dados
54         * @param string $Host Nome do Servidor
55         * @param int $Port Porta do Servidor
56         * @param string $User Nome do usuário
57         * @param string $Password Senha do usuário
58         * @param string $Type Tipo do Banco de dados
59         * @return object
60         * @access public
61         */
62                function connect($Database = NULL, $Host = NULL, $Port = NULL, $User = NULL, $Password = NULL,$Type = NULL)
63                {
64                        /* Handle defaults */
65                        if (!is_null($Database) && $Database)
66                        {
67                                $this->Database = $Database;
68                        }
69                        if (!is_null($Host) && $Host)
70                        {
71                                $this->Host     = $Host;
72                        }
73                        if (!is_null($Port) && $Port)
74                        {
75                                $this->Port     = $Port;
76                        }
77                        if (!is_null($User) && $User)
78                        {
79                                $this->User     = $User;
80                        }
81                        if (!is_null($Password) && $Password)
82                        {
83                                $this->Password = $Password;
84                        }
85                        if (!is_null($Type) && $Type)
86                        {
87                                $this->Type = $Type;
88                        }
89                        elseif (!$this->Type)
90                        {
91                                $this->Type = $GLOBALS['phpgw_info']['server']['db_type'];
92                        }
93
94                        if (strcasecmp($this->Database,$GLOBALS['phpgw_info']['server']['db_name']) == 0)
95                        {
96                                return null;
97                        }
98
99                        parent::connect();
100                }
101
102                /**
103                 * Desconecta do banco de dados
104                 * @return void
105                 * @access public
106                 */
107                function disconnect()
108                {
109                        $this->Link_ID->Close();
110                        unset($this->Link_ID);
111                        $this->Link_ID = 0;
112                }
113
114                /**
115                 * Utilizado para substituir "\\" e "'" nos campos passados como parametro.
116                 * @param mixed (string ou array)
117                 * @return mixed (string ou array)
118                 * @access public
119                 */
120                function quote($fields){
121                    if (is_array($fields)) {
122                        foreach($fields as $key => $value) {
123                                        $fields[$key] = str_replace("\\", "\\\\\\\\", str_replace("'", "''", $value));
124                        }
125                    } elseif (is_string($fields)){
126                                $fields = str_replace("\\", "\\\\\\\\", str_replace("'", "''", $fields));
127                    }
128                    return $fields;
129                }
130
131                /**
132                 * Utilizado para escapar alguns caracteres de valores do tipo bytea (blob).
133                 * @param string $byteaValue Variável com conteúdo binário
134                 * @return string Valor com os caracteres já escapados
135                 * @access public
136                 */
137                function escapeBytea($byteaValue)
138                {
139                        return str_replace(array(chr(92), chr(0), chr(39)), array('\134', '\000', '\047'), $byteaValue);
140                }
141
142                /**
143                 * Utilizado para executar queries com possibilidade de fazer bind dos valores.
144                 * @param string $sqlStatement Comando SQL
145                 * @param array $inputArray Array, sequencial, com os valores que serão associados à query
146                 * @return mixed ResultSet em caso de sucesso ou false/null caso contrário
147                 * @access public
148                 */
149                function query($sqlStatement, $inputArray = false)
150                {
151                        if (!is_array($inputArray))
152                                return parent::query($sqlStatement);
153
154                        if (!$this->Link_ID && !$this->connect())
155                                return false;
156                        return $this->Link_ID->query($sqlStatement, $inputArray);
157                }
158
159                /**
160                 * Utilizado para executar queries retornando apenas algumas tuplas
161                 * @param string $sqlStatement Comando SQL
162                 * @param int $offset Indica a primeira tupla que será retornada da consulta
163                 * @param int $line A linha do arquivo de código que está executando esta chamada. Normalmente, utiliza-se a variável mágica __LINE__
164                 * @param string $file O arquivo de código que está fazendo a chamada. Normalmente, utiliza-se a variável mágica __FILE__
165                 * @param int $numRows O número de tuplas que serão retornadas
166                 * @return mixed ResultSet em caso de sucesso ou false/null caso contrário
167                 * @access public
168                 */
169                function limit_query($sqlStatement, $offset, $line = '', $file = '', $numRows = '')
170                {
171                        return parent::query($sqlStatement, $line, $file, $offset, $numRows);
172                }
173
174                /**
175                 * Inicia uma transação
176                 * @return void
177                 * @access public
178                 */
179                function startTrans()
180                {
181                        $this->Link_ID->StartTrans();
182                }
183
184                /**
185                 * Finaliza uma transação. Quando $autoComplete é igual a true (valor padrão), é feito um commit se não forem encontrados erros SQL durante a transação e rollback caso ocorra erro.
186                 * @param bool $autoComplete Se true (padrão), executa commit quando nenhum erro é encontrado e rollback caso contrário. Se seu valor for false, mesmo que não ocorram erros, o rollback é executado.
187                 * @return bool True em caso de commit ou false em caso de rollback
188                 * @access public
189                 */
190                function completeTrans($autoComplete = true)
191                {
192                        return $this->Link_ID->CompleteTrans($autoComplete);
193                }
194
195                /**
196                 * Indica a ocorrência de uma falha na transação (necessariamente, não executa o rollback)
197                 * @return void
198                 * @access public
199                 */
200                function failTrans()
201                {
202                        $this->Link_ID->FailTrans();
203                }
204        }
205?>
Note: See TracBrowser for help on using the repository browser.