source: branches/1.2/workflow/inc/local/classes/class.wf_db.php @ 1349

Revision 1349, 5.5 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

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