/** * {@inheritdoc}non-PHPdoc) */ public function query() { $args = func_get_args(); $sql = $this->removeTableAlias($args[0]); $sql = $this->normalizeCount($sql); return parent::query($sql); }
public function checkCity($city) { $backendOptions = $this->configurationManager->getConfiguration('Settings', 'TYPO3.Flow.persistence.backendOptions'); $config = new \Doctrine\DBAL\Configuration(); $this->connection = \Doctrine\DBAL\DriverManager::getConnection($backendOptions, $config); $statement = "SELECT count(*) as number FROM `city` " . "WHERE `city`.`name` like '" . $city . "'"; $result = $this->connection->query($statement)->fetchAll(); return $result[0]; }
/** * Get latest categories * * @param string $folderId The folder id * @return array The query result */ public function getCategoriesByFolder($folderId) { // Connect to DB $backendOptions = $this->configurationManager->getConfiguration('Settings', 'TYPO3.Flow.persistence.backendOptions'); $config = new \Doctrine\DBAL\Configuration(); $this->connection = \Doctrine\DBAL\DriverManager::getConnection($backendOptions, $config); // Run query to get categories $statement = "SELECT a.`persistence_object_identifier`, a.`title`,( " . "SELECT group_concat(concat(`persistence_object_identifier`,',',`title`) separator ';') " . "FROM `lelesys_plugin_news_domain_model_category` WHERE `parentcategory` = a.persistence_object_identifier) as value " . "FROM `lelesys_plugin_news_domain_model_category` as a where a.`parentcategory`is null AND `folder` ='" . $folderId . "' group by `persistence_object_identifier`"; $result = $this->connection->query($statement)->fetchAll(); return $result; }
/** * {@inheritdoc} */ public function connect(array $params, $username = null, $password = null, array $driverOptions = array()) { try { $pdo = new PDOConnection($this->_constructPdoDsn($params), $username, $password, $driverOptions); if (defined('PDO::PGSQL_ATTR_DISABLE_PREPARES') && (!isset($driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES]) || true === $driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES])) { $pdo->setAttribute(PDO::PGSQL_ATTR_DISABLE_PREPARES, true); } /* defining client_encoding via SET NAMES to avoid inconsistent DSN support * - the 'client_encoding' connection param only works with postgres >= 9.1 * - passing client_encoding via the 'options' param breaks pgbouncer support */ if (isset($params['charset'])) { $pdo->query('SET NAMES \'' . $params['charset'] . '\''); } return $pdo; } catch (PDOException $e) { throw DBALException::driverException($this, $e); } }
public function importaPostgreSQL($arquivo) { $tmpdir = sys_get_temp_dir(); $logger = $this->get('logger'); $importacao = $tmpdir . '/importacao'; // Tabelas $lista_tabelas = array("servidor_autenticacao", "local", "rede", "so", "aplicativo", "aplicativo_rede", "aquisicao", "tipo_licenca", "software", "aquisicao_item", "computador", "descricao_coluna_computador", "grupo_usuario", "insucesso_instalacao", "usuario", "local_secundario", "log", "unid_organizacional_nivel1", "unid_organizacional_nivel1a", "unid_organizacional_nivel2", "patrimonio", "patrimonio_config_interface", "rede_grupo_ftp", "rede_versao_modulo", "software_estacao", "srcacic_chat", "srcacic_conexao", "srcacic_sessao", "srcacic_transf", "teste", "tipo_software", "tipo_uorg", "uorg", "usb_vendor", "usb_device", "usb_log"); // Sequências $lista_sequencias = array("aplicativo" => array("id_aplicativo", "aplicativo_id_aplicativo_seq"), "aquisicao" => array("id_aquisicao", "aquisicao_id_aquisicao_seq"), "computador" => array("id_computador", "computador_id_computador_seq"), "grupo_usuario" => array("id_grupo_usuario", "grupo_usuario_id_grupo_usuario_seq"), "insucesso_instalacao" => array("id_insucesso_instalacao", "insucesso_instalacao_id_insucesso_instalacao_seq"), "local" => array("id_local", "local_id_local_seq"), "log" => array("id_log", "log_id_log_seq"), "patrimonio" => array("id_patrimonio", "patrimonio_id_patrimonio_seq"), "rede_grupo_ftp" => array("id_ftp", "rede_grupo_ftp_id_ftp_seq"), "rede" => array("id_rede", "rede_id_rede_seq"), "rede_versao_modulo" => array("id_rede_versao_modulo", "rede_versao_modulo_id_rede_versao_modulo_seq"), "servidor_autenticacao" => array("id_servidor_autenticacao", "servidor_autenticacao_id_servidor_autenticacao_seq"), "so" => array("id_so", "so_id_so_seq"), "software" => array("id_software", "software_id_software_seq"), "srcacic_action" => array("id_srcacic_action", "srcacic_action_id_srcacic_action_seq"), "srcacic_chat" => array("id_srcacic_chat", "srcacic_chat_id_srcacic_chat_seq"), "srcacic_conexao" => array("id_srcacic_conexao", "srcacic_conexao_id_srcacic_conexao_seq"), "srcacic_sessao" => array("id_srcacic_sessao", "srcacic_sessao_id_srcacic_sessao_seq"), "srcacic_transf" => array("id_srcacic_transf", "srcacic_transf_id_srcacic_transf_seq"), "teste" => array("id_transacao", "teste_id_transacao_seq"), "tipo_licenca" => array("id_tipo_licenca", "tipo_licenca_id_tipo_licenca_seq"), "tipo_software" => array("id_tipo_software", "tipo_software_id_tipo_software_seq"), "tipo_uorg" => array("id_tipo_uorg", "tipo_uorg_id_tipo_uorg_seq"), "unid_organizacional_nivel1" => array("id_unid_organizacional_nivel1", "unid_organizacional_nivel1_id_unid_organizacional_nivel1_seq"), "unid_organizacional_nivel1a" => array("id_unid_organizacional_nivel1a", "unid_organizacional_nivel1a_id_unid_organizacional_nivel1a_seq"), "unid_organizacional_nivel2" => array("id_unid_organizacional_nivel2", "unid_organizacional_nivel2_id_unid_organizacional_nivel2_seq"), "uorg" => array("id_uorg", "uorg_id_uorg_seq"), "usb_log" => array("id_usb_log", "usb_log_id_usb_log_seq"), "usuario" => array("id_usuario", "usuario_id_usuario_seq")); // Cria um diretório temporário com todos os dados extraídos $zip = new ZipArchive(); $x = $zip->open($arquivo); $logger->info("Extraindo arquivo de importação no diretorio {$importacao}"); if ($x === TRUE) { $zip->extractTo($importacao); $zip->close(); $logger->info('Arquivo.zip extraído com sucesso'); } else { $logger->error("Erro na extração do arquivo {$x}"); return false; } // Carrega configurações do banco de dados $dbhost = $this->container->getParameter('database_host'); $db = $this->container->getParameter('database_name'); $port = $this->container->getParameter('database_port'); $user = $this->container->getParameter('database_user'); $pass = $this->container->getParameter('database_password'); if ($dbhost) { $dbcon = new PDOConnection("pgsql:host={$dbhost};dbname={$db};port={$port}", $user, $pass); } else { $dbcon = new PDOConnection("pgsql:dbname={$db};port={$port}", $user, $pass); } // Ou funciona tudo ou não funciona nada $dbcon->beginTransaction(); // Primeiro apaga os dados por tabela $excluir = array('configuracao_local'); $excluir = array_reverse(array_merge($lista_tabelas, $excluir)); foreach ($excluir as $tabela) { $logger->info("Apagando a tabela {$tabela}"); try { // Apaga a tabela e carrega os dados do arquivo CSV $dbcon->exec("DELETE FROM {$tabela} CASCADE"); } catch (Exception $e) { // Falha, dá um rollback e retorna falso $logger->error("Erro na exclusão \n" . $e->getMessage()); $dbcon->rollBack(); return false; } } // Agora carrega os dados foreach ($lista_tabelas as $tabela) { if (file_exists("{$importacao}/{$tabela}.csv")) { $logger->info("Importando a tabela {$tabela}"); try { // Apaga a tabela e carrega os dados do arquivo CSV $dbcon->exec("COPY {$tabela} FROM '{$tmpdir}/importacao/{$tabela}.csv' DELIMITER ';' NULL E'\\\\N' CSV ESCAPE '\"'"); } catch (Exception $e) { // Falha, dá um rollback e retorna falso $logger->error("Erro na importação \n" . $e->getMessage()); $dbcon->rollBack(); return false; } } } // Se tudo funcionou bem, é prciso ajustar o valor das sequências foreach ($lista_sequencias as $tabela => $value) { // Atualiza as sequencias de auto-increment $logger->info("Carregando a sequência para a tabela {$tabela} ...."); foreach ($dbcon->query("SELECT MAX({$value[0]}) AS {$value['0']} FROM {$tabela}") as $row) { $result = $row["{$value[0]}"]; } if ($result) { $logger->info("Ajustando a sequência {$value[1]} para o valor máximo {$result} ..."); $dbcon->exec("SELECT setval('{$value[1]}', {$result})"); } else { $logger->error("Valor máximo não encontrado para a tabela {$tabela}, ID {$value[0]} e sequência {$value[1]}"); } } // Finaliza a transação $dbcon->commit(); // Armazena as senhas para todos os usuários criados $arrUsuarios = $this->getDoctrine()->getRepository('CacicCommonBundle:Usuario')->findAll(); foreach ($arrUsuarios as $usuario) { $logger->info("Corrige a senha do usuario {$usuario->getNmUsuarioCompleto()} ....."); $encoder = $this->container->get('security.encoder_factory')->getEncoder($usuario); // Guarda a senha criptografada $usuario->setTeSenha($encoder->encodePassword($usuario->getTeSenha(), $usuario->getSalt())); $this->getDoctrine()->getManager()->persist($usuario); $this->getDoctrine()->getManager()->flush(); } // Finaliza a importação e apaga os arquivos $fs = new Filesystem(); $fs->remove($importacao); return true; }
/** * @expectedException \Doctrine\DBAL\Driver\PDOException */ public function testThrowsWrappedExceptionOnQuery() { $this->driverConnection->query('foo'); }