Beispiel #1
0
 /**
  * FUNCAO QUE EXECUTA UM COMANDO QUALQUER NO BANCO DE DADOS
  * ESTA FUNCAO MASCARA O USO DO ZEND_DB NO SISTEMA
  * @param  string  $sqlQuery
  * @param  boolean $activationPaginator
  * @param  integer $pageNumber
  * @param  integer $limitPerPage
  * @return boolean
  * @throws \Exception
  */
 public function executeSqlQuery($sqlQuery, $activationPaginator = false, $pageNumber = 1, $limitPerPage = 10)
 {
     $sql = new Sql($this->getAdapter($this->varConfigAdapter));
     /*
      * RETIRA CARACTERES INVALIDOS DA QUERY
      */
     $varSqlQuery = trim(str_replace(array("\n", "\r", "\t", "     ", "    ", "   ", "  "), array(" ", " ", " ", " ", " ", " ", " "), $sqlQuery));
     /*
      * VERIFICA SE O TIPO DE COMANDO E UM SELECT
      */
     $typeSelect = (bool) (substr(strtoupper($varSqlQuery), 0, 6) == "SELECT") ? true : false;
     /*
      * VERIFICA SE O COMANDO FOI DEFINIDO
      */
     if (!empty($varSqlQuery)) {
         try {
             $query = $this->getAdapter($this->varConfigAdapter)->query($varSqlQuery);
             /*
              * CASO O DEBUG ESTEJA ATIVO IMPRIME A QUERY (COMANDO) NA TELA
              */
             if (self::$varDebug) {
                 $this->debugQuery($varSqlQuery);
             } elseif (self::$varExplan) {
                 $this->explainQuery($varSqlQuery);
             }
             /*
              * CASO O COMANDO EXECUTADO SEJA DO TIPO SELECT RETORNA UM ARRAY COM O RESULTADO DA CONSULTA
              */
             if ($typeSelect === true) {
                 /**
                  * VERIFICA SE HÁ CACHE GRAVADO E NAO EXPIRADO
                  */
                 $rowSet = $query->execute();
                 if ($activationPaginator) {
                     $retorno = array();
                     $adapter = new \Zend\Paginator\Adapter\Iterator($rowSet, $sql);
                     $paginator = new \Zend\Paginator\Paginator($adapter);
                     $paginator->setItemCountPerPage($limitPerPage);
                     $paginator->setPageRange(5);
                     $paginator->setCurrentPageNumber($pageNumber);
                     $retorno['db'] = \Cityware\Format\Arrays::getObjectToArray($paginator->getCurrentItems());
                     $retorno['page'] = $paginator;
                 } else {
                     $retorno = self::$resultSetPrototype->initialize($rowSet)->toArray();
                 }
                 if (!is_array($retorno) || count($retorno) <= 0) {
                     $retorno = false;
                 }
             } else {
                 $query->execute();
                 $retorno = true;
             }
         } catch (\Zend\Db\Exception $exc) {
             $this->closeConnection();
             $retorno = false;
             throw new \Exception('Nao foi possivel executar o comando SQL no banco de dados!<br /><br />' . $exc->getMessage(), 500);
         }
     } else {
         $this->closeConnection();
         $retorno = false;
         throw new \Exception('O comando SQL nao foi definido corretamente!');
     }
     $this->closeConnection();
     self::freeMemory();
     return $retorno;
 }