/**
  * {@inheritdoc}non-PHPdoc)
  */
 public function query()
 {
     $args = func_get_args();
     $sql = $this->removeTableAlias($args[0]);
     $sql = $this->normalizeCount($sql);
     return parent::query($sql);
 }
예제 #2
0
 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;
 }
예제 #4
0
파일: Driver.php 프로젝트: vectornet/dbal
 /**
  * {@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);
     }
 }
예제 #5
0
 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;
 }
예제 #6
0
 /**
  * @expectedException \Doctrine\DBAL\Driver\PDOException
  */
 public function testThrowsWrappedExceptionOnQuery()
 {
     $this->driverConnection->query('foo');
 }