Prezados,
há um bug no sistema que, embora não seja crítico, o impede de ser instalado e utilizado com o PostgreSQL rodando em porta distinta da padrão (5432).
O problema: a porta é mantida como parâmetro no sistema, mas não chega a ser usada na montagem da string de DSN da conexão.
Solução:
1. Alterar as linhas de montagem da string de DSN, incluindo o valor parametrizado da porta.
2. Alterar a assinatura do método connect(...) da classe DB e de sua subclasse PgSQLDB, bem como sua chamada, incluindo um parâmetro para passar o valor da porta.
Fiz estas alterações no código e testei; o problema foi corrigido. Abaixo, coloco a saída do comando diff entre a versão oficial do código (sgalivre-web) e minha versão alterada (modificado), submetendo-a à análise de vocês.
diff -r sgalivre-web/install/test_db.php modificado/install/test_db.php
50c50
< $dbh = new PDO($db['db_type'].':host='.$db['db_host'].';port='.$db['db_port'].';dbname=postgres', $db['db_user'], $db['db_pass']);
---
> $dbh = new PDO($db['db_type'].':host='.$db['db_host'].';dbname=postgres', $db['db_user'], $db['db_pass']);
diff -r sgalivre-web/lib/php/core/db/DB.php modificado/lib/php/core/db/DB.php
55c55
< public abstract function connect($host, $port, $usuario, $senha, $banco);
---
> public abstract function connect($host, $usuario, $senha, $banco);
diff -r sgalivre-web/lib/php/core/db/PgSQLDB.php modificado/lib/php/core/db/PgSQLDB.php
42c42
< $this->connect(Config::DB_HOST, Config::DB_PORT, Config::DB_USER, Config::DB_PASS, Config::DB_NAME);
---
> $this->connect(Config::DB_HOST, Config::DB_USER, Config::DB_PASS, Config::DB_NAME);
51c51
< public function connect($host, $port, $usuario, $senha, $banco) {
---
> public function connect($host, $usuario, $senha, $banco) {
53c53
< $pdo = new PDO('pgsql:host='.$host.';port='.$port.';dbname='.$banco, $usuario, $senha);
---
> $pdo = new PDO('pgsql:host='.$host.';dbname='.$banco, $usuario, $senha);
diff -r sgalivre-web/lib/php/template/Template.php modificado/lib/php/template/Template.php
301c301
< <form method="post" action="?set_uni" >
---
> <form method="POST" action="?set_uni" >
Notem: a última mudança, na verdade, não tem relação com o problema citado. A fiz apenas por que minha IDE reclamava do valor em caixa alta da propriedade method da tag form. [:)]
Abraço.
Autor: Jonas de Araújo Luz Jr.